Reference API
Doklady a jejich stavy
Všechny doklady firmy: vydané a přijaté faktury, zálohy, dobropisy, pokladní, interní a obchodní doklady. Koncept, vystavení s číslem (v podvojném účetnictví i se zaúčtováním), storno, úhrady, upomínky, sdílení, ISDOC a opakované faktury.
GET Seznam dokladů
/entities/{entity_id}/documents
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
Vrátí stránkovaný seznam dokladů firmy všech druhů a stavů (koncepty, vystavené i stornované), pokud je filtry nevyloučí. Řazení je pevné: od nejnovějšího data vystavení, při shodě od nejvyššího ID. Filtry se kombinují; hledání q prochází číslo dokladu, údaje kontaktu uložené na dokladu (jméno, IČO, DIČ, adresa, e-mail, telefon), jméno kontaktu v adresáři, variabilní symbol, popis a číslo dokladu dodavatele. Součty sums jsou za celý vyfiltrovaný výběr (všechny stránky, všechny druhy a směry dohromady, včetně konceptů a stornovaných dokladů, pokud je filtr status nevyloučí), ne jen za vrácenou stránku.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
kind | dotaz | text | ne | Druhy dokladů oddělené čárkou. Hodnoty: invoice_out, invoice_in, proforma_out, proforma_in, advance_out, advance_in, credit_out, credit_in, cash_in, cash_out, internal, quote_out, order_out, delivery_out. Pole kind[] se nepodporuje; neznámá hodnota nic nenajde. Příklad invoice_out,credit_out. |
status | dotaz | text | ne | Stav dokladu – koncept, vystavený, stornovaný; jiná hodnota nic nenajde Hodnoty: draft, issued, cancelled. Příklad issued. |
state | dotaz | text | ne | Stav úhrady; vybírá jen vystavené doklady s úhradou (faktury, zálohové faktury, dobropisy). unpaid = zbývá něco uhradit (i částečně uhrazené a po splatnosti), overdue = zbývá uhradit a splatnost už uplynula, paid = nic nezbývá (i přeplacené a doklady s nulovou částkou). Jiná hodnota se ignoruje. Hodnoty: unpaid, overdue, paid. Příklad unpaid. |
approval | dotaz | text | ne | waiting = přijaté výdaje ve schvalování (odeslané, vrácené k opravě nebo změněné po schválení), bez stornovaných; mine = doklady čekající na schválení (odeslané nebo změněné po schválení), které smí schválit volající. Jiná hodnota se ignoruje. Hodnoty: waiting, mine. Příklad waiting. |
partner_id | dotaz | celé číslo | ne | Jen doklady tohoto kontaktu Příklad 118. |
from | dotaz | datum | ne | Datum vystavení od (včetně), ISO YYYY-MM-DD Příklad 2026-09-01. |
to | dotaz | datum | ne | Datum vystavení do (včetně), ISO YYYY-MM-DD Příklad 2026-09-30. |
year | dotaz | celé číslo | ne | Hospodářský rok firmy podle data vystavení (začíná měsícem fiscal_year_start firmy). Hodnota mimo rozsah se ořízne, nečíselná znamená aktuální rok. Rozsah od 2000 do 2100. Příklad 2026. |
q | dotaz | text | ne | Hledaný text (část čísla, údajů kontaktu včetně IČO a adresy, variabilního symbolu, popisu nebo čísla dokladu dodavatele). Velikost písmen se nerozlišuje; u písmen s diakritikou ale jen tehdy, když jsou v uloženém textu malá. Příklad nordwood. |
page | dotaz | celé číslo | ne | Číslo stránky; hodnota menší než 1 znamená 1 Výchozí 1. Rozsah od 1. Příklad 1. |
per | dotaz | celé číslo | ne | Počet řádků na stránce; 0 nebo prázdná hodnota znamená 100, jiné hodnoty se ořežou do rozsahu 1–500 Výchozí 100. Rozsah od 1 do 500. Příklad 50. |
Odpověď
200 application/json Objekt s počtem, stránkováním, součty v Kč a řádky dokladů (souhrnná podoba, bez položek a úhrad).
| Pole | Význam |
|---|---|
total | Počet dokladů odpovídajících filtrům (všechny stránky) |
page | Vrácená stránka |
per | Použitý počet řádků na stránce |
sums.net_czk | Součet základů v Kč za celý výběr |
sums.vat_czk | Součet DPH v Kč za celý výběr |
sums.gross_czk | Součet částek s DPH v Kč za celý výběr |
rows[].id | ID dokladu |
rows[].kind | Druh dokladu (invoice_out, invoice_in, …) |
rows[].kind_label | Český název druhu, např. Faktura vydaná |
rows[].status | draft (koncept), issued (vystavený), cancelled (stornovaný) |
rows[].number | Číslo z číselné řady; null u konceptu, který ještě nebyl vystaven |
rows[].variable_symbol | Variabilní symbol |
rows[].original_number | Číslo dokladu dodavatele (u přijatých dokladů) |
rows[].partner_id | ID kontaktu |
rows[].partner_name | Jméno kontaktu – u vystaveného dokladu ze snímku při vystavení |
rows[].partner_ico | IČO kontaktu |
rows[].issue_date | Datum vystavení |
rows[].taxable_date | Datum uskutečnění zdanitelného plnění (DUZP) |
rows[].due_date | Datum splatnosti |
rows[].currency | Měna dokladu (ISO 4217) |
rows[].total_net | Základ v měně dokladu |
rows[].total_vat | DPH v měně dokladu |
rows[].total_payable | Částka k úhradě v měně dokladu (včetně zaokrouhlení) |
rows[].total_gross_czk | Částka s DPH přepočtená kurzem dokladu na Kč |
rows[].paid_amount | Uhrazeno v měně dokladu |
rows[].remaining | Zbývá uhradit (total_payable − paid_amount) |
rows[].payment_state | na (nevystavený doklad nebo druh bez úhrad), unpaid, partial, overdue, paid |
rows[].days_overdue | Počet dní po splatnosti (0, není-li overdue) |
rows[].description | Popis dokladu |
rows[].vat_mode | Režim DPH |
rows[].source | Původ dokladu: manual, recurring, isdoc, pohoda, import |
rows[].tags | Štítky (text) |
rows[].related_document_id | ID souvisejícího dokladu (např. faktura u dobropisu) |
rows[].reminders_sent | Počet zaznamenaných upomínek |
rows[].outcome | Výsledek nabídky: accepted, rejected nebo null |
rows[].attachments_count | Počet příloh |
rows[].approval_state | Uložený stav schvalování (pending, approved, returned, changed) nebo null |
Chování
- Co změní
- Nic nezapisuje.
- Limity
- Nejvýše 500 řádků na stránku (výchozí 100).
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/documents?kind=invoice_out&state=unpaid&per=2"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents?kind=invoice_out&state=unpaid&per=2', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"total": 3,
"page": 1,
"per": 2,
"sums": {
"net_czk": 157720.0,
"vat_czk": 16758.0,
"gross_czk": 174478.0
},
"rows": [
{
"id": 143,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "issued",
"number": "FV20260025",
"variable_symbol": "20260025",
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 19800.0,
"total_vat": 4158.0,
"total_payable": 23958.0,
"total_gross_czk": 23958.0,
"paid_amount": 0.0,
"remaining": 23958.0,
"payment_state": "unpaid",
"days_overdue": 0,
"description": "Správa webu – září",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null
},
{
"id": 23,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "issued",
"number": "FV20260023",
"variable_symbol": "20260023",
"original_number": null,
"partner_id": 5,
"partner_name": "Hafenlicht GmbH",
"partner_ico": null,
"issue_date": "2026-09-21",
"taxable_date": "2026-09-21",
"due_date": "2026-10-21",
"currency": "EUR",
"total_net": 3200.0,
"total_vat": 0.0,
"total_payable": 3200.0,
"total_gross_czk": 77920.0,
"paid_amount": 0.0,
"remaining": 3200.0,
"payment_state": "unpaid",
"days_overdue": 0,
"description": "Software development services – sprint",
"vat_mode": "eu_services",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null
}
]
}
POST Založení dokladu, volitelně s vystavením
/entities/{entity_id}/documents
- Oprávnění
- Vlastník, účetní nebo editor
- Pravidlo
- S issue: true platí pro přijaté výdaje (invoice_in, cash_out, credit_in) pravidla schvalování: kdo doklad nesmí schválit, ten ho jen odešle ke schválení.
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY - V příručce
- Vydané faktury › Vystavit fakturu; Zálohy, dobropisy a obchodní doklady › Vystavit zálohovou fakturu; Zálohy, dobropisy a obchodní doklady › Daňový doklad k přijaté platbě; Zálohy, dobropisy a obchodní doklady › Vyúčtovat zálohu konečnou fakturou; Zálohy, dobropisy a obchodní doklady › Přijatá zálohová faktura; Zálohy, dobropisy a obchodní doklady › Dobropisy (opravné daňové doklady); Zálohy, dobropisy a obchodní doklady › Vytvořit cenovou nabídku; Zálohy, dobropisy a obchodní doklady › Objednávka u dodavatele; Zálohy, dobropisy a obchodní doklady › Dodací list
Uloží nový doklad jako koncept: dopočítá částky řádků a součty podle sazeb DPH (DPH z rekapitulace po sazbách; u dokladu v Kč zaokrouhlí částku k úhradě – u prodeje podle nastavení firmy, u nákupu jen hotovostní), datum pro DPH a u dokladu v Kč kurz 1. Kontakt, bankovní účet, související doklad a odečítaná záloha, které firmě nepatří, se tiše vynechají (uloží se prázdné). S issue: true se doklad hned vystaví jako v issueDocument; přijatý výdaj, na který se vztahuje pravidlo schvalování a volající ho nesmí schválit, zůstane konceptem a odešle se ke schválení. Kurz cizí měny server nedoplňuje – bez exchange_rate se uloží kurz 1.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
Tělo požadavku
Formát application/json.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
document | objekt | ano | |
document. | text | ano | Druh dokladu (nelze později změnit). invoice_out/invoice_in – faktura vydaná/přijatá (řada FV/FP); proforma_out/proforma_in – zálohová faktura vydaná/přijatá (ZV/ZP, není daňový doklad; při vystavení se nezaúčtuje, její úhrady ano); advance_out/advance_in – daňový doklad k přijaté/poskytnuté platbě zálohy (DZ/DP); credit_out/ credit_in – opravný daňový doklad (dobropis) vydaný/přijatý (OV/OP); cash_in/cash_out – příjmový/ výdajový pokladní doklad (PP/VP); internal – interní doklad (ID, bez DPH, nezaúčtuje se; ruční účetní zápisy jsou /entries); quote_out – cenová nabídka (NA), order_out – objednávka vydaná (OB), delivery_out – dodací list (DL): obchodní doklady, nikdy se neúčtují ani nevstupují do DPH. Hodnoty: invoice_out, invoice_in, proforma_out, proforma_in, advance_out, advance_in, credit_out, credit_in, cash_in, cash_out, internal, quote_out, order_out, delivery_out. |
document. | celé číslo | ne | ID kontaktu (odběratel nebo dodavatel); ID, které firmě nepatří, se uloží jako prázdné |
document. | datum | ano | Datum vystavení; určuje rok číselné řady |
document. | datum | ne | DUZP; u daňových dokladů se při vystavení doplní datem vystavení, pokud chybí |
document. | datum | ne | Datum splatnosti; nesmí být dříve než datum vystavení |
document. | datum | ne | Datum přijetí dokladu (u přijatých dokladů) |
document. | datum | ne | Datum pro DPH. U prodeje se vždy přepíše na DUZP (jinak datum vystavení). U nákupu se bez hodnoty nastaví na pozdější z DUZP a data přijetí (jinak datum vystavení); zadané dřívější datum se posune na tuto hodnotu. |
document. | text | ne | Kód měny ze tří písmen (převede se na velká); výchozí CZK |
document. | číslo | ne | Kurz CZK za 1 jednotku měny (> 0, 6 desetinných míst). U CZK se vždy nastaví 1. Server kurz ČNB nedoplňuje – bez hodnoty zůstane 1 i u cizí měny. |
document. | datum | ne | Datum, ke kterému je kurz (informativní; posouzení limitu schvalování podle něj hledá kurz ČNB) |
document. | text | ne | Režim DPH: domestic – tuzemské plnění (výchozí), reverse_charge – přenesená daňová povinnost (§ 92a), eu_goods – dodání/pořízení zboží v EU, eu_services – služby v rámci EU, import – dovoz ze třetí země, export – vývoz do třetí země, exempt – osvobozené plnění, non_vat – mimo DPH, triangular – třístranný obchod. DPH se počítá jen v režimu domestic a jen na řádcích druhu standard (u prodeje jen u plátce DPH, u interního dokladu nikdy); u přijatých dokladů plátce DPH nebo identifikované osoby v režimech reverse_charge, eu_goods, eu_services, import a triangular se daň vyměří samovyměřením. Hodnoty: domestic, reverse_charge, eu_goods, eu_services, import, export, exempt, non_vat, triangular. |
document. | text | ne | Kód předmětu plnění u přenesené daňové povinnosti (číselník rc_codes v /codebooks; hodnota se neověřuje) |
document. | ano/ne | ne | Ceny řádků jsou včetně DPH (výchozí false) |
document. | ano/ne | ne | Zjednodušený daňový doklad (výchozí false) |
document. | ano/ne | ne | Oprava v režimu § 44 ZDPH (výchozí false) |
document. | text | ne | Způsob úhrady – převodem, hotově, kartou, dobírka, zápočet, uhrazeno zálohou, jinak (výchozí bank) Hodnoty: bank, cash, card, cod, offset, advance, other. |
document. | celé číslo | ne | ID bankovního účtu nebo pokladny firmy pro úhradu; cizí ID se uloží jako prázdné |
document. | text | ne | Variabilní symbol; nečíselné znaky se odstraní, nejvýše 10 číslic. U prodeje se při vystavení doplní z čísla dokladu |
document. | text | ne | Konstantní symbol, nejvýše 10 číslic |
document. | text | ne | Specifický symbol, nejvýše 10 číslic |
document. | text | ne | Číslo dokladu dodavatele (u přijatých dokladů); používá se ke kontrole duplicit |
document. | text | ne | Popis dokladu |
document. | text | ne | Text na dokladu (vidí ho i zákazník) |
document. | text | ne | Interní poznámka; na sdílené stránce dokladu se nezobrazí |
document. | text | ne | Jazyk dokladu (výchozí cs) Hodnoty: cs, en. |
document. | text | ne | Oddíl kontrolního hlášení; jen se uloží, výpočty ho nečtou |
document. | text | ne | Středisko (podmínka pravidel schvalování) |
document. | text | ne | Projekt / zakázka |
document. | text | ne | Štítky jako text |
document. | celé číslo | ne | ID souvisejícího dokladu firmy (např. původní faktura dobropisu); cizí ID se uloží jako prázdné |
document. | pole (objekt) | ne | Řádky dokladu v pořadí, v jakém se mají zobrazit |
document. | text | ne | Text položky, nejvýše 500 znaků |
document. | číslo | ne | Množství, nesmí být 0 (záporné u dobropisu nebo odpočtu); výchozí 1 |
document. | text | ne | Jednotka, např. ks, hod |
document. | číslo | ne | Jednotková cena (bez DPH, nebo s DPH při prices_include_vat), 4 desetinná místa |
document. | číslo | ne | Sleva v procentech 0–100 |
document. | číslo | ne | Sazba DPH v procentech 0–100; bez hodnoty 0 |
document. | text | ne | Druh plnění – zdanitelné, osvobozené s nárokem, osvobozené bez nároku na odpočet, není předmětem daně (výchozí standard) Hodnoty: standard, exempt_with_credit, exempt_without_credit, not_subject. |
document. | text | ne | Účet (podvojné účetnictví) nebo kategorie daňové evidence; prázdný se při zaúčtování nahradí 602/518 (daňová evidence P02/V05); nejvýše 12 znaků: číslice, velká písmena, tečka, pomlčka |
document. | ano/ne | ne | Pořízení majetku |
document. | text | ne | Nárok na odpočet DPH u nákupu – plný, krácený koeficientem, žádný (výchozí full) Hodnoty: full, proportional, none. |
document. | celé číslo | ne | Odpočet zálohy – ID daňového dokladu k záloze (advance_out/advance_in); jiné ID se uloží jako prázdné |
issue | ano/ne | ne | true = po uložení doklad vystavit (nebo odeslat ke schválení) |
capture_key | text | ne | Volitelný klíč idempotence (UUID). Opakovaný požadavek se stejným klíčem ve stejné firmě vrátí už uložený doklad místo nového. |
Odpověď
201 application/json Detail založeného dokladu jako v getDocument (včetně approval). Při opakování se stejným capture_key odpověď 200 s detailem dříve uloženého dokladu bez klíče approval.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | capture_key není UUID: „Neplatný identifikátor nahrání“ |
| 422 | – | S issue: true doklad bez řádků: „Doklad nemá žádnou položku“ |
| 422 | – | S issue: true faktura, zálohová faktura, dobropis, daňový doklad k záloze nebo obchodní doklad bez kontaktu: „Doplňte odběratele nebo dodavatele“ |
| 422 | – | S issue: true řádek odečítá neexistující nebo nevystavený daňový doklad k záloze: „Odečítaná záloha neexistuje“ |
| 422 | – | S issue: true je daňový doklad k záloze už odečtený na jiném vystaveném dokladu: „Daňový doklad … je už odečtený na dokladu …“ |
| 422 | – | S issue: true datum dokladu v uzamčeném období: „Období do … je uzamčeno – doklad nelze měnit“ (tvar { error, errors }); se zadaným capture_key se místo této chyby vrátí 200 s uloženým konceptem |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Vytvoří doklad se zdrojem manual a jeho řádky a zapíše do historie document.created. S issue: true navíc totéž co issueDocument (číslo z řady, účetní zápisy v podvojném účetnictví, document.issued), případně odeslání ke schválení (document.approval_submitted). U přijatého výdaje v cizí měně se při zapnutém schvalování může dotázat kurz ČNB (jen pro posouzení limitu). Když vystavení selže (422), koncept už zůstane uložený.
- Limity
- Popis řádku nejvýše 500 znaků; variabilní, konstantní a specifický symbol nejvýše 10 číslic.
- Opakování
- Bez capture_key vytvoří každé volání nový doklad (i po chybě vystavení, kdy už koncept existuje). Se stejným capture_key (bez ohledu na velikost písmen, jedinečný v rámci firmy) vrátí opakované volání dříve uložený doklad se stavem 200, tělo ignoruje a nic nevystavuje; souběžné opakování se ošetří stejně.
Příklad
Vystaví fakturu vydanou; odpověď obsahuje číslo z řady FV a stav issued.
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"issue":true,"document":{"kind":"invoice_out","partner_id":1,"issue_date":"2026-09-28","taxable_date":"2026-09-28","due_date":"2026-10-12","payment_method":"bank","bank_account_id":2,"description":"Konzultace – září","lines_attributes":[{"description":"Konzultace – digitální strategie","quantity":6,"unit":"hod","unit_price":2200,"vat_rate":21,"account_code":"602"}]}}' \
https://techtools.cz/ucetnictvi-api/entities/1/documentsJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY, 'Content-Type': 'application/json' },
method: 'POST',
body: JSON.stringify({
"issue": true,
"document": {
"kind": "invoice_out",
"partner_id": 1,
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"payment_method": "bank",
"bank_account_id": 2,
"description": "Konzultace – září",
"lines_attributes": [
{
"description": "Konzultace – digitální strategie",
"quantity": 6,
"unit": "hod",
"unit_price": 2200,
"vat_rate": 21,
"account_code": "602"
}
]
}
})
});
const data = await response.json();{
"id": 149,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "issued",
"number": "FV20260026",
"variable_symbol": "20260026",
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 13200.0,
"total_vat": 2772.0,
"total_payable": 15972.0,
"total_gross_czk": 15972.0,
"paid_amount": 0.0,
"remaining": 15972.0,
"payment_state": "unpaid",
"days_overdue": 0,
"description": "Konzultace – září",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": "2026-09-28",
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 15972.0,
"total_net_czk": 13200.0,
"total_vat_czk": 2772.0,
"note": null,
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": "2026-09-28T10:00:00.000Z",
"updated_at": "2026-09-28T10:00:00.000Z",
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": 150,
"position": 0,
"description": "Konzultace – digitální strategie",
"quantity": 6.0,
"unit": "hod",
"unit_price": 2200.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 13200.0,
"vat": 2772.0,
"gross": 15972.0,
"net_czk": 13200.0,
"vat_czk": 2772.0
}
],
"attachments": [],
"share": null,
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 13200.0,
"vat": 2772.0,
"gross": 15972.0,
"net_czk": 13200.0,
"vat_czk": 2772.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": null,
"recurrence": null,
"approval": null
}
GET Detail dokladu
/entities/{entity_id}/documents/{id}
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
- V příručce
- Vydané faktury › Detail faktury
Vrátí úplný doklad: souhrnné údaje jako v seznamu, všechny údaje dokladu, kontakt (uložený snímek – u vystaveného dokladu z okamžiku vystavení –, jinak aktuální údaje z adresáře), řádky s dopočítanými částkami, rekapitulaci DPH podle sazeb, úhrady, metadata příloh, stav sdíleného odkazu, bankovní účet, související doklad, aktivní opakování a stav schvalování.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID dokladu Příklad 1532. |
Odpověď
200 application/json Všechna pole řádku ze seznamu dokladů (listDocuments) a navíc údaje níže. Peníze jsou čísla v měně dokladu, pole *_czk v Kč.
| Pole | Význam |
|---|---|
uuid | UUID dokladu (u importu z ISDOC), jinak null |
constant_symbol | Konstantní symbol |
specific_symbol | Specifický symbol |
received_date | Datum přijetí |
vat_date | Datum pro DPH |
exchange_rate | Kurz CZK za jednotku měny |
rate_date | Datum kurzu |
rc_code | Kód předmětu plnění PDP |
prices_include_vat | Ceny včetně DPH |
simplified | Zjednodušený daňový doklad |
regime_44 | Oprava podle § 44 ZDPH |
payment_method | Způsob úhrady |
bank_account_id | ID účtu pro úhradu |
rounding | Zaokrouhlení částky k úhradě |
total_gross | Částka s DPH v měně dokladu (před zaokrouhlením) |
total_net_czk | Základ v Kč |
total_vat_czk | DPH v Kč |
note | Text na dokladu |
internal_note | Interní poznámka |
language | cs nebo en |
kh_section | Uložený oddíl kontrolního hlášení |
cost_center | Středisko |
project | Projekt |
paid_on | Datum poslední úhrady, když je doklad plně uhrazen (u pokladního dokladu datum vystavení), jinak null |
created_at | Založeno |
updated_at | Naposledy změněno |
partner | Kontakt { name, ico, dic, street, city, zip, country, email, phone } |
lines[] | Řádky { id, position, description, quantity, unit, unit_price, discount_percent, vat_rate, vat_kind, account_code, asset, deduction, advance_document_id, net, vat, gross, net_czk, vat_czk } |
attachments[] | Přílohy { id, filename, content_type, byte_size, inline, created_at } |
share | Veřejný odkaz { token, shared_at, viewed_at, views } nebo null |
payments[] | Úhrady podle data { id, document_id, bank_transaction_id, bank_account_id, paid_on, amount, amount_czk, exchange_rate, payment_method, note } |
vat_recap[] | Rekapitulace DPH po sazbách sestupně { rate, net, vat, gross, net_czk, vat_czk } |
bank_account | Bankovní účet nebo pokladna dokladu (údaje účtu, display_number) nebo null |
related_document | { id, number, kind } souvisejícího dokladu nebo null |
recurrence | Aktivní pravidlo opakování, kde je doklad vzorem (bez template), nebo null |
approval | Stav schvalování { state, label, required, rule, approvers, fingerprint, can_submit, can_approve, can_return, history[] } nebo null, když doklad nemá historii schvalování a schvalování se ho netýká (nebo byl vystaven dřív, než ho pravidlo pokrylo) |
Chování
- Co změní
- Nic nezapisuje.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/143JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/143', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"id": 143,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "issued",
"number": "FV20260025",
"variable_symbol": "20260025",
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 19800.0,
"total_vat": 4158.0,
"total_payable": 23958.0,
"total_gross_czk": 23958.0,
"paid_amount": 0.0,
"remaining": 23958.0,
"payment_state": "unpaid",
"days_overdue": 0,
"description": "Správa webu – září",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": "2026-09-28",
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 23958.0,
"total_net_czk": 19800.0,
"total_vat_czk": 4158.0,
"note": null,
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": "2026-09-28T10:00:00.000Z",
"updated_at": "2026-09-28T10:00:00.000Z",
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": 144,
"position": 0,
"description": "Správa webu – září",
"quantity": 12.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"attachments": [],
"share": {
"token": "3bND5_Cv7iT39piyS-wZbFjQ1NizQFVX",
"shared_at": "2026-09-28T10:00:00.000Z",
"viewed_at": null,
"views": 0
},
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": null,
"recurrence": null,
"approval": null
}
PATCH Úprava dokladu
/entities/{entity_id}/documents/{id}
- Oprávnění
- Vlastník, účetní nebo editor
- Pravidlo
- Změnu částky, kurzu, dodavatele (včetně jeho účtu), střediska nebo účtů zaúčtovaného přijatého výdaje, na který se vztahuje pravidlo schvalování, smí uložit jen jeho schvalovatel; ostatním vrátí 422.
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Změní údaje dokladu a jeho řádků; kind se ignoruje (druh nelze změnit). Řádek s id se upraví, řádek s id a _destroy: true se odebere, řádek bez id se přidá; řádky, které v požadavku nejsou, zůstanou beze změny. Upravit lze i vystavený doklad (a také stornovaný): u vystaveného se účetní zápisy smažou a zaúčtují znovu a při změně kontaktu se obnoví snímek kontaktu. Změna vystaveného nebo stornovaného dokladu, jehož data leží v uzamčeném období, se odmítne; u konceptu se uzamčení nekontroluje. S issue: true se koncept po uložení vystaví (nebo odešle ke schválení); u nekonceptu se issue ignoruje.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID dokladu Příklad 1532. |
Tělo požadavku
Formát application/json.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
document | objekt | ano | |
document. | celé číslo | ne | ID kontaktu; cizí ID se uloží jako prázdné |
document. | datum | ne | Datum vystavení |
document. | datum | ne | DUZP |
document. | datum | ne | Datum splatnosti; nesmí být dříve než datum vystavení |
document. | datum | ne | Datum přijetí |
document. | datum | ne | Datum pro DPH (u prodeje se přepíše na DUZP, u nákupu nejdřív DUZP / datum přijetí) |
document. | text | ne | Kód měny |
document. | číslo | ne | Kurz CZK za jednotku měny (> 0); u CZK vždy 1 |
document. | datum | ne | Datum kurzu |
document. | text | ne | Režim DPH (viz createDocument) Hodnoty: domestic, reverse_charge, eu_goods, eu_services, import, export, exempt, non_vat, triangular. |
document. | text | ne | Kód předmětu plnění PDP |
document. | ano/ne | ne | Ceny včetně DPH |
document. | ano/ne | ne | Zjednodušený daňový doklad |
document. | ano/ne | ne | Oprava podle § 44 ZDPH |
document. | text | ne | Způsob úhrady Hodnoty: bank, cash, card, cod, offset, advance, other. |
document. | celé číslo | ne | ID bankovního účtu nebo pokladny; cizí ID se uloží jako prázdné |
document. | text | ne | Variabilní symbol (jen číslice, nejvýše 10) |
document. | text | ne | Konstantní symbol, nejvýše 10 číslic |
document. | text | ne | Specifický symbol, nejvýše 10 číslic |
document. | text | ne | Číslo dokladu dodavatele |
document. | text | ne | Popis |
document. | text | ne | Text na dokladu |
document. | text | ne | Interní poznámka |
document. | text | ne | Jazyk dokladu Hodnoty: cs, en. |
document. | text | ne | Oddíl kontrolního hlášení (jen se uloží) |
document. | text | ne | Středisko |
document. | text | ne | Projekt |
document. | text | ne | Štítky |
document. | celé číslo | ne | ID souvisejícího dokladu; cizí ID se uloží jako prázdné |
document. | pole (objekt) | ne | Změny řádků – s id úprava, s id a _destroy smazání, bez id nový řádek |
document. | celé číslo | ne | ID existujícího řádku dokladu |
document. | ano/ne | ne | true = řádek odebrat |
document. | text | ne | Text položky, nejvýše 500 znaků |
document. | číslo | ne | Množství, nesmí být 0 |
document. | text | ne | Jednotka |
document. | číslo | ne | Jednotková cena |
document. | číslo | ne | Sleva 0–100 % |
document. | číslo | ne | Sazba DPH 0–100 % |
document. | text | ne | Druh plnění Hodnoty: standard, exempt_with_credit, exempt_without_credit, not_subject. |
document. | text | ne | Účet nebo kategorie daňové evidence |
document. | ano/ne | ne | Pořízení majetku |
document. | text | ne | Nárok na odpočet Hodnoty: full, proportional, none. |
document. | celé číslo | ne | ID odečítaného daňového dokladu k záloze |
issue | ano/ne | ne | true = koncept po uložení vystavit (nebo odeslat ke schválení) |
Odpověď
200 application/json Detail upraveného dokladu jako v getDocument (včetně approval).
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Data dokladu v uzamčeném období (u nekonceptu): „Období do … je uzamčeno – doklad nelze měnit“ (tvar { error, errors }) |
| 422 | – | Účetní zápisy vystaveného dokladu leží v uzamčeném období: „Období do … je uzamčeno – zaúčtování nelze změnit“ |
| 422 | – | Nepovolená změna zaúčtovaného výdaje ve schvalování: „Změnu částky, kurzu, dodavatele, střediska nebo účtů u zaúčtovaného dokladu musí schválit … – vraťte doklad do konceptu a odešlete ho ke schválení“ |
| 422 | – | S issue: true stejné chyby jako issueDocument (bez řádků, bez kontaktu, odečítaná záloha) |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Uloží změny a zapíše document.updated; u vystaveného dokladu v podvojném účetnictví přeúčtuje jeho účetní zápisy. Při zapnutém schvalování změnu schvalovaných údajů schvalovatelem rovnou znovu schválí, změnu jiného člena u schváleného dokladu označí „Změněno po schválení“. S issue: true navíc jako issueDocument; když vystavení selže, změny už zůstanou uložené.
- Opakování
- Opakování se stejným tělem dá stejný výsledek, kromě řádků bez id – ty se při každém volání přidají znovu; každé volání zapíše další document.updated.
Příklad
cURL
curl \
-X PATCH \
-H "X-API-Key: $SALDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"document":{"due_date":"2026-10-20","note":"Děkujeme za spolupráci."}}' \
https://techtools.cz/ucetnictvi-api/entities/1/documents/145JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/145', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY, 'Content-Type': 'application/json' },
method: 'PATCH',
body: JSON.stringify({
"document": {
"due_date": "2026-10-20",
"note": "Děkujeme za spolupráci."
}
})
});
const data = await response.json();{
"id": 145,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "draft",
"number": null,
"variable_symbol": null,
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-20",
"currency": "CZK",
"total_net": 19800.0,
"total_vat": 4158.0,
"total_payable": 23958.0,
"total_gross_czk": 23958.0,
"paid_amount": 0.0,
"remaining": 23958.0,
"payment_state": "na",
"days_overdue": 0,
"description": "Návrh úvodní stránky",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": "2026-09-28",
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 23958.0,
"total_net_czk": 19800.0,
"total_vat_czk": 4158.0,
"note": "Děkujeme za spolupráci.",
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": "2026-09-28T10:00:00.000Z",
"updated_at": "2026-09-28T10:00:00.000Z",
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": 146,
"position": 0,
"description": "Návrh úvodní stránky",
"quantity": 12.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"attachments": [],
"share": null,
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": null,
"recurrence": null,
"approval": null
}
DELETE Smazání konceptu
/entities/{entity_id}/documents/{id}
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY - V příručce
- Vydané faktury › Smazat koncept
Smaže koncept, který ještě nemá číslo (nikdy nebyl vystaven), s jeho řádky, přílohami a historií schvalování a zruší otevřené žádosti o podklad k dokladu. Vystavený ani stornovaný doklad a ani koncept vrácený z vystaveného dokladu (má číslo) smazat nelze – aby v číselné řadě nevznikla mezera, stornuje se.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID dokladu Příklad 1540. |
Odpověď
204 Prázdná odpověď.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Doklad není koncept (vystavený nebo stornovaný): „Vystavený doklad nelze smazat – stornujte ho“ |
| 422 | – | Koncept už má číslo z řady: „Doklad už má číslo z číselné řady – aby v ní nevznikla mezera, stornujte ho“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Smaže doklad, řádky, přílohy a záznamy schvalování; otevřené žádosti o podklad k dokladu zruší (zpráva a událost document_request.cancelled) a zapíše document.deleted. Pravidlo opakování, jehož je doklad vzorem, se nesmaže.
- Opakování
- Druhé volání vrátí 404.
Příklad
cURL
curl \
-X DELETE \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/145JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/145', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY },
method: 'DELETE'
});
const data = await response.json();soubor, 0 bajtů
GET Předvyplněný nový doklad
/entities/{entity_id}/documents/template
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
Vrátí neuložený koncept zvoleného druhu s výchozími hodnotami firmy: datum vystavení dnes, DUZP dnes u daňových dokladů, datum přijetí dnes u nákupních, u faktur, zálohových faktur a dobropisů splatnost podle výchozí splatnosti firmy (u nabídky 30 dní, jinde žádná), jazyk z nastavení faktur, u pokladních dokladů hotově a první aktivní pokladna, jinak převodem a výchozí (nebo první) aktivní bankovní účet, tuzemské plnění a jeden řádek 1 ks s cenou 0, sazbou 21 % (u prodeje neplátce DPH 0 %) a výchozím účtem. Přidá number_preview – číslo, které by doklad dostal při vystavení dnes. Nic neukládá; doklad se založí přes createDocument.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
kind | dotaz | text | ne | Druh dokladu; neznámá hodnota znamená invoice_out Hodnoty: invoice_out, invoice_in, proforma_out, proforma_in, advance_out, advance_in, credit_out, credit_in, cash_in, cash_out, internal, quote_out, order_out, delivery_out. Výchozí invoice_out. Příklad invoice_in. |
Odpověď
200 application/json Doklad ve tvaru getDocument (id null, status draft, částky 0, přílohy a úhrady prázdné, approval chybí) a navíc number_preview.
| Pole | Význam |
|---|---|
number_preview | Náhled čísla z číselné řady k dnešnímu dni |
lines[] | Jeden výchozí řádek bez id |
Chování
- Co změní
- Nic nezapisuje.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/documents/template?kind=invoice_out"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/template?kind=invoice_out', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"id": null,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "draft",
"number": null,
"variable_symbol": null,
"original_number": null,
"partner_id": null,
"partner_name": null,
"partner_ico": null,
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 0.0,
"total_vat": 0.0,
"total_payable": 0.0,
"total_gross_czk": 0.0,
"paid_amount": 0.0,
"remaining": 0.0,
"payment_state": "na",
"days_overdue": 0,
"description": null,
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": null,
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 0.0,
"total_net_czk": 0.0,
"total_vat_czk": 0.0,
"note": null,
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": null,
"updated_at": null,
"partner": {},
"lines": [
{
"id": null,
"position": 0,
"description": "",
"quantity": 1.0,
"unit": "ks",
"unit_price": 0.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 0.0,
"vat": 0.0,
"gross": 0.0,
"net_czk": 0.0,
"vat_czk": 0.0
}
],
"attachments": [],
"share": null,
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 0.0,
"vat": 0.0,
"gross": 0.0,
"net_czk": 0.0,
"vat_czk": 0.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": null,
"recurrence": null,
"number_preview": "FV20260026"
}
GET Náhled dalšího čísla dokladu
/entities/{entity_id}/documents/next_number
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
Vrátí číslo, které by dostal doklad druhu kind vystavený k datu date, podle formátu čísel firmy (výchozí {prefix}{yyyy}{nnnn}, např. FV20260001; další zástupné znaky {yy}, {mm}). Každý druh má vlastní řadu pro každý kalendářní rok data vystavení. Jde jen o náhled: číslo se nerezervuje a při vystavení se přeskočí čísla, která už nějaký doklad téhož druhu používá (např. z importu).
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
kind | dotaz | text | ne | Druh dokladu; neznámá hodnota znamená invoice_out Hodnoty: invoice_out, invoice_in, proforma_out, proforma_in, advance_out, advance_in, credit_out, credit_in, cash_in, cash_out, internal, quote_out, order_out, delivery_out. Výchozí invoice_out. Příklad invoice_out. |
date | dotaz | datum | ne | Datum vystavení, ke kterému se číslo počítá (výchozí dnes) Příklad 2026-09-28. |
Odpověď
200 application/json Objekt s náhledem čísla.
| Pole | Význam |
|---|---|
number | Číslo, např. FV20260042 |
Chování
- Co změní
- Nic nezapisuje.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/documents/next_number?kind=invoice_out&date=2026-09-28"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/next_number?kind=invoice_out&date=2026-09-28', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"number": "FV20260026"
}
GET Našeptávač položek z dřívějších dokladů
/entities/{entity_id}/documents/items
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
- V příručce
- Vydané faktury › Doplňování z historie
Vrátí nejvýše 8 položek, které firma použila na dokladech stejného směru jako kind (prodej, nákup, nebo interní), jejichž text obsahuje všechna slova dotazu (bez ohledu na velikost písmen a diakritiku); prázdný dotaz vrátí nejčastější položky. Prochází posledních 3 000 řádků nestornovaných dokladů s kladným množstvím a neprázdným textem, bez odpočtů záloh. Položky se stejným textem se sloučí a hodnoty jsou z posledního použití. Pořadí: skóre (četnost, text nebo slovo začíná dotazem, použití za posledních 45 a 180 dní), pak novější použití.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
q | dotaz | text | ne | Hledaná slova Příklad konzultace. |
kind | dotaz | text | ne | Druh editovaného dokladu; určuje směr (prodej / nákup / interní) Hodnoty: invoice_out, invoice_in, proforma_out, proforma_in, advance_out, advance_in, credit_out, credit_in, cash_in, cash_out, internal, quote_out, order_out, delivery_out. Výchozí invoice_out. Příklad invoice_out. |
Odpověď
200 application/json Návrhy položek.
| Pole | Význam |
|---|---|
rows[].description | Text položky |
rows[].unit | Jednotka |
rows[].unit_price | Jednotková cena z posledního použití |
rows[].vat_rate | Sazba DPH |
rows[].vat_kind | Druh plnění |
rows[].account_code | Účet / kategorie |
rows[].discount_percent | Sleva |
rows[].currency | Měna dokladu, kde byla položka naposledy |
rows[].prices_include_vat | Zda byla cena včetně DPH |
rows[].count | Kolikrát byla položka použita |
rows[].last_used | Datum vystavení posledního dokladu s položkou |
rows[].score | Skóre pořadí |
Chování
- Co změní
- Nic nezapisuje.
- Limity
- Nejvýše 8 návrhů; prohledá posledních 3 000 řádků.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/documents/items?q=konzultace&kind=invoice_out"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/items?q=konzultace&kind=invoice_out', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"rows": [
{
"description": "Konzultace – digitální strategie",
"unit": "hod",
"unit_price": 2200.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"discount_percent": 0.0,
"currency": "CZK",
"prices_include_vat": false,
"count": 3,
"last_used": "2026-07-15",
"score": 10
}
]
}
GET Výchozí údaje dokladu podle kontaktu
/entities/{entity_id}/documents/partner_defaults
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
- V příručce
- Vydané faktury › Doplňování z historie
Pro kontakt vrátí údaje z jeho posledního nestornovaného dokladu (i konceptu) stejného směru jako kind (přednostně stejného druhu): měnu, způsob úhrady, jazyk, režim DPH, kód PDP, ceny s DPH, konstantní symbol, bankovní účet (jen je-li stále aktivní) a splatnost ve dnech (z kontaktu, jinak z posledního dokladu s úhradou, 0–365). U nákupu navrhne účet řádku. last_document nese řádky posledního dokladu stejného druhu (bez odpočtů záloh) pro „Stejné jako minule“.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
partner_id | dotaz | celé číslo | ano | ID kontaktu firmy Příklad 118. |
kind | dotaz | text | ne | Druh editovaného dokladu Hodnoty: invoice_out, invoice_in, proforma_out, proforma_in, advance_out, advance_in, credit_out, credit_in, cash_in, cash_out, internal, quote_out, order_out, delivery_out. Výchozí invoice_out. Příklad invoice_in. |
Odpověď
200 application/json Výchozí hodnoty; bez předchozího dokladu jsou údaje dokladu null.
| Pole | Význam |
|---|---|
partner_id | ID kontaktu |
based_on | { id, number, kind, issue_date } dokladu, ze kterého hodnoty pocházejí (number u konceptu je text Koncept), nebo null |
currency | Měna |
payment_method | Způsob úhrady |
language | Jazyk |
vat_mode | Režim DPH |
rc_code | Kód PDP |
prices_include_vat | Ceny s DPH |
constant_symbol | Konstantní symbol |
bank_account_id | Aktivní bankovní účet posledního dokladu nebo null |
due_days | Splatnost ve dnech nebo null |
account_code | U nákupu nejčastější účet řádků vystavených nákupních dokladů kontaktu, jinak výchozí účet kontaktu, jinak 518 (daňová evidence V05); u prodeje a interního dokladu null |
last_document | { id, number, issue_date, total_payable, currency, prices_include_vat, lines[] } posledního dokladu stejného druhu, nebo null |
Chování
- Co změní
- Nic nezapisuje.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/documents/partner_defaults?partner_id=1&kind=invoice_out"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/partner_defaults?partner_id=1&kind=invoice_out', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"partner_id": 1,
"based_on": {
"id": 145,
"number": "Koncept",
"kind": "invoice_out",
"issue_date": "2026-09-28"
},
"currency": "CZK",
"payment_method": "bank",
"language": "cs",
"vat_mode": "domestic",
"rc_code": null,
"prices_include_vat": false,
"constant_symbol": null,
"bank_account_id": 2,
"due_days": 14,
"account_code": null,
"last_document": {
"id": 145,
"number": "Koncept",
"issue_date": "2026-09-28",
"total_payable": 23958.0,
"currency": "CZK",
"prices_include_vat": false,
"lines": [
{
"description": "Návrh úvodní stránky",
"quantity": 12.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"deduction": "full",
"asset": false
}
]
}
}
GET Kontrola duplicity přijatého dokladu
/entities/{entity_id}/documents/duplicates
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
Zjistí, zda firma už nemá stejný přijatý doklad. Kontroluje jen nákupní druhy (invoice_in, proforma_in, advance_in, credit_in, cash_out) se známým kontaktem firmy a porovnává s nestornovanými nákupními doklady téhož dodavatele (stejný kontakt nebo stejné IČO): nejdřív shodné číslo dokladu dodavatele (bez ohledu na velikost písmen a mezery na krajích), jinak stejná měna a částka k úhradě (±0,005) s datem vystavení nejvýše 3 dny od zadaného. Vrátí nejstarší takový doklad s větou pro uživatele, jinak null. Ukládání dokladu tuto kontrolu neprovádí; hromadné vystavení ano.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
kind | dotaz | text | ne | Druh kontrolovaného dokladu; u jiného než nákupního druhu (včetně internal a order_out) je výsledek vždy null Hodnoty: invoice_out, invoice_in, proforma_out, proforma_in, advance_out, advance_in, credit_out, credit_in, cash_in, cash_out, internal, quote_out, order_out, delivery_out. Výchozí invoice_out. Příklad invoice_in. |
partner_id | dotaz | celé číslo | ne | ID dodavatele; bez něj (nebo s cizím ID) je výsledek null Příklad 131. |
original_number | dotaz | text | ne | Číslo dokladu dodavatele Příklad 2026090815. |
issue_date | dotaz | datum | ne | Datum vystavení (pro shodu podle částky) Příklad 2026-09-20. |
total | dotaz | číslo | ne | Částka k úhradě v měně dokladu (pro shodu podle částky; 0 nebo prázdná shodu podle částky vypne) Příklad 17545. |
currency | dotaz | text | ne | Kód měny dokladu velkými písmeny (pro shodu podle částky); hodnota se nepřevádí, takže s eur se shoda podle částky nenajde Výchozí CZK. Příklad CZK. |
id | dotaz | celé číslo | ne | ID právě upravovaného dokladu, který se má z porovnání vynechat Příklad 1540. |
Odpověď
200 application/json Pravděpodobná duplicita nebo null.
| Pole | Význam |
|---|---|
duplicate_of | null, nebo { id, number, kind, status, original_number, issue_date, total_payable, currency, partner, reason, message } |
duplicate_of.reason | number (stejné číslo dokladu dodavatele) nebo amount (stejná částka do 3 dnů) |
duplicate_of.message | Česká věta pro uživatele |
Chování
- Co změní
- Nic nezapisuje.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/documents/duplicates?kind=invoice_in&partner_id=6&original_number=FA-2026-0815&issue_date=2026-09-20&total=17545¤cy=CZK"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/duplicates?kind=invoice_in&partner_id=6&original_number=FA-2026-0815&issue_date=2026-09-20&total=17545¤cy=CZK', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"duplicate_of": null
}
GET Doklady k upomenutí s úroky z prodlení
/entities/{entity_id}/documents/reminders
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
Bez ids vrátí vydané faktury (invoice_out) po splatnosti, u nichž od splatnosti i od poslední upomínky uplynulo aspoň tolik dní, kolik je v nastavení automatizace (reminder_days, výchozí 7), seřazené podle splatnosti. S ids vrátí z uvedených dokladů firmy jen vydané faktury a vydané zálohové faktury po splatnosti; ostatní započte do skipped. U každého dokladu spočítá úrok z prodlení k dnešku podle NV č. 351/2013 Sb. (a u kontaktu s IČO náklady uplatnění pohledávky 1 200 Kč). Nic nezaznamenává – upomínku zapíše recordDocumentReminder nebo hromadná akce remind.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
ids | dotaz | text | ne | ID dokladů oddělená čárkou (nebo opakovaný parametr ids[]); použije se prvních 100 Příklad 15321533. |
Odpověď
200 application/json Doklady s úrokem a pořadím příští upomínky.
| Pole | Význam |
|---|---|
days | Počet dní po splatnosti z nastavení automatizace (reminder_days) |
entity | Údaje firmy pro hlavičku upomínky |
skipped | S ids počet uvedených ID, které nejsou vydanou fakturou nebo zálohovou fakturou po splatnosti (i cizí ID); bez ids 0 |
rows[].document | Detail dokladu (bez approval) |
rows[].interest | Výpočet úroku jako v getDocumentReminder, nebo null, když výpočet nejde |
rows[].next_level | Pořadí příští upomínky (zaznamenané upomínky + 1) |
Chování
- Co změní
- Nic nezapisuje.
- Limity
- Nejvýše 100 ID v parametru ids.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/remindersJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/reminders', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"days": 7,
"entity": {
"id": 1,
"accent_color": null,
"archived": false,
"bookkeeping": "double_entry",
"city": "Praha",
"company_id": null,
"country": "CZ",
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"databox": null,
"default_due_days": 14,
"dic": "CZ99999994",
"email": "demo@example.cz",
"first_name": null,
"fiscal_year_start": 1,
"flat_expense_rate": null,
"house_number": "859",
"ico": "99999994",
"invoice_footer": null,
"last_name": null,
"legal_form": "sro",
"locked_until": null,
"nace": "621000",
"name": "Ukázková firma s.r.o.",
"orientation_number": "22",
"owner_id": 1,
"phone": "+420 777 000 000",
"register_note": "Zapsáno v obchodním rejstříku vedeném Městským soudem v Praze, oddíl C, vložka 999999 (ukázková data).",
"street": "Na Příkopě",
"tax_office_code": "451",
"tax_office_workplace": "2001",
"title": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"vat_registered_on": "2023-01-01",
"vat_status": "monthly",
"web": null,
"zip": "11000",
"settings": {
"round_total": "always",
"invoice_language": "cs",
"number_format": "{prefix}{yyyy}{nnnn}",
"reminder_days": [
3,
14
],
"show_qr": true,
"invoice_style": "plain",
"invoice_font": "auto",
"invoice_density": "normal",
"invoice_table": "auto",
"invoice_corners": "auto",
"invoice_logo_size": "m",
"invoice_logo_name": false,
"invoice_row_numbers": false,
"invoice_paid_stamp": true,
"invoice_contacts": true,
"invoice_credit": true,
"demo": true,
"statement_category": "mikro",
"submitter": {
"first_name": "Jana",
"last_name": "Ukázková",
"relation": "jednatelka"
},
"tax_profile": {
"children": [
{
"order": 1,
"first_name": "Eliška",
"last_name": "Ukázková",
"birth_number": "1855120003"
}
],
"main_activity": true,
"birth_number": "8001010006"
},
"ossz_code": "110",
"cssz_variable_symbol": "1234567890",
"jmhz_workplace": {
"municipality": "Praha",
"municipality_code": "554782",
"country": "CZ"
}
},
"has_logo": false,
"legal_form_label": "s.r.o.",
"bookkeeping_label": "Podvojné účetnictví",
"vat_status_label": "Plátce DPH – měsíčně",
"vat_payer": true,
"double_entry": true,
"role": null,
"can_write": null,
"can_manage": null,
"member_user_id": null
},
"skipped": 0,
"rows": []
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
POST Hromadná akce s doklady
/entities/{entity_id}/documents/bulk
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Provede jednu akci s každým vybraným dokladem zvlášť – odmítnutí jednoho dokladu nezastaví ostatní a odpověď říká, co se povedlo a proč zbytek ne. issue vystaví koncepty jako issueDocument, ale nikdy neschvaluje (přijatý výdaj, který schválení potřebuje a nemá ho, odmítne) a nevystaví koncept přijatého dokladu, který vypadá jako duplicita (viz findDuplicateDocument). pay zaznamená úhradu zbývající částky k paid_on na bank_account_id (hotově, je-li to pokladna, jinak převodem). remind zaznamená upomínku u vydané faktury nebo zálohové faktury po splatnosti. delete smaže koncepty bez čísla. Parametr se jmenuje operation, protože název action je v Rails vyhrazený.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
Tělo požadavku
Formát application/json.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
operation | text | ano | Hromadná akce Hodnoty: issue, pay, remind, delete. |
ids | pole (celé číslo) | ano | ID dokladů firmy (lze i jeden řetězec s ID oddělenými čárkou); ID jiných firem se tiše vynechají |
paid_on | datum | ne | Jen pay – datum úhrady (výchozí dnes) |
bank_account_id | celé číslo | ne | Jen pay – bankovní účet nebo pokladna, na kterou se úhrada zaznamená; ID, které firmě nepatří, vrátí 404 u každé akce |
Odpověď
200 application/json Výsledek akce po dokladech.
| Pole | Význam |
|---|---|
operation | Provedená akce |
done | Počet dokladů, u kterých akce proběhla |
failed[] | { id, number, error } – doklady, u kterých akce neproběhla, s důvodem v češtině |
documents[] | { id, number, partner } – doklady, u kterých akce proběhla |
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Neznámá hodnota operation: „Neznámá hromadná akce – použijte issue, pay, remind nebo delete“ |
| 422 | – | Žádné z ids nepatří dokladu firmy: „Vyberte alespoň jeden doklad“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- issue: jako issueDocument u každého úspěšného dokladu (číslo, účetní zápisy, document.issued). pay: úhrada s poznámkou „Hromadně označeno jako zaplacené“, v podvojném účetnictví i její účetní zápis (payment.recorded). remind: počítadlo upomínek +1, datum poslední upomínky dnes, document.reminded. delete: smazání konceptu jako deleteDocument (document.deleted). Každý doklad se zpracuje samostatně; akce nad celou dávkou není atomická.
- Limity
- Použije prvních 300 ID z ids (další se ignorují); doklady zpracuje v pořadí podle data vystavení.
- Opakování
- Opakovaná akce issue nebo pay vrátí doklady ve failed („Doklad už je vystavený“, „Doklad je už uhrazený“); remind zaznamená při každém volání další upomínku; delete nenajde smazané doklady.
Příklad
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"operation":"pay","ids":[143],"paid_on":"2026-09-28","bank_account_id":2}' \
https://techtools.cz/ucetnictvi-api/entities/1/documents/bulkJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/bulk', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY, 'Content-Type': 'application/json' },
method: 'POST',
body: JSON.stringify({
"operation": "pay",
"ids": [
143
],
"paid_on": "2026-09-28",
"bank_account_id": 2
})
});
const data = await response.json();{
"operation": "pay",
"done": 1,
"failed": [],
"documents": [
{
"id": 143,
"number": "FV20260025",
"partner": "Nordwood Studio s.r.o."
}
]
}
POST Vystavení dokladu
/entities/{entity_id}/documents/{id}/issue
- Oprávnění
- Vlastník, účetní nebo editor
- Pravidlo
- Přijatý výdaj (invoice_in, cash_out, credit_in), na který se vztahuje pravidlo schvalování a který není schválený, smí vystavit jen jeho schvalovatel – vystavení se pak zaznamená jako schválení („Schváleno při vystavení“); ostatním vrátí 422.
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY - V příručce
- Vydané faktury › Vystavit fakturu; Vydané faktury › Koncept a vystavení; Zálohy, dobropisy a obchodní doklady › Vystavit zálohovou fakturu; Zálohy, dobropisy a obchodní doklady › Daňový doklad k přijaté platbě; Zálohy, dobropisy a obchodní doklady › Vyúčtovat zálohu konečnou fakturou; Zálohy, dobropisy a obchodní doklady › Přijatá zálohová faktura; Zálohy, dobropisy a obchodní doklady › Dobropisy (opravné daňové doklady); Zálohy, dobropisy a obchodní doklady › Vytvořit cenovou nabídku; Zálohy, dobropisy a obchodní doklady › Objednávka u dodavatele; Zálohy, dobropisy a obchodní doklady › Dodací list
Vystaví koncept: ověří, že má aspoň jeden řádek a že faktura, zálohová faktura, dobropis, daňový doklad k záloze a obchodní doklad má kontakt. Přidělí číslo z řady druhu a roku data vystavení (koncept vrácený z vystaveného dokladu si číslo ponechá), u prodeje doplní prázdný variabilní symbol z číslic čísla, u daňových dokladů doplní chybějící DUZP datem vystavení, uloží snímek kontaktu, přepočítá částky a nastaví stav issued. V podvojném účetnictví zaúčtuje předkontaci (prodej MD 311 / D výnosové účty a 343, nákup MD nákladové účty a 343 / D 321, pokladní doklad proti účtu pokladny, daňový doklad k záloze 324/343 nebo 343/314); zálohové faktury, interní a obchodní doklady ani daňová evidence se neúčtují. Pokladní doklad se označí za uhrazený; faktura nebo zálohová faktura vytvořená z nabídky označí nabídku, která ještě nemá výsledek, jako přijatou.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID konceptu Příklad 1540. |
Odpověď
200 application/json Detail vystaveného dokladu jako v getDocument (včetně approval).
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Doklad není koncept (i stornovaný): „Doklad už je vystavený“ |
| 422 | – | Doklad nemá řádky: „Doklad nemá žádnou položku“ |
| 422 | – | Chybí kontakt: „Doplňte odběratele nebo dodavatele“ |
| 422 | – | Řádek odečítá neexistující nebo nevystavený daňový doklad k záloze: „Odečítaná záloha neexistuje“ |
| 422 | – | Daňový doklad k záloze už je odečtený jinde: „Daňový doklad … je už odečtený na dokladu …“ |
| 422 | – | Výdaj ve schvalování, volající ho nesmí schválit: „Doklad musí před zaúčtováním schválit … – odešlete ho ke schválení“, „Doklad čeká na schválení – schvaluje …“, „Doklad se po schválení změnil – odešlete ho znovu ke schválení (schvaluje …)“ nebo „Doklad byl vrácen k opravě – upravte ho a odešlete znovu ke schválení“ |
| 422 | – | Datum dokladu v uzamčeném období: „Období do … je uzamčeno – doklad nelze měnit“ (tvar { error, errors }) |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Přidělí číslo (posune číselnou řadu), uloží stav issued a snímek kontaktu, v podvojném účetnictví vytvoří účetní zápisy, u pokladního dokladu nastaví uhrazenou částku a datum úhrady, u zdrojové nabídky nastaví výsledek accepted, zapíše document.issued (a případně document.approved se záznamem schválení). U přijatého výdaje v cizí měně se při zapnutém schvalování může dotázat kurz ČNB (jen pro posouzení limitu).
- Opakování
- Druhé volání vrátí 422 „Doklad už je vystavený“.
Příklad
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/145/issueJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/145/issue', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY },
method: 'POST'
});
const data = await response.json();{
"id": 145,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "issued",
"number": "FV20260026",
"variable_symbol": "20260026",
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 19800.0,
"total_vat": 4158.0,
"total_payable": 23958.0,
"total_gross_czk": 23958.0,
"paid_amount": 0.0,
"remaining": 23958.0,
"payment_state": "unpaid",
"days_overdue": 0,
"description": "Návrh úvodní stránky",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": "2026-09-28",
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 23958.0,
"total_net_czk": 19800.0,
"total_vat_czk": 4158.0,
"note": null,
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": "2026-09-28T10:00:00.000Z",
"updated_at": "2026-09-28T10:00:00.000Z",
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": 146,
"position": 0,
"description": "Návrh úvodní stránky",
"quantity": 12.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"attachments": [],
"share": null,
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": null,
"recurrence": null,
"approval": null
}
POST Storno dokladu
/entities/{entity_id}/documents/{id}/cancel
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY - V příručce
- Vydané faktury › Stornovat fakturu
Stornuje doklad: smaže jeho účetní zápisy a nastaví stav cancelled; číslo zůstává obsazené, takže v řadě nevznikne mezera. Nejde, pokud má doklad s úhradou zaznamenané úhrady, pokud k němu existuje vystavený opravný doklad (nejdřív se stornuje ten) nebo pokud je daňový doklad k záloze odečtený na jiném dokladu. Stav se nekontroluje – stornovat lze i koncept. Veřejný odkaz stornovaného dokladu vrací 404. Zpět do konceptu ho vrátí reopenDocument.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID dokladu Příklad 1532. |
Odpověď
200 application/json Detail stornovaného dokladu jako v getDocument.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Doklad s úhradou má zaznamenané úhrady: „Nejprve zrušte úhrady dokladu“ |
| 422 | – | K dokladu existuje vystavený dobropis: „K dokladu je vystavený opravný doklad … – nejdřív stornujte ten“ |
| 422 | – | Daňový doklad k záloze je odečtený na jiném dokladu: „Záloha je odečtená na dokladu … – nejdřív upravte ten“ |
| 422 | – | Účetní zápisy v uzamčeném období: „Období do … je uzamčeno – zaúčtování nelze změnit“; nebo datum dokladu v uzamčeném období: „Období do … je uzamčeno – doklad nelze měnit“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Smaže účetní zápisy dokladu, nastaví stav cancelled a zapíše document.cancelled.
- Opakování
- Opakované volání na stornovaný doklad znovu uspěje a zapíše další událost.
Příklad
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/143/cancelJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/143/cancel', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY },
method: 'POST'
});
const data = await response.json();{
"id": 143,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "cancelled",
"number": "FV20260025",
"variable_symbol": "20260025",
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 19800.0,
"total_vat": 4158.0,
"total_payable": 23958.0,
"total_gross_czk": 23958.0,
"paid_amount": 0.0,
"remaining": 23958.0,
"payment_state": "na",
"days_overdue": 0,
"description": "Správa webu – září",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": "2026-09-28",
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 23958.0,
"total_net_czk": 19800.0,
"total_vat_czk": 4158.0,
"note": null,
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": "2026-09-28T10:00:00.000Z",
"updated_at": "2026-09-28T10:00:00.000Z",
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": 144,
"position": 0,
"description": "Správa webu – září",
"quantity": 12.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"attachments": [],
"share": {
"token": "3bND5_Cv7iT39piyS-wZbFjQ1NizQFVX",
"shared_at": "2026-09-28T10:00:00.000Z",
"viewed_at": null,
"views": 0
},
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": null,
"recurrence": null,
"approval": null
}
POST Vrácení dokladu do konceptu
/entities/{entity_id}/documents/{id}/reopen
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Vrátí vystavený (nebo stornovaný) doklad do stavu koncept: smaže jeho účetní zápisy a číslo ponechá. Doklad pak lze upravit a znovu vystavit se stejným číslem; koncept s číslem smazat nelze. Podmínky jsou stejné jako u storna: žádné úhrady, žádný vystavený opravný doklad, daňový doklad k záloze neodečtený jinde a neuzamčené období.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID dokladu Příklad 1532. |
Odpověď
200 application/json Detail dokladu ve stavu draft jako v getDocument.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Doklad s úhradou má úhrady: „Doklad s úhradami nelze vrátit do konceptu“ |
| 422 | – | K dokladu existuje vystavený dobropis: „K dokladu je vystavený opravný doklad … – nejdřív stornujte ten“ |
| 422 | – | Daňový doklad k záloze je odečtený jinde: „Záloha je odečtená na dokladu … – nejdřív upravte ten“ |
| 422 | – | Uzamčené období: „Období do … je uzamčeno – zaúčtování nelze změnit“ nebo „Období do … je uzamčeno – doklad nelze měnit“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Smaže účetní zápisy dokladu, nastaví stav draft a zapíše document.reopened.
- Opakování
- Opakované volání na koncept uspěje bez další změny (zapíše další událost).
Příklad
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/143/reopenJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/143/reopen', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY },
method: 'POST'
});
const data = await response.json();{
"id": 143,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "draft",
"number": "FV20260025",
"variable_symbol": "20260025",
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 19800.0,
"total_vat": 4158.0,
"total_payable": 23958.0,
"total_gross_czk": 23958.0,
"paid_amount": 0.0,
"remaining": 23958.0,
"payment_state": "na",
"days_overdue": 0,
"description": "Správa webu – září",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": "2026-09-28",
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 23958.0,
"total_net_czk": 19800.0,
"total_vat_czk": 4158.0,
"note": null,
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": "2026-09-28T10:00:00.000Z",
"updated_at": "2026-09-28T10:00:00.000Z",
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": 144,
"position": 0,
"description": "Správa webu – září",
"quantity": 12.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"attachments": [],
"share": {
"token": "3bND5_Cv7iT39piyS-wZbFjQ1NizQFVX",
"shared_at": "2026-09-28T10:00:00.000Z",
"viewed_at": null,
"views": 0
},
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": null,
"recurrence": null,
"approval": null
}
POST Zaznamenání odeslané upomínky
/entities/{entity_id}/documents/{id}/remind
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Zvýší počítadlo upomínek dokladu o 1 a nastaví datum poslední upomínky na dnešek. Upomínku nikam neposílá – jen zaznamená, že ji firma odeslala (podklady vrací getDocumentReminder). Na rozdíl od hromadné akce remind nekontroluje druh, stav ani splatnost dokladu.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID dokladu Příklad 1532. |
Odpověď
200 application/json Detail dokladu jako v getDocument, ale bez approval.
Chování
- Co změní
- Zvýší reminders_sent, nastaví last_reminder_on a zapíše document.reminded.
- Opakování
- Každé volání zaznamená další upomínku.
Příklad
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/143/remindJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/143/remind', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY },
method: 'POST'
});
const data = await response.json();{
"id": 143,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "issued",
"number": "FV20260025",
"variable_symbol": "20260025",
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 19800.0,
"total_vat": 4158.0,
"total_payable": 23958.0,
"total_gross_czk": 23958.0,
"paid_amount": 0.0,
"remaining": 23958.0,
"payment_state": "unpaid",
"days_overdue": 0,
"description": "Správa webu – září",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 1,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": "2026-09-28",
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 23958.0,
"total_net_czk": 19800.0,
"total_vat_czk": 4158.0,
"note": null,
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": "2026-09-28T10:00:00.000Z",
"updated_at": "2026-09-28T10:00:00.000Z",
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": 144,
"position": 0,
"description": "Správa webu – září",
"quantity": 12.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"attachments": [],
"share": {
"token": "3bND5_Cv7iT39piyS-wZbFjQ1NizQFVX",
"shared_at": "2026-09-28T10:00:00.000Z",
"viewed_at": null,
"views": 0
},
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": null,
"recurrence": null
}
POST Zúčtování uhrazené zálohy úhradou faktury
/entities/{entity_id}/documents/{id}/settle
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Uhradí fakturu z uhrazené zálohové faktury, ke které není vystavený daňový doklad k záloze (typicky u neplátce DPH): k faktuře zaznamená úhradu způsobem „Uhrazeno zálohou“ ve výši menší z uhrazené zálohy a zbývající částky faktury, s datem vystavení faktury a kurzem, za který byla záloha přijata. Existuje-li daňový doklad k záloze, záloha se místo toho odečte řádkem na konečné faktuře (prepareFinalInvoice). Směr, kontakt ani vazba zálohové faktury na fakturu se neporovnávají.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID vystavené faktury (dokladu s úhradou) Příklad 1532. |
Tělo požadavku
Formát application/json.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
proforma_id | celé číslo | ano | ID zálohové faktury firmy (proforma_out nebo proforma_in); jiný druh vrátí 404 |
Odpověď
200 application/json Detail faktury s novou úhradou jako v getDocument, ale bez approval.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Zálohová faktura nemá úhradu: „Zálohová faktura zatím není uhrazená“ |
| 422 | – | Tato záloha už je na faktuře zúčtovaná: „Záloha už byla vyúčtována“ |
| 422 | – | K záloze existuje vystavený daňový doklad: „K záloze je vystavený daňový doklad – odečtěte ji na konečné faktuře“ |
| 422 | – | Faktura už odečítá zálohu řádkem: „Záloha je už odečtená v položkách faktury“ |
| 422 | – | Na faktuře nic nezbývá: „Faktura už je uhrazená“ |
| 422 | – | Faktura není vystavená nebo nemá úhrady: „Doklad není vystavený“, „K tomuto dokladu se úhrady neevidují“ |
| 422 | – | Datum vystavení faktury v uzamčeném období: „Období do … je uzamčeno – úhradu z … nelze měnit“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Vytvoří úhradu faktury (payment_method advance, poznámka = číslo zálohové faktury), v podvojném účetnictví zaúčtuje MD 324 / D 311 (u přijaté faktury MD 321 / D 314) a případný kurzový rozdíl, přepočte uhrazenou částku faktury a zapíše payment.recorded.
- Opakování
- Druhé volání se stejnou fakturou a zálohou vrátí 422 „Záloha už byla vyúčtována“.
Příklad
Ukázková zálohová faktura je uhrazená a nemá vystavený daňový doklad k záloze, takže se faktura uhradí zálohou (úhrada advance s číslem zálohové faktury v poznámce).
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"proforma_id":147}' \
https://techtools.cz/ucetnictvi-api/entities/1/documents/143/settleJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/143/settle', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY, 'Content-Type': 'application/json' },
method: 'POST',
body: JSON.stringify({
"proforma_id": 147
})
});
const data = await response.json();{
"id": 143,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "issued",
"number": "FV20260025",
"variable_symbol": "20260025",
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 19800.0,
"total_vat": 4158.0,
"total_payable": 23958.0,
"total_gross_czk": 23958.0,
"paid_amount": 23958.0,
"remaining": 0.0,
"payment_state": "paid",
"days_overdue": 0,
"description": "Správa webu – září",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": "2026-09-28",
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 23958.0,
"total_net_czk": 19800.0,
"total_vat_czk": 4158.0,
"note": null,
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": "2026-09-28",
"created_at": "2026-09-28T10:00:00.000Z",
"updated_at": "2026-09-28T10:00:00.000Z",
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": 144,
"position": 0,
"description": "Správa webu – září",
"quantity": 12.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"attachments": [],
"share": {
"token": "3bND5_Cv7iT39piyS-wZbFjQ1NizQFVX",
"shared_at": "2026-09-28T10:00:00.000Z",
"viewed_at": null,
"views": 0
},
"payments": [
{
"id": 126,
"document_id": 143,
"bank_transaction_id": null,
"bank_account_id": null,
"paid_on": "2026-09-28",
"amount": 23958.0,
"amount_czk": 23958.0,
"exchange_rate": 1.0,
"payment_method": "advance",
"note": "ZV20260002"
}
],
"vat_recap": [
{
"rate": 21.0,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": null,
"recurrence": null
}
GET Kopie dokladu jako nový koncept
/entities/{entity_id}/documents/{id}/duplicate
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
- V příručce
- Vydané faktury › Duplikovat fakturu
Vrátí neuložený koncept stejného druhu: kontakt, měna a kurz (beze změny), režim DPH, kód PDP, ceny s DPH, způsob úhrady, bankovní účet, popis, poznámka, jazyk, středisko, projekt, konstantní symbol a řádky (bez vazby na odečítané zálohy). Datum vystavení a u daňových dokladů DUZP je dnešní, splatnost dnes + splatnost kontaktu (jinak firmy). Částky nejsou přepočítané (součty 0) – dopočítají se při uložení přes createDocument. Připojí number_preview. Nic neukládá.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID kopírovaného dokladu Příklad 1532. |
Odpověď
200 application/json Koncept ve tvaru getDocument (id null, bez approval) a navíc number_preview.
| Pole | Význam |
|---|---|
number_preview | Náhled čísla z řady druhu k dnešku |
Chování
- Co změní
- Nic nezapisuje.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/143/duplicateJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/143/duplicate', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"id": null,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "draft",
"number": null,
"variable_symbol": null,
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 0.0,
"total_vat": 0.0,
"total_payable": 0.0,
"total_gross_czk": 0.0,
"paid_amount": 0.0,
"remaining": 0.0,
"payment_state": "na",
"days_overdue": 0,
"description": "Správa webu – září",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": null,
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 0.0,
"total_net_czk": 0.0,
"total_vat_czk": 0.0,
"note": null,
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": null,
"updated_at": null,
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": null,
"position": 0,
"description": "Správa webu – září",
"quantity": 12.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 0.0,
"vat": 0.0,
"gross": 0.0,
"net_czk": 0.0,
"vat_czk": 0.0
}
],
"attachments": [],
"share": null,
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 0.0,
"vat": 0.0,
"gross": 0.0,
"net_czk": 0.0,
"vat_czk": 0.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": null,
"recurrence": null,
"number_preview": "FV20260026"
}
GET Dobropis k faktuře jako nový koncept
/entities/{entity_id}/documents/{id}/credit_note
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
K faktuře vydané (invoice_out) vrátí koncept opravného daňového dokladu vydaného (credit_out), k faktuře přijaté (invoice_in) koncept přijatého (credit_in): kopii faktury jako v prepareDocumentCopy se zápornými množstvími, vazbou related_document na fakturu a poznámkou „Opravný daňový doklad k dokladu č. … ze dne …“. Stav faktury se nekontroluje. Částky nejsou přepočítané. Nic neukládá.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID faktury Příklad 1532. |
Odpověď
200 application/json Koncept dobropisu ve tvaru getDocument (id null, bez approval) a navíc number_preview.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Doklad není invoice_out ani invoice_in: „Dobropis lze vystavit jen k faktuře“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Nic nezapisuje.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/143/credit_noteJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/143/credit_note', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"id": null,
"kind": "credit_out",
"kind_label": "Opravný daňový doklad vydaný",
"status": "draft",
"number": null,
"variable_symbol": null,
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 0.0,
"total_vat": 0.0,
"total_payable": 0.0,
"total_gross_czk": 0.0,
"paid_amount": 0.0,
"remaining": 0.0,
"payment_state": "na",
"days_overdue": 0,
"description": "Správa webu – září",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": 143,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": null,
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 0.0,
"total_net_czk": 0.0,
"total_vat_czk": 0.0,
"note": "Opravný daňový doklad k dokladu č. FV20260025 ze dne 28. 9. 2026.",
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": null,
"updated_at": null,
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": null,
"position": 0,
"description": "Správa webu – září",
"quantity": -12.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 0.0,
"vat": 0.0,
"gross": 0.0,
"net_czk": 0.0,
"vat_czk": 0.0
}
],
"attachments": [],
"share": null,
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 0.0,
"vat": 0.0,
"gross": 0.0,
"net_czk": 0.0,
"vat_czk": 0.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": {
"id": 143,
"number": "FV20260025",
"kind": "invoice_out"
},
"recurrence": null,
"number_preview": "OV20260002"
}
GET Konečná faktura k zálohové faktuře jako koncept
/entities/{entity_id}/documents/{id}/final_invoice
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
K zálohové faktuře vrátí koncept konečné faktury (proforma_out → invoice_out, proforma_in → invoice_in): kopii zálohové faktury s vazbou na ni, poznámkou zálohové faktury doplněnou o větu „Vyúčtování zálohové faktury č. …“ a řádkem odpočtu (množství −1, cena s DPH nebo bez podle prices_include_vat) za každý řádek každého vystaveného daňového dokladu k záloze, který ještě není odečtený na nestornovaném dokladu (ani na konceptu). Odpočet jde v podvojném účetnictví na účet 324 (přijaté zálohy) nebo 314 (poskytnuté zálohy), v daňové evidenci do kategorie hlavního řádku zálohové faktury. Částky nejsou přepočítané. Nic neukládá.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID zálohové faktury Příklad 1490. |
Odpověď
200 application/json Koncept konečné faktury ve tvaru getDocument (id null, bez approval) a navíc number_preview.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Doklad není zálohová faktura: „Vyúčtovat lze jen zálohovou fakturu“ |
| 422 | – | Existuje vystavená konečná faktura a není co dalšího odečíst: „Záloha už je vyúčtovaná dokladem …“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Nic nezapisuje.
Příklad
Ukázková zálohová faktura je uhrazená, ale nemá vystavený daňový doklad k záloze ani konečnou fakturu, takže koncept neobsahuje řádek odpočtu.
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/147/final_invoiceJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/147/final_invoice', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"id": null,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "draft",
"number": null,
"variable_symbol": null,
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 0.0,
"total_vat": 0.0,
"total_payable": 0.0,
"total_gross_czk": 0.0,
"paid_amount": 0.0,
"remaining": 0.0,
"payment_state": "na",
"days_overdue": 0,
"description": "Záloha na e-shop",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": 147,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": null,
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 0.0,
"total_net_czk": 0.0,
"total_vat_czk": 0.0,
"note": "Vyúčtování zálohové faktury č. ZV20260002.",
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": null,
"updated_at": null,
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": null,
"position": 0,
"description": "Záloha na e-shop (50 %)",
"quantity": 1.0,
"unit": "ks",
"unit_price": 40000.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 0.0,
"vat": 0.0,
"gross": 0.0,
"net_czk": 0.0,
"vat_czk": 0.0
}
],
"attachments": [],
"share": null,
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 0.0,
"vat": 0.0,
"gross": 0.0,
"net_czk": 0.0,
"vat_czk": 0.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": {
"id": 147,
"number": "ZV20260002",
"kind": "proforma_out"
},
"recurrence": null,
"number_preview": "FV20260026"
}
GET Daňový doklad k přijaté platbě zálohy jako koncept
/entities/{entity_id}/documents/{id}/advance_document
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
K uhrazené zálohové faktuře vrátí koncept daňového dokladu k platbě (advance_out u vydané, advance_in u přijaté) na částku zaplacenou a dosud nepokrytou vystavenými daňovými doklady k této záloze. Datum vystavení i DUZP je datum poslední platby zálohy, ceny jsou včetně DPH a částka se rozdělí do sazeb DPH v poměru řádků zálohové faktury (účet 324, resp. 314). Částky nejsou přepočítané. Nic neukládá.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID zálohové faktury Příklad 1490. |
Odpověď
200 application/json Koncept daňového dokladu k záloze ve tvaru getDocument (id null, bez approval) a navíc number_preview.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Doklad není zálohová faktura nebo nemá úhradu: „Daňový doklad lze vystavit jen k uhrazené zálohové faktuře“ |
| 422 | – | Všechny platby už mají daňový doklad: „Ke všem přijatým platbám zálohy už daňový doklad existuje“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Nic nezapisuje.
Příklad
Vyžaduje uhrazenou zálohovou fakturu, jejíž platby ještě nemají daňový doklad.
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/147/advance_documentJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/147/advance_document', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"id": null,
"kind": "advance_out",
"kind_label": "Daňový doklad k přijaté platbě",
"status": "draft",
"number": null,
"variable_symbol": null,
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-15",
"taxable_date": "2026-09-15",
"due_date": null,
"currency": "CZK",
"total_net": 0.0,
"total_vat": 0.0,
"total_payable": 0.0,
"total_gross_czk": 0.0,
"paid_amount": 0.0,
"remaining": 0.0,
"payment_state": "na",
"days_overdue": 0,
"description": null,
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": 147,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": null,
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": true,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": null,
"rounding": 0.0,
"total_gross": 0.0,
"total_net_czk": 0.0,
"total_vat_czk": 0.0,
"note": "Daňový doklad k přijaté platbě k zálohové faktuře č. ZV20260002.",
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": null,
"updated_at": null,
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": null,
"position": 0,
"description": "Záloha dle zálohové faktury č. ZV20260002",
"quantity": 1.0,
"unit": null,
"unit_price": 48400.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "324",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 0.0,
"vat": 0.0,
"gross": 0.0,
"net_czk": 0.0,
"vat_czk": 0.0
}
],
"attachments": [],
"share": null,
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 0.0,
"vat": 0.0,
"gross": 0.0,
"net_czk": 0.0,
"vat_czk": 0.0
}
],
"bank_account": null,
"related_document": {
"id": 147,
"number": "ZV20260002",
"kind": "proforma_out"
},
"recurrence": null,
"number_preview": "DZ20260002"
}
GET Podklady pro upomínku dokladu
/entities/{entity_id}/documents/{id}/reminder
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
Vrátí doklad, údaje firmy, pořadí příští upomínky a výpočet úroku z prodlení k dnešku ze zbývající částky podle NV č. 351/2013 Sb.: repo sazba ČNB platná první den pololetí, v němž prodlení začalo, + 8 p. b., za dny od dne po splatnosti do dneška; náklady spojené s uplatněním pohledávky 1 200 Kč jen u kontaktu s IČO, a to až po splatnosti. interest je null, když doklad nemá splatnost, nic nezbývá uhradit nebo výpočet nejde (např. splatnost před rokem 2014). Nic nezaznamenává.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID dokladu Příklad 1532. |
Odpověď
200 application/json Podklady pro upomínku.
| Pole | Význam |
|---|---|
document | Detail dokladu (bez approval) |
entity | Údaje firmy |
next_level | Pořadí příští upomínky (zaznamenané upomínky + 1) |
interest.principal | Jistina = zbývající částka dokladu |
interest.currency | Měna výpočtu – vždy CZK (měna dokladu se nepředává) |
interest.delay_from | První den prodlení, nebo null, když prodlení ještě nenastalo |
interest.days | Počet dní prodlení |
interest.reference_date | První den pololetí, podle kterého se bere repo sazba |
interest.repo_rate | Repo sazba ČNB v % |
interest.rate | Roční sazba úroku v % (repo + 8) |
interest.periods[] | { from, to, days, rate, interest } po kalendářních pololetích |
interest.interest | Úrok celkem (2 desetinná místa) |
interest.recovery_cost | Náklady uplatnění pohledávky: 1200 u kontaktu s IČO, když prodlení už nastalo, jinak 0 |
interest.basis[] | Právní podklady výpočtu (texty) |
Chování
- Co změní
- Nic nezapisuje.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/143/reminderJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/143/reminder', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"document": {
"id": 143,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "issued",
"number": "FV20260025",
"variable_symbol": "20260025",
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 19800.0,
"total_vat": 4158.0,
"total_payable": 23958.0,
"total_gross_czk": 23958.0,
"paid_amount": 0.0,
"remaining": 23958.0,
"payment_state": "unpaid",
"days_overdue": 0,
"description": "Správa webu – září",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": "2026-09-28",
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 23958.0,
"total_net_czk": 19800.0,
"total_vat_czk": 4158.0,
"note": null,
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": "2026-09-28T10:00:00.000Z",
"updated_at": "2026-09-28T10:00:00.000Z",
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": 144,
"position": 0,
"description": "Správa webu – září",
"quantity": 12.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"attachments": [],
"share": {
"token": "3bND5_Cv7iT39piyS-wZbFjQ1NizQFVX",
"shared_at": "2026-09-28T10:00:00.000Z",
"viewed_at": null,
"views": 0
},
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": null,
"recurrence": null
},
"interest": {
"principal": 23958.0,
"currency": "CZK",
"delay_from": null,
"days": 0,
"reference_date": "2026-07-01",
"repo_rate": 3.75,
"rate": 11.75,
"periods": [],
"interest": 0.0,
"recovery_cost": 0.0,
"basis": [
"§ 2 odst. 1 nařízení vlády č. 351/2013 Sb. (repo sazba ČNB platná první den kalendářního pololetí, v němž došlo k prodlení, + 8 p. b., po celou dobu prodlení)",
"§ 3 nařízení vlády č. 351/2013 Sb. (vzájemný závazek podnikatelů nebo podnikatele a veřejného zadavatele)"
]
},
"entity": {
"id": 1,
"accent_color": null,
"archived": false,
"bookkeeping": "double_entry",
"city": "Praha",
"company_id": null,
"country": "CZ",
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"databox": null,
"default_due_days": 14,
"dic": "CZ99999994",
"email": "demo@example.cz",
"first_name": null,
"fiscal_year_start": 1,
"flat_expense_rate": null,
"house_number": "859",
"ico": "99999994",
"invoice_footer": null,
"last_name": null,
"legal_form": "sro",
"locked_until": null,
"nace": "621000",
"name": "Ukázková firma s.r.o.",
"orientation_number": "22",
"owner_id": 1,
"phone": "+420 777 000 000",
"register_note": "Zapsáno v obchodním rejstříku vedeném Městským soudem v Praze, oddíl C, vložka 999999 (ukázková data).",
"street": "Na Příkopě",
"tax_office_code": "451",
"tax_office_workplace": "2001",
"title": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"vat_registered_on": "2023-01-01",
"vat_status": "monthly",
"web": null,
"zip": "11000",
"settings": {
"round_total": "always",
"invoice_language": "cs",
"number_format": "{prefix}{yyyy}{nnnn}",
"reminder_days": [
3,
14
],
"show_qr": true,
"invoice_style": "plain",
"invoice_font": "auto",
"invoice_density": "normal",
"invoice_table": "auto",
"invoice_corners": "auto",
"invoice_logo_size": "m",
"invoice_logo_name": false,
"invoice_row_numbers": false,
"invoice_paid_stamp": true,
"invoice_contacts": true,
"invoice_credit": true,
"demo": true,
"statement_category": "mikro",
"submitter": {
"first_name": "Jana",
"last_name": "Ukázková",
"relation": "jednatelka"
},
"tax_profile": {
"children": [
{
…
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
GET Řetězec QR Platby k dokladu
/entities/{entity_id}/documents/{id}/qr
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
- V příručce
- Vydané faktury › QR Platba na faktuře
Vrátí řetězec QR Platby (SPAYD 1.0) k zaplacení dokladu: účet (IBAN a BIC) bankovního účtu dokladu, u pokladny nebo bez účtu výchozí nebo první aktivní bankovní účet firmy; částka = zbývající částka, a není-li kladná, celková částka k úhradě; dále měna, splatnost, variabilní, konstantní a specifický symbol, jméno firmy a zpráva „druh a číslo dokladu“. Vrátí spayd null, když takto vybraný účet nemá IBAN ani číslo účtu s kódem banky (nebo firma aktivní bankovní účet nemá), měna není CZK ani EUR, nebo částka není kladná (např. dobropis). Stav dokladu se nekontroluje; obrázek QR kódu API nevytváří.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID dokladu Příklad 1532. |
Odpověď
200 application/json Objekt s řetězcem QR Platby.
| Pole | Význam |
|---|---|
spayd | Např. SPD*1.0*ACC:CZ…*AM:15972.00*CC:CZK*…, nebo null |
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Neplatný účet firmy: „Neplatný IBAN: …“ nebo „Neplatný BIC: …“ |
| 422 | – | Částka nad limit QR Platby: „Částka pro QR Platbu smí být nejvýše 9 999 999,99“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Nic nezapisuje.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/143/qrJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/143/qr', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"spayd": "SPD*1.0*ACC:CZ3820100000002900001227*AM:23958.00*CC:CZK*RN:Uk%C3%A1zkov%C3%A1 firma s.r.o.*DT:20261012*MSG:Faktura FV20260025*X-VS:20260025"
}
GET Stažení dokladu ve formátu ISDOC
/entities/{entity_id}/documents/{id}/isdoc
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
- V příručce
- Vydané faktury › Stáhnout ISDOC
Vrátí vydaný doklad (invoice_out, credit_out, proforma_out, advance_out) jako soubor ISDOC (XML) ke stažení s názvem „číslo.isdoc“. Dodavatel je firma, odběratel kontakt dokladu, platební údaje jsou z bankovního účtu dokladu nebo výchozího účtu firmy. Doklad musí mít číslo (tedy být někdy vystaven) a řádky; dobropis musí odkazovat na původní doklad. Doklad bez uloženého UUID (to má jen doklad importovaný z ISDOC) dostane při každém stažení nové náhodné UUID.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID dokladu Příklad 1532. |
Odpověď
200 application/xml Soubor ISDOC (Content-Disposition attachment).
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Jiný druh než vydaná faktura, zálohová faktura, dobropis nebo daňový doklad k záloze: „ISDOC lze vytvořit jen pro vydané doklady“ |
| 422 | – | Koncept bez čísla: „Doklad nemá číslo“ |
| 422 | – | „Doklad nemá žádné položky“, „Dodavatel nemá název“, „Opravný doklad musí odkazovat na původní doklad“, „Doklad v cizí měně musí mít kladný kurz“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Nic nezapisuje.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/143/isdocJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/143/isdoc', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="http://isdoc.cz/namespace/2013" version="6.0.2">
<DocumentType>1</DocumentType>
<ID>FV20260025</ID>
<UUID>A2EAC2DF-BC15-43F1-A175-992B9ED85EBA</UUID>
<IssuingSystem>Saldo – TechTools.cz</IssuingSystem>
<IssueDate>2026-09-28</IssueDate>
<TaxPointDate>2026-09-28</TaxPointDate>
<VATApplicable>true</VATApplicable>
<ElectronicPossibilityAgreementReference/>
<LocalCurrencyCode>CZK</LocalCurrencyCode>
<CurrRate>1</CurrRate>
<RefCurrRate>1</RefCurrRate>
<AccountingSupplierParty>
<Party>
<PartyIdentification>
<ID>99999994</ID>
</PartyIdentification>
<PartyName>
<Name>Ukázková firma s.r.o.</Name>
</PartyName>
<PostalAddress>
<StreetName>Na Příkopě</StreetName>
<BuildingNumber>859/22</BuildingNumber>
<CityName>Praha</CityName>
<PostalZone>11000</PostalZone>
<Country>
<IdentificationCode>CZ</IdentificationCode>
<Name>Česká republika</Name>
</Country>
</PostalAddress>
<PartyTaxScheme>
<CompanyID>CZ99999994</CompanyID>
<TaxScheme>VAT</TaxScheme>
</PartyTaxScheme>
<RegisterIdentification>
<Preformatted>Zapsáno v obchodním rejstříku vedeném Městským soudem v Praze, oddíl C, vložka 999999 (ukázková data).</Preformatted>
</RegisterIdentification>
<Contact>
<Telephone>+420 777 000 000</Telephone>
<ElectronicMail>demo@example.cz</ElectronicMail>
</Contact>
</Party>
</AccountingSupplierParty>
<AccountingCustomerParty>
<Party>
<PartyIdentification>
<ID>90000013</ID>
</PartyIdentification>
<PartyName>
<Name>Nordwood Studio s.r.o.</Name>
</PartyName>
<PostalAddress>
<StreetName>Korunní</StreetName>
<BuildingNumber>1208/74</BuildingNumber>
<CityName>Praha 10</CityName>
<PostalZone>10100</PostalZone>
<Country>
<IdentificationCode>CZ</IdentificationCode>
<Name>Česká republika</Name>
</Country>
</PostalAddress>
<PartyTaxScheme>
<CompanyID>CZ90000013</CompanyID>
<TaxScheme>VAT</TaxScheme>
</PartyTaxScheme>
<Contact>
<ElectronicMail>fakturace@example.cz</ElectronicMail>
</Contact>
</Party>
</AccountingCustomerParty>
<InvoiceLines>
<InvoiceLine>
<ID>1</ID>
<InvoicedQuantity unitCode="hod">12</InvoicedQuantity>
<LineExtensionAmount>19800.00</LineExtensionAmount>
<LineExtensionAmountTaxInclusive>23958.00</LineExtensionAmountTaxInclusive>
<LineExtensionTaxAmount>4158.00</LineExtensionTaxAmount>
<UnitPrice>1650</UnitPrice>
<UnitPriceTaxInclusive>1996.5</UnitPriceTaxInclusive>
<ClassifiedTaxCategory>
<Percent>21</Percent>
<VATCalculationMethod>0</VATCalculationMethod>
<VATApplicable>true</VATApplicable>
</ClassifiedTaxCategory>
<Item>
…
POST Zaznamenání úhrady dokladu
/entities/{entity_id}/documents/{id}/payments
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
K vystavenému dokladu s úhradou (faktura, zálohová faktura, dobropis – vydané i přijaté) zaznamená úhradu v měně dokladu: záporná částka je vratka, nulová se odmítne, přeplatek se nekontroluje. U dokladu v cizí měně lze v amount_czk zadat skutečně připsanou nebo odepsanou částku v Kč; rozdíl proti kurzu dokladu se v podvojném účetnictví zaúčtuje jako kurzový zisk (663) nebo ztráta (563); u zálohové faktury se celá částka v Kč zaúčtuje proti 324/314 bez kurzového rozdílu. Úhrada není spárovaná s bankovním pohybem. Vrátí celý doklad s přepočtenou uhrazenou částkou.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID dokladu Příklad 1532. |
Tělo požadavku
Formát application/json.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
amount | číslo | ano | Částka v měně dokladu (2 desetinná místa; nečíselná hodnota se bere jako 0) |
paid_on | datum | ne | Datum úhrady (výchozí dnes) |
payment_method | text | ne | Způsob úhrady; výchozí cash, je-li bank_account_id pokladna, jinak bank Hodnoty: bank, cash, card, cod, offset, advance, other. |
bank_account_id | celé číslo | ne | Bankovní účet nebo pokladna firmy; určuje peněžní účet zápisu (jinak 221, u hotovosti 211) |
amount_czk | číslo | ne | Skutečná částka v Kč, určená pro doklad v cizí měně; bez ní se přepočte kurzem dokladu. Server ji přijme i u dokladu v Kč – odlišná hodnota se pak v podvojném účetnictví zaúčtuje jako kurzový rozdíl. |
note | text | ne | Poznámka k úhradě |
Odpověď
201 application/json Detail dokladu jako v getDocument, ale bez approval (úhrada je v payments[]).
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Doklad není vystavený: „Doklad není vystavený“ |
| 422 | – | Druh bez úhrad (pokladní, interní, obchodní doklad, daňový doklad k záloze): „K tomuto dokladu se úhrady neevidují“ |
| 422 | – | Částka je 0 nebo nečíselná: „Částka úhrady nesmí být nulová“ |
| 422 | – | Datum úhrady v uzamčeném období: „Období do … je uzamčeno – úhradu z … nelze měnit“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Vytvoří úhradu, v podvojném účetnictví její účetní zápis (např. MD 221 / D 311, u vydané zálohové faktury D 324, u přijaté faktury MD 321 / D 221) a případný kurzový rozdíl, přepočte uhrazenou částku a datum úhrady dokladu a zapíše payment.recorded.
- Opakování
- Každé volání zaznamená další úhradu.
Příklad
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"amount":1000,"paid_on":"2026-09-28","bank_account_id":2,"note":"Částečná úhrada"}' \
https://techtools.cz/ucetnictvi-api/entities/1/documents/143/paymentsJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/143/payments', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY, 'Content-Type': 'application/json' },
method: 'POST',
body: JSON.stringify({
"amount": 1000,
"paid_on": "2026-09-28",
"bank_account_id": 2,
"note": "Částečná úhrada"
})
});
const data = await response.json();{
"id": 143,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "issued",
"number": "FV20260025",
"variable_symbol": "20260025",
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": "2026-09-28",
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 19800.0,
"total_vat": 4158.0,
"total_payable": 23958.0,
"total_gross_czk": 23958.0,
"paid_amount": 1000.0,
"remaining": 22958.0,
"payment_state": "partial",
"days_overdue": 0,
"description": "Správa webu – září",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": "2026-09-28",
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 23958.0,
"total_net_czk": 19800.0,
"total_vat_czk": 4158.0,
"note": null,
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": "2026-09-28T10:00:00.000Z",
"updated_at": "2026-09-28T10:00:00.000Z",
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": 144,
"position": 0,
"description": "Správa webu – září",
"quantity": 12.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"attachments": [],
"share": {
"token": "3bND5_Cv7iT39piyS-wZbFjQ1NizQFVX",
"shared_at": "2026-09-28T10:00:00.000Z",
"viewed_at": null,
"views": 0
},
"payments": [
{
"id": 126,
"document_id": 143,
"bank_transaction_id": null,
"bank_account_id": 2,
"paid_on": "2026-09-28",
"amount": 1000.0,
"amount_czk": 1000.0,
"exchange_rate": 1.0,
"payment_method": "bank",
"note": "Částečná úhrada"
}
],
"vat_recap": [
{
"rate": 21.0,
"net": 19800.0,
"vat": 4158.0,
"gross": 23958.0,
"net_czk": 19800.0,
"vat_czk": 4158.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": null,
"recurrence": null
}
DELETE Zrušení úhrady dokladu
/entities/{entity_id}/documents/{id}/payments/{payment_id}
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY - V příručce
- Vydané faktury › Zrušit úhradu
Smaže úhradu dokladu s jejími účetními zápisy a přepočte uhrazenou částku. Vznikla-li úhrada spárováním s bankovním pohybem, pohyb se vrátí mezi nespárované, pokud ho jiné úhrady nepokrývají. Úhradu s datem v uzamčeném období zrušit nelze. Vrátí celý doklad.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID dokladu Příklad 1532. |
payment_id | cesta | celé číslo | ano | ID úhrady tohoto dokladu (jiná vrátí 404) Příklad 884. |
Odpověď
200 application/json Detail dokladu jako v getDocument, ale bez approval.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Úhrada v uzamčeném období: „Období do … je uzamčeno – úhradu z … nelze měnit“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Smaže úhradu a její účetní zápisy, u spárovaného bankovního pohybu přepočte jeho stav (matched / unmatched), přepočte uhrazenou částku dokladu a zapíše payment.deleted.
- Opakování
- Druhé volání vrátí 404.
Příklad
cURL
curl \
-X DELETE \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/documents/1/payments/1JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/1/payments/1', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY },
method: 'DELETE'
});
const data = await response.json();{
"id": 1,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "issued",
"number": "FV20260001",
"variable_symbol": "20260001",
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-01-04",
"taxable_date": "2026-01-04",
"due_date": "2026-01-18",
"currency": "CZK",
"total_net": 75900.0,
"total_vat": 15939.0,
"total_payable": 91839.0,
"total_gross_czk": 91839.0,
"paid_amount": 0.0,
"remaining": 91839.0,
"payment_state": "overdue",
"days_overdue": 253,
"description": "Návrh a vývoj webové aplikace",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": "2026-01-04",
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 91839.0,
"total_net_czk": 75900.0,
"total_vat_czk": 15939.0,
"note": null,
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": "Praha",
"project": "Web a e-shop Nordwood",
"paid_on": null,
"created_at": "2026-09-28T10:00:00.000Z",
"updated_at": "2026-09-28T10:00:00.000Z",
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": 1,
"position": 0,
"description": "Návrh a vývoj webové aplikace",
"quantity": 46.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 75900.0,
"vat": 15939.0,
"gross": 91839.0,
"net_czk": 75900.0,
"vat_czk": 15939.0
}
],
"attachments": [],
"share": null,
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 75900.0,
"vat": 15939.0,
"gross": 91839.0,
"net_czk": 75900.0,
"vat_czk": 15939.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": null,
"recurrence": null
}
GET Převod dokladu na jiný druh jako koncept
/entities/{entity_id}/documents/{id}/convert
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
Z vystaveného dokladu vrátí koncept jiného druhu jako kopii (viz prepareDocumentCopy) s vazbou na zdroj a poznámkou „Dle dokladu … č. …“. Povolené převody: cenová nabídka (quote_out) → faktura vydaná, zálohová faktura vydaná nebo dodací list; objednávka (order_out) → faktura přijatá; faktura vydaná → dodací list; dodací list → faktura vydaná. Když se faktura nebo zálohová faktura vytvořená z nabídky vystaví, nabídka se označí jako přijatá (nemá-li ještě výsledek). Nic neukládá.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID zdrojového dokladu Příklad 1601. |
kind | dotaz | text | ano | Druh nového dokladu Hodnoty: invoice_out, proforma_out, delivery_out, invoice_in. Příklad invoice_out. |
Odpověď
200 application/json Koncept ve tvaru getDocument (id null, bez approval) a navíc number_preview.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Převod mezi druhy není povolen: „Z tohoto dokladu nelze vytvořit zvolený doklad“ |
| 422 | – | Zdroj není vystavený: „Vytvořit doklad lze jen z vystaveného dokladu“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Nic nezapisuje.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/documents/143/convert?kind=delivery_out"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/143/convert?kind=delivery_out', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"id": null,
"kind": "delivery_out",
"kind_label": "Dodací list",
"status": "draft",
"number": null,
"variable_symbol": null,
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-28",
"taxable_date": null,
"due_date": "2026-10-12",
"currency": "CZK",
"total_net": 0.0,
"total_vat": 0.0,
"total_payable": 0.0,
"total_gross_czk": 0.0,
"paid_amount": 0.0,
"remaining": 0.0,
"payment_state": "na",
"days_overdue": 0,
"description": "Správa webu – září",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": 143,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": null,
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": 2,
"rounding": 0.0,
"total_gross": 0.0,
"total_net_czk": 0.0,
"total_vat_czk": 0.0,
"note": "Dle dokladu faktura vydaná č. FV20260025.",
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": null,
"updated_at": null,
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": null,
"position": 0,
"description": "Správa webu – září",
"quantity": 12.0,
"unit": "hod",
"unit_price": 1650.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 0.0,
"vat": 0.0,
"gross": 0.0,
"net_czk": 0.0,
"vat_czk": 0.0
}
],
"attachments": [],
"share": null,
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 0.0,
"vat": 0.0,
"gross": 0.0,
"net_czk": 0.0,
"vat_czk": 0.0
}
],
"bank_account": {
"id": 2,
"account_code": "221001",
"archived": false,
"bank_code": "2010",
"bic": null,
"created_at": "2026-09-28T10:00:00.000Z",
"currency": "CZK",
"iban": "CZ3820100000002900001227",
"is_default": true,
"kind": "bank",
"name": "Provozní účet",
"number": "2900001227",
"opening_balance": 420000.0,
"opening_date": "2026-01-01",
"sync_error": null,
"synced_at": null,
"updated_at": "2026-09-28T10:00:00.000Z",
"display_number": "2900001227/2010",
"balance": null,
"api_connected": false
},
"related_document": {
"id": 143,
"number": "FV20260025",
"kind": "invoice_out"
},
"recurrence": null,
"number_preview": "DL20260001"
}
POST Výsledek cenové nabídky
/entities/{entity_id}/documents/{id}/outcome
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
U cenové nabídky (quote_out) zaznamená, zda ji zákazník přijal (accepted) nebo odmítl (rejected); prázdná nebo chybějící hodnota výsledek smaže. Stav nabídky se nekontroluje.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID nabídky Příklad 1601. |
Tělo požadavku
Formát application/json.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
outcome | text | ne | accepted = přijato, rejected = odmítnuto, prázdné = bez výsledku Hodnoty: accepted, rejected, "". |
Odpověď
200 application/json Detail nabídky jako v getDocument, ale bez approval.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Doklad není nabídka: „Výsledek se eviduje jen u nabídek“ |
| 422 | – | Neznámá hodnota: „Neznámý výsledek nabídky“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Změní výsledek nabídky a zapíše document.outcome.
- Opakování
- Opakování se stejnou hodnotou nic nezmění, jen zapíše další událost.
Příklad
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"outcome":"accepted"}' \
https://techtools.cz/ucetnictvi-api/entities/1/documents/148/outcomeJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/documents/148/outcome', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY, 'Content-Type': 'application/json' },
method: 'POST',
body: JSON.stringify({
"outcome": "accepted"
})
});
const data = await response.json();{
"id": 148,
"kind": "quote_out",
"kind_label": "Cenová nabídka",
"status": "issued",
"number": "NA20260001",
"variable_symbol": "20260001",
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-09-20",
"taxable_date": null,
"due_date": null,
"currency": "CZK",
"total_net": 456000.0,
"total_vat": 95760.0,
"total_payable": 551760.0,
"total_gross_czk": 551760.0,
"paid_amount": 0.0,
"remaining": 551760.0,
"payment_state": "na",
"days_overdue": 0,
"description": "Nabídka – správa webu na rok 2027",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": "accepted",
"attachments_count": 0,
"approval_state": null,
"uuid": null,
"constant_symbol": null,
"specific_symbol": null,
"received_date": null,
"vat_date": "2026-09-20",
"exchange_rate": 1.0,
"rate_date": null,
"rc_code": null,
"prices_include_vat": false,
"simplified": false,
"regime_44": false,
"payment_method": "bank",
"bank_account_id": null,
"rounding": 0.0,
"total_gross": 551760.0,
"total_net_czk": 456000.0,
"total_vat_czk": 95760.0,
"note": null,
"internal_note": null,
"language": "cs",
"kh_section": null,
"cost_center": null,
"project": null,
"paid_on": null,
"created_at": "2026-09-28T10:00:00.000Z",
"updated_at": "2026-09-28T10:00:00.000Z",
"partner": {
"name": "Nordwood Studio s.r.o.",
"ico": "90000013",
"dic": "CZ90000013",
"street": "Korunní 1208/74",
"city": "Praha 10",
"zip": "10100",
"country": "CZ",
"email": "fakturace@example.cz",
"phone": null
},
"lines": [
{
"id": 149,
"position": 0,
"description": "Správa a údržba webu – měsíční paušál",
"quantity": 12.0,
"unit": "měs",
"unit_price": 38000.0,
"discount_percent": 0.0,
"vat_rate": 21.0,
"vat_kind": "standard",
"account_code": "602",
"asset": false,
"deduction": "full",
"advance_document_id": null,
"net": 456000.0,
"vat": 95760.0,
"gross": 551760.0,
"net_czk": 456000.0,
"vat_czk": 95760.0
}
],
"attachments": [],
"share": null,
"payments": [],
"vat_recap": [
{
"rate": 21.0,
"net": 456000.0,
"vat": 95760.0,
"gross": 551760.0,
"net_czk": 456000.0,
"vat_czk": 95760.0
}
],
"bank_account": null,
"related_document": null,
"recurrence": null
}
GET Seznam opakovaných faktur
/entities/{entity_id}/recurrences
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
Vrátí všechna pravidla opakování firmy (aktivní i ukončená) seřazená podle data příštího vytvoření. Každé pravidlo nese souhrn vzorového dokladu (template, null, pokud vzor už neexistuje). Odpověď je pole.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
Odpověď
200 application/json Pole pravidel opakování.
| Pole | Význam |
|---|---|
[].id | ID pravidla |
[].template_document_id | ID vzorového dokladu |
[].frequency | monthly, quarterly, half_yearly, yearly |
[].next_on | Datum příštího vytvoření |
[].ends_on | Poslední možné datum vytvoření, nebo null |
[].auto_issue | Vytvořený doklad rovnou vystavit |
[].active | Pravidlo je aktivní |
[].last_generated_on | Plánované datum posledního vytvořeného dokladu |
[].created_at | Založeno |
[].updated_at | Změněno |
[].template | Souhrn vzorového dokladu jako řádek listDocuments, nebo null |
Chování
- Co změní
- Nic nezapisuje.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/recurrencesJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/recurrences', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();[
{
"id": 1,
"active": true,
"auto_issue": false,
"created_at": "2026-09-28T10:00:00.000Z",
"ends_on": null,
"frequency": "monthly",
"last_generated_on": null,
"next_on": "2026-10-03",
"template_document_id": 22,
"updated_at": "2026-09-28T10:00:00.000Z",
"template": {
"id": 22,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "issued",
"number": "FV20260022",
"variable_symbol": "20260022",
"original_number": null,
"partner_id": 2,
"partner_name": "Kavárna U Zeleného stromu s.r.o.",
"partner_ico": "90000021",
"issue_date": "2026-09-15",
"taxable_date": "2026-09-15",
"due_date": "2026-09-25",
"currency": "CZK",
"total_net": 64000.0,
"total_vat": 13440.0,
"total_payable": 77440.0,
"total_gross_czk": 77440.0,
"paid_amount": 77440.0,
"remaining": 0.0,
"payment_state": "paid",
"days_overdue": 0,
"description": "UX audit a doporučení",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null
}
}
]
POST Založení opakované faktury
/entities/{entity_id}/recurrences
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY - V příručce
- Vydané faktury › Opakovaná faktura
Nastaví pravidelné vytváření kopie dokladu template_document_id – monthly (měsíčně), quarterly (čtvrtletně), half_yearly (pololetně), yearly (ročně) – poprvé k datu next_on; doklady vytváří runRecurrences a automatizace. Vzorem může být doklad jakéhokoli druhu a stavu. Jeden doklad smí mít jen jedno aktivní pravidlo. Pole jsou na nejvyšší úrovni těla (bez obalu).
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
Tělo požadavku
Formát application/json.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
template_document_id | celé číslo | ano | ID vzorového dokladu firmy (cizí nebo neexistující vrátí 404) |
frequency | text | ne | Frekvence (výchozí monthly) Hodnoty: monthly, quarterly, half_yearly, yearly. Výchozí monthly. |
next_on | datum | ano | Datum prvního vytvoření, 1. 1. 2000 – 31. 12. 2100 |
ends_on | datum | ne | Poslední možné datum vytvoření (stejný rozsah); po jeho překročení se pravidlo ukončí. Nečitelné datum se bez chyby uloží jako prázdné (pravidlo bez konce). |
auto_issue | ano/ne | ne | Vytvořený doklad rovnou vystavit (výchozí false = koncept) Výchozí false. |
active | ano/ne | ne | Pravidlo je aktivní (výchozí true) Výchozí true. |
Odpověď
201 application/json Pravidlo ve tvaru listRecurrences včetně template.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Doklad už má aktivní pravidlo: „Tato faktura už má automatické pravidlo – upravte to stávající“ (tvar { error, errors }) |
| 422 | – | next_on chybí nebo je neplatné či mimo roky 2000–2100 (i ends_on): „… musí ležet v letech 2000 až 2100“ (tvar { error, errors }) |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Vytvoří pravidlo a zapíše recurrence.created; doklad zatím nevytváří.
- Opakování
- Druhé volání pro stejný doklad vrátí 422, dokud je první pravidlo aktivní.
Příklad
Vzor nesmí mít jiné aktivní pravidlo (ukázková firma už má jedno pro poslední fakturu v Kč).
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"template_document_id":1,"frequency":"monthly","next_on":"2026-11-01","auto_issue":false}' \
https://techtools.cz/ucetnictvi-api/entities/1/recurrencesJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/recurrences', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY, 'Content-Type': 'application/json' },
method: 'POST',
body: JSON.stringify({
"template_document_id": 1,
"frequency": "monthly",
"next_on": "2026-11-01",
"auto_issue": false
})
});
const data = await response.json();{
"id": 3,
"active": true,
"auto_issue": false,
"created_at": "2026-09-28T10:00:00.000Z",
"ends_on": null,
"frequency": "monthly",
"last_generated_on": null,
"next_on": "2026-11-01",
"template_document_id": 1,
"updated_at": "2026-09-28T10:00:00.000Z",
"template": {
"id": 1,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "issued",
"number": "FV20260001",
"variable_symbol": "20260001",
"original_number": null,
"partner_id": 1,
"partner_name": "Nordwood Studio s.r.o.",
"partner_ico": "90000013",
"issue_date": "2026-01-04",
"taxable_date": "2026-01-04",
"due_date": "2026-01-18",
"currency": "CZK",
"total_net": 75900.0,
"total_vat": 15939.0,
"total_payable": 91839.0,
"total_gross_czk": 91839.0,
"paid_amount": 91839.0,
"remaining": 0.0,
"payment_state": "paid",
"days_overdue": 0,
"description": "Návrh a vývoj webové aplikace",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null
}
}
PATCH Úprava opakované faktury
/entities/{entity_id}/recurrences/{id}
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY - V příručce
- Vydané faktury › Opakovaná faktura
Změní frekvenci, datum příštího vytvoření, konec, automatické vystavení nebo aktivitu pravidla (vzorový doklad změnit nelze). Znovu aktivované pravidlo nesmí kolidovat s jiným aktivním pravidlem téhož dokladu. Pole jsou na nejvyšší úrovni těla.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID pravidla opakování Příklad 12. |
Tělo požadavku
Formát application/json.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
frequency | text | ne | Frekvence Hodnoty: monthly, quarterly, half_yearly, yearly. |
next_on | datum | ne | Datum příštího vytvoření (2000–2100) |
ends_on | datum | ne | Poslední možné datum vytvoření, nebo null; nečitelné datum se bez chyby uloží jako null |
auto_issue | ano/ne | ne | Vytvořený doklad rovnou vystavit |
active | ano/ne | ne | Pravidlo je aktivní |
Odpověď
200 application/json Pravidlo ve tvaru listRecurrences včetně template.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Aktivace při jiném aktivním pravidle téhož dokladu: „Tato faktura už má automatické pravidlo – upravte to stávající“ |
| 422 | – | Datum mimo roky 2000–2100: „… musí ležet v letech 2000 až 2100“ |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Uloží změny pravidla; do historie firmy nic nezapisuje.
- Opakování
- Opakování se stejným tělem nic dalšího nezmění.
Příklad
cURL
curl \
-X PATCH \
-H "X-API-Key: $SALDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"frequency":"quarterly","auto_issue":true}' \
https://techtools.cz/ucetnictvi-api/entities/1/recurrences/1JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/recurrences/1', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY, 'Content-Type': 'application/json' },
method: 'PATCH',
body: JSON.stringify({
"frequency": "quarterly",
"auto_issue": true
})
});
const data = await response.json();{
"frequency": "quarterly",
"auto_issue": true,
"template_document_id": 22,
"id": 1,
"active": true,
"created_at": "2026-09-28T10:00:00.000Z",
"ends_on": null,
"last_generated_on": null,
"next_on": "2026-10-03",
"updated_at": "2026-09-28T10:00:00.000Z",
"template": {
"id": 22,
"kind": "invoice_out",
"kind_label": "Faktura vydaná",
"status": "issued",
"number": "FV20260022",
"variable_symbol": "20260022",
"original_number": null,
"partner_id": 2,
"partner_name": "Kavárna U Zeleného stromu s.r.o.",
"partner_ico": "90000021",
"issue_date": "2026-09-15",
"taxable_date": "2026-09-15",
"due_date": "2026-09-25",
"currency": "CZK",
"total_net": 64000.0,
"total_vat": 13440.0,
"total_payable": 77440.0,
"total_gross_czk": 77440.0,
"paid_amount": 77440.0,
"remaining": 0.0,
"payment_state": "paid",
"days_overdue": 0,
"description": "UX audit a doporučení",
"vat_mode": "domestic",
"source": "manual",
"tags": null,
"related_document_id": null,
"reminders_sent": 0,
"outcome": null,
"attachments_count": 0,
"approval_state": null
}
}
DELETE Smazání opakované faktury
/entities/{entity_id}/recurrences/{id}
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY - V příručce
- Vydané faktury › Opakovaná faktura
Smaže pravidlo opakování. Doklady podle něj už vytvořené zůstanou beze změny.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
id | cesta | celé číslo | ano | ID pravidla opakování Příklad 12. |
Odpověď
204 Prázdná odpověď.
Chování
- Co změní
- Smaže pravidlo; do historie firmy nic nezapisuje.
- Opakování
- Druhé volání vrátí 404.
Příklad
cURL
curl \
-X DELETE \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/recurrences/1JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/recurrences/1', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY },
method: 'DELETE'
});
const data = await response.json();soubor, 0 bajtů
POST Vytvoření splatných opakovaných faktur
/entities/{entity_id}/recurrences/run
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Pro každé aktivní pravidlo s datem příštího vytvoření nejpozději on (výchozí dnes; pozdější datum se zkrátí na dnešek) vytvoří kopii vzorového dokladu (viz prepareDocumentCopy) se zdrojem recurring, datem vystavení (u daňových dokladů i DUZP) = plánované datum a splatností podle kontaktu nebo firmy; u cizí měny načte kurz ČNB k tomuto datu (když není k dispozici, zůstane kurz vzoru). Zmeškaná období dožene, nejvýše 24 dokladů na pravidlo za volání, a posune datum příštího vytvoření; za koncem pravidlo ukončí. S auto_issue doklad hned vystaví, přijatý výdaj, na který se vztahuje schvalování, ale jen odešle ke schválení (běh nikdy neschvaluje); jinak zůstane konceptem.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | ID účetní jednotky (firmy) Příklad 7. |
Tělo požadavku
Formát application/json.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
on | datum | ne | Vytvořit, co je splatné do tohoto dne (výchozí dnes, nejvýše dnes) |
Odpověď
200 application/json Vytvořené doklady.
| Pole | Význam |
|---|---|
created[] | Souhrny vytvořených dokladů jako řádky listDocuments |
count | Počet vytvořených dokladů |
failed | Přes API vždy prázdné pole – chyba běh zastaví s 422 |
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | S auto_issue nejde doklad vystavit (např. „Doklad nemá žádnou položku“, „Doplňte odběratele nebo dodavatele“, uzamčené období); běh se zastaví, dříve vytvořené doklady zůstanou |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Vytvoří doklady (document.created, s auto_issue i vystavení a zaúčtování jako issueDocument, nebo odeslání ke schválení) a u pravidel posune next_on, last_generated_on a případně je ukončí. Dotazuje kurzy ČNB u vzorů v cizí měně. Každý vytvořený doklad se ukládá samostatně: při chybě zůstanou doklady vytvořené před ní.
- Limity
- Nejvýše 24 dokladů na jedno pravidlo za volání.
- Opakování
- Druhé volání se stejným on nic nevytvoří, protože pravidla už mají příští datum později (jen pravidlo, které narazilo na limit 24 dokladů, pokračuje dalšími zmeškanými obdobími); souběžné běhy si totéž období nezdvojí.
Příklad
Ukázkové pravidlo má příští datum v příštím měsíci, takže odpověď je prázdná (count 0).
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"on":"2026-09-28"}' \
https://techtools.cz/ucetnictvi-api/entities/1/recurrences/runJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/recurrences/run', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY, 'Content-Type': 'application/json' },
method: 'POST',
body: JSON.stringify({
"on": "2026-09-28"
})
});
const data = await response.json();{
"created": [],
"count": 0,
"failed": []
}