SaldoDokumentace Otevřít Saldo

Soubory, importy a opakování

Jak do Salda posílat soubory, kolik a jak velké smějí být, a které operace lze bezpečně zopakovat. Obecný klíč proti zdvojení požadavků API nemá, chování se liší podle operace.

Ověřeno 28. září 2026 proti kódu API.

Nahrávání souborů

Soubory se posílají jako multipart/form-data. Název pole uvádí reference u operace, obvykle file pro jeden soubor a files[] pro více souborů (import výpisu přijme vedle file ještě originál v statement_pdf). Ostatní pole stejného požadavku jsou textová pole formuláře.

Příloha k dokladu
curl -X POST -H "X-API-Key: $SALDO_API_KEY" \
  -F "file=@faktura-coworking.pdf" \
  https://techtools.cz/ucetnictvi-api/entities/1/documents/42/attachments
Totéž z Node.js 18+
import { readFile } from 'node:fs/promises';
const form = new FormData();
form.append('file', new Blob([await readFile('faktura-coworking.pdf')], { type: 'application/pdf' }), 'faktura-coworking.pdf');
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/42/attachments', {
  method: 'POST',
  headers: { 'X-API-Key': process.env.SALDO_API_KEY },
  body: form
});

Limity souborů

Co lze nahrát a jak velké
OperaceFormátyLimit
Příloha dokladuPDF, JPG, PNG, WebP, GIF, HEIC, XML, ZIP, TXT15 MB na soubor, 20 příloh na doklad
Import faktur ISDOCISDOC, ISDOCX, ZIP s ISDOC, PDF s vloženým ISDOC15 MB na soubor; zpracuje prvních 50 souborů, další bez upozornění vynechá; po rozbalení ZIP nejvýš 200 faktur celkem
Import výpisuGPC (ABO), camt.053, MT940, CSV; PDF výpis bankydatový soubor 5 MB, PDF 15 MB a 400 stran
Import z jiného programuCSV; POHODA XML (kontakty a doklady); Money S3 XML (kontakty)20 MB, z CSV nejvýš 10 000 řádků
Odpověď na žádost o podkladPDF, JPG, PNG, WebP, HEIC, GIF, XML5 souborů, 15 MB na soubor, 20 MB na odpověď
Doklad o doručení podáníPDF, XML, ZFO15 MB, nejvýš 10 nevyřazených souborů na podání
Přečtení ISDOC bez přihlášeníISDOC, ISDOCX, PDF s ISDOC10 MB

Server přijme celý požadavek nejvýš do 21 MB, i když by součet limitů operace dovolil víc; větší odmítne kódem 413. Soubor nad limit operace vrátí podle operace 413 nebo 422, reference to uvádí v tabulce Chyby této operace.

Náhled a dávky

  • Import výpisu s preview=1 vrátí období, zůstatky, kontroly a počet nových pohybů a nic neuloží.
  • Náhled importu z jiného programu přečte soubor, rozpozná sloupce a u každého řádku ukáže, zda vznikne, je duplicitní, přeskočí se, nebo má chybu. Nic neuloží.
  • Import po dávkách zpracuje jednu dávku řádků (offset, limit) pod kódem batch ve tvaru IMP-XXXXXX a vrátí next_offset, dokud není null. Dávka má nejvýš 500 řádků u kontaktů, 200 u neuhrazených faktur a 100 u dokladů a peněz; předvaha se zpracuje najednou (nejvýš 10 000 řádků).
  • Vrácení importu smaže, co import vytvořil (kontakty, na které už odkazuje jiný doklad, ponechá), a obnoví počáteční stavy, které přepsal. Odmítne to v uzamčeném období, nebo když na importovaných datech něco navazuje (pozdější úhrada, navazující doklad, odečtená záloha, vzor opakované faktury).

Stahování souborů

Soubory se vracejí s hlavičkou Content-Disposition a názvem souboru. Odpovědi, které nejsou JSON, zpracujte jako binární data (response.blob() nebo response.arrayBuffer()).

Soubory, které API vrací
OperaceFormát
Balíček pro účetníZIP se sestavami, originály, manifest.json a SHA256SUMS
Export dokladůPOHODA XML (Windows-1250) nebo Money S3 XML
Platební příkazABO pro Kč nebo SEPA pain.001 pro EUR
XML podáníXML přiznání a hlášení pro EPO, přehledy OSVČ pro ČSSZ a pojišťovnu
Hlášení JMHZXML pro ČSSZ
ISDOC dokladuISDOC
Daňový kalendářJSON nebo iCalendar s format=ics
Originály (přílohy, výpisy, doklady o doručení)soubor tak, jak byl nahrán

Když požadavek pošlete znovu

API nemá obecnou hlavičku proti zdvojení. Po výpadku spojení proto nejdřív ověřte, zda se zápis provedl (například načtěte seznam), a až potom ho opakujte. Chování jednotlivých operací:

Opakování vybraných operací
OperaceCo udělá opakované volání
Založení dokladuZaloží další doklad. Se stejným capture_key (UUID, jedinečný ve firmě) vrátí dříve uložený doklad se stavem 200 a tělo ignoruje.
Založení s issue: trueNení atomické: když vystavení selže, koncept už zůstane uložený. Bez capture_key založí opakování další koncept.
VystaveníDruhé volání vrátí 422 „Doklad už je vystavený“.
Úhrada dokladuZaznamená další úhradu.
Příloha dokladuPřidá další přílohu, i se stejným obsahem.
Import faktur ISDOCUž nahranou fakturu nezaloží znovu, vrátí duplicate s ID existujícího dokladu.
Import výpisuPohyby, které účet už má, přeskočí. Stejný datový soubor za stejné období nezaloží druhý archiv.
Import po dávkáchUž založené kontakty a doklady vrátí jako duplicate. Předvaha při opakování znovu nahradí všechny počáteční stavy.
Automatické párováníZnovu projde všechny nespárované pohyby; už spárované nemění.
Platební příkazVytvoří nový soubor. Saldo nehlídá, že faktura už v jiném příkazu byla.
Spuštění automatizacíOpakovanou fakturu nezdvojí. Kontrolu nových kontaktů do 10 minut od poslední přeskočí, pokud nepošlete force: true.
Doklad o doručeníSoubor se stejným obsahem u téhož podání neuloží znovu a vrátí existující záznam.
Balíček pro účetníSestaví balíček znovu z aktuálních dat.