Přeskočit na hlavní obsah

Import faktury ve formátu ISDOC přes REST API

Jak naimportovat ISDOC pomocí API Flexi

Autor: Petr Pech

ISDOC neboli Information System Document je formát elektronické fakturace v ČR. ABRA Flexi podporuje import i export faktur v tomto formátu. Přes REST API lze importovat přijaté faktury a s použitím pokročilého parametru i vydané faktury.


Způsob volání

Import se volá metodou PUT nebo POST na evidenci přijatých faktur; tělem požadavku je samotný soubor:

PUT https://demo.flexibee.eu/c/demo/faktura-prijata.isdoc?typDokl=code:ZBOZI-FAKTURA
Content-Type: application/x-isdoc

<obsah souboru .isdoc>

Formát vstupu můžete určit dvěma způsoby, které lze i kombinovat:

Vstupní soubor

Přípona v URL

Hlavička Content-Type

ISDOC

.isdoc

application/x-isdoc

PDF s vloženou fakturou ISDOC

.pdf

application/pdf

Stačí uvést jedno z obou — PUT /c/{firma}/faktura-prijata bez přípony funguje, pokud pošlete správnou hlavičku Content-Type.

⚠️ U PDF musí být elektronická faktura vložená v souboru jako příloha invoice.isdoc — takový soubor vzniká například exportem z ABRA Flexi. Obyčejné PDF bez vložených dat import odmítne chybou isDocImportNepodariloSeNajitInvoiceIsdoc.

Import vydané faktury

Je-li ve firmě aktivovaný pokročilý parametr paramImportIsdocFav s hodnotou true, lze stejným způsobem importovat i vydané faktury:

PUT https://demo.flexibee.eu/c/demo/faktura-vydana.isdoc?typDokl=code:FAKTURA
Content-Type: application/x-isdoc

Jak parametr zapnout, popisuje návod k tomuto doplňku.


URL parametry

Parametr

Povinný

Význam

typDokl

ano

Typ dokladu, pod kterým bude faktura importována. Uvádí se jako identifikátor.

typUcOp

ne

Předpis zaúčtování, opět jako identifikátor.

odpocetZaloh

ne

Automatický odpočet záloh a ZDD. Výchozí hodnota je true.

ucetniObdobi

ne

Účetní období, do kterého se doklad naimportuje — zkratka období, například ucetniObdobi=2025.

fileName

ne

Název souboru přiloženého k faktuře. API ukládá soubor, ze kterého faktura vznikla, jako přílohu. Bez tohoto parametru se příloha jmenuje import_{kod-faktury}.isdoc, resp. import_{kod-faktury}.pdf.

Neznámé parametry API tiše ignoruje, takže překlep v názvu nepovinného parametru se neprojeví chybou — pouze se nepoužije.

Příklady použití

Import vydané faktury do minulého účetního období:

PUT https://demo.flexibee.eu/c/demo/faktura-vydana.isdoc?typDokl=code:FAKTURA&ucetniObdobi=2025
Content-Type: application/x-isdoc

Import přijaté faktury bez automatického odpočtu záloh a s vlastním názvem přílohy:

PUT https://demo.flexibee.eu/c/demo/faktura-prijata.isdoc?typDokl=code:FAKTURA&odpocetZaloh=false&fileName=faktura_dodavatele.isdoc
Content-Type: application/x-isdoc

Úspěšný import vrací 201 a v results ID i číslo vzniklého dokladu:

{
"winstrom": {
"@version": "1.0",
"success": "true",
"stats": {
"created": "1",
"updated": "0",
"deleted": "0",
"skipped": "0",
"failed": "0"
},
"results": [
{
"id": "2853",
"code": "PF0006/2026",
"ref": "/c/demo/faktura-prijata/2853"
}
]
}
}

ℹ️ Naimportujete-li doklad do jiného než aktuálního účetního období, odpověď obvykle obsahuje varování dokladDuzpMimoAktualniUcetniObdobi. Doklad přitom vznikne. Legislativní pravidla ale mohou import do starších období odmítnout úplně — například když datum uskutečnění zdanitelného plnění přesahuje zákonnou lhůtu.


Odpočet záloh a zálohových daňových dokladů

Pokud ISDOC faktura obsahuje odpočty záloh nebo ZDD, je možné je při importu automaticky odečíst.

S parametrem odpocetZaloh=false bude faktura vytvořena bez odpočtů. Odpověď je i tak 201 Created, obsahuje ale varování o přítomnosti záloh:

<?xml version="1.0" encoding="utf-8"?>
<winstrom version="1.0">
<success>true</success>
<stats>
<created>1</created>
<updated>0</updated>
<deleted>0</deleted>
<skipped>0</skipped>
<failed>0</failed>
</stats>
<results>
<result>
<id>109</id>
<code>PF0017/2022</code>
<warnings>
<warning>Doklad (PF023/2050) obsahuje odpočty záloh nebo zálohových daňových dokladů, doklad byl vytvořen bez odpočtů.

Zálohy:
Číslo dokladu | Variabilní symbol | Částka
----------------------------------------
ZALOHA_2 | 12345 | 100,00 Kč

Zálohové daňové doklady:
Číslo dokladu | Variabilní symbol | Částka
-------------------------------------
ZDD_1 | 98765432 | 200,00 Kč</warning>
</warnings>
</result>
</results>
</winstrom>

Automatický odpočet

S odpocetZaloh=true nebo bez uvedení parametru se systém pokusí k uvedeným odpočtům najít zálohové doklady a odečíst je. Pokud se to nezdaří, volání skončí chybou 400 a v odpovědi je výčet odpočtů a zálohových dokladů, které se podařilo najít.

Aby mohl být doklad odpočtený, musí splňovat tyto požadavky:

  • Musí souhlasit firma dokladu, měna a částka — stejná nebo větší. Firma musí být předem uložená v adresáři.

  • Číslo dokladu odpočtu musí být stejné jako číslo došlé nebo interní číslo dokladu zálohy, nebo musí souhlasit variabilní symbol odpočtu a zálohy.

  • Pokud existuje více shod, odpočet nebude proveden.

Příklad odpovědi neúspěšného automatického odpočtu se stavem 400 Bad Request:

<?xml version="1.0" encoding="utf-8"?>
<winstrom version="1.0">
<success>false</success>
<stats>
<created>0</created>
<updated>0</updated>
<deleted>0</deleted>
<skipped>0</skipped>
<failed>1</failed>
</stats>
<results>
<result>
<errors>
<error>Doklad (PF023/2050) obsahuje odpočty záloh nebo zálohových daňových dokladů, které se nepodařilo automaticky odečíst.

Zálohy:
Číslo dokladu | Variabilní symbol | Částka | Nalezený doklad
----------------------------------------------------------
ZALOHA_1 | 123456 | 250,00 Kč | nenalezeno
ZALOHA_2 | 999999 | 100,00 Kč | nenalezeno
ZALOHA_2 | 999999 | 300,00 Kč | Z0001/2022

Zálohové daňové doklady:
Číslo dokladu | Variabilní symbol | Částka | Nalezený doklad
-------------------------------------------------------
ZDD_1 | 852585 | 200,00 Kč | PF0001/2022
ZDD_2 | 852586 | 200,00 Kč | PF0002/2022
ZDD_3 | 852587 | 200,00 Kč | nenalezeno
ZDD_4 | 852588 | 200,00 Kč | nenalezeno</error>
</errors>
</result>
</results>
</winstrom>

Selže-li automatické odpočtení záloh, buď připravte doklady tak, aby odpočet proběhl, nebo použijte odpocetZaloh=false a odpočet dokončete samostatným voláním.


Výchozí sklad pro skladové položky

Obsahuje-li importovaný ISDOC skladové položky, vytvoří ABRA Flexi k faktuře skladový doklad. Sklad, na který se zásoba naskladní, určuje pokročilý parametr paramImportIsdocVychoziSklad, jehož hodnotou je kód skladu.

⚠️ Pokud evidujete více než jeden sklad, je nastavení tohoto parametru nutné. Na rozdíl od průvodce importem v desktopové aplikaci nelze při volání přes API cílový sklad vybrat interaktivně.

Parametr se do firmy nahrává importem XML stejně jako ostatní pokročilé parametry:

<winstrom version="1.0">
<parametr>
<!-- kód parametru -->
<paramK>paramImportIsdocVychoziSklad</paramK>
<!-- kód skladu, hodnota parametru -->
<hodnota>SKLAD</hodnota>
</parametr>
</winstrom>


Chybové stavy

Kód chyby

Příčina

Chybí nebo je neplatný parametr typDokl — hlášení zní Neplatna nebo chybejici hodnota povinneho parametru typDokl.

isDocImportNepodariloSeNajitInvoiceIsdoc

V poslaném PDF se nenašla vložená faktura invoice.isdoc.

dokladDuzpUctoPoDuzpPuvError2025

Datum uskutečnění zdanitelného plnění přesahuje zákonnou lhůtu — typicky při importu do výrazně staršího účetního období.

Všechny uvedené případy vracejí 400 a doklad nevznikne.


FAQ


Související

Dostali jste odpověď na svou otázku?