Reference API
Účetní knihy a výkazy
Účtový rozvrh nebo kategorie daňové evidence, účetní zápisy, sestavy (předvaha, hlavní kniha, saldokonto, peněžní deník, výkazy, přehledy) a kroky měsíční a roční uzávěrky.
GET Účtový rozvrh nebo kategorie daňové evidence
/entities/{entity_id}/accounts
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
Vrátí všechny účty firmy seřazené podle kódu, včetně neaktivních. V podvojném účetnictví je to účtový rozvrh (např. 221, 311, 518, 602), v daňové evidenci kategorie příjmů a výdajů (např. P02, V05).
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
Odpověď
200 application/json Pole účtů (bez obalového objektu).
| Pole | Význam |
|---|---|
[].id | Identifikátor účtu pro úpravu a smazání. |
[].code | Kód účtu nebo kategorie. |
[].name | Název. |
[].kind | Druh (asset, liability, equity, expense, revenue, closing, off_balance, neutral); kind_label je český název. |
[].tax_relevant | Zda je účet daňový. |
[].statement_line | Ruční přiřazení řádku rozvahy nebo výkazu zisku a ztráty, jinak null. |
[].active | Zda je účet aktivní. |
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/accountsJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/accounts', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();[
{
"id": 1,
"code": "012",
"name": "Nehmotné výsledky vývoje",
"kind": "asset",
"tax_relevant": true,
"statement_line": null,
"active": true,
"kind_label": "Aktivní"
},
{
"id": 2,
"code": "013",
"name": "Software",
"kind": "asset",
"tax_relevant": true,
"statement_line": null,
"active": true,
"kind_label": "Aktivní"
}
]
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
POST Založení účtu nebo kategorie
/entities/{entity_id}/accounts
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Přidá do účtového rozvrhu (nebo mezi kategorie daňové evidence) nový účet, typicky analytický účet jako 518100. Kód se převede na velká písmena a musí být ve firmě jedinečný. Hodnoty statement_line nabízí sestava statements v poli line_options; uložit ale jde jen řádky rozvahy (ak:…, pa:…) – hodnoty vz:… pro výkaz zisku a ztráty validace odmítne (viz chyby).
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
Tělo požadavku
Formát application/json.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
account | objekt | ano | |
account. | text | ano | Kód: 1–12 znaků, číslice, velká písmena, tečka a pomlčka; první znak číslice nebo písmeno. |
account. | text | ano | Název, nejvýše 160 znaků. |
account. | text | ano | Druh účtu – aktivní, pasivní, vlastní kapitál, nákladový, výnosový, závěrkový, podrozvahový, neutrální. Hodnoty: asset, liability, equity, expense, revenue, closing, off_balance, neutral. |
account. | ano/ne | ne | Daňový účet (výchozí true). |
account. | text | ne | Ruční přiřazení řádku výkazů: ak: nebo pa: a označení řádku rozvahy z velkých písmen, číslic a teček (např. ak:C.II.2.4); bez něj se řádek určí podle syntetického účtu. Validace připouští jen tento tvar, proto kódy řádků výkazu zisku a ztráty z line_options (např. vz:n_vs_sluzby) odmítne. |
account. | ano/ne | ne | Aktivní účet (výchozí true). |
Odpověď
201 application/json Založený účet ve stejném tvaru jako v seznamu účtů.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | statement_line nemá tvar ak:, pa: nebo vz: s velkými písmeny, číslicemi a tečkami – platí pro všechny řádky výkazu zisku a ztráty z line_options (malá písmena a podtržítka), takže přiřazení k řádku VZZ API neuloží (známá chyba). |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Založí účet a zapíše událost account.created do historie změn. Nic nezaúčtuje.
- Opakování
- Druhé založení se stejným kódem skončí chybou validace 422 (kód už existuje).
Příklad
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"account":{"code":"518100","name":"Software a cloudové služby","kind":"expense","tax_relevant":true}}' \
https://techtools.cz/ucetnictvi-api/entities/1/accountsJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/accounts', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY, 'Content-Type': 'application/json' },
method: 'POST',
body: JSON.stringify({
"account": {
"code": "518100",
"name": "Software a cloudové služby",
"kind": "expense",
"tax_relevant": true
}
})
});
const data = await response.json();{
"id": 433,
"code": "518100",
"name": "Software a cloudové služby",
"kind": "expense",
"tax_relevant": true,
"statement_line": null,
"active": true,
"kind_label": "Nákladový"
}
PATCH Úprava účtu nebo kategorie
/entities/{entity_id}/accounts/{id}
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Změní název, druh, daňovost, přiřazení k řádku výkazů nebo aktivitu účtu; kód změnit nelze (pole code se tiše ignoruje). Sestavy se počítají z aktuálních údajů účtu, takže změna druhu, daňovosti nebo řádku výkazu se projeví i ve výstupech za uzamčená období – uzamčení úpravě nebrání. Nepoužívaný účet raději deaktivujte (active: false) než mažte.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
id | cesta | celé číslo | ano | Účet firmy (id ze seznamu účtů). Příklad 815. |
Tělo požadavku
Formát application/json.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
account | objekt | ano | |
account. | text | ne | Název, nejvýše 160 znaků. |
account. | text | ne | Druh účtu. Hodnoty: asset, liability, equity, expense, revenue, closing, off_balance, neutral. |
account. | ano/ne | ne | Daňový účet. |
account. | text | ne | Ruční přiřazení řádku rozvahy (ak:…, pa:…); prázdná hodnota přiřazení zruší. Kódy řádků výkazu zisku a ztráty (vz:…) validace odmítne. |
account. | ano/ne | ne | Aktivní účet. |
Odpověď
200 application/json Upravený účet.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | statement_line nemá tvar ak:, pa: nebo vz: s velkými písmeny, číslicemi a tečkami – platí pro všechny řádky výkazu zisku a ztráty z line_options, takže přiřazení k řádku VZZ API neuloží (známá chyba). |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Změní účet. Událost do historie změn nezapisuje a nic nezaúčtuje.
- Opakování
- Stejný požadavek vede ke stejnému stavu.
Příklad
cURL
curl \
-X PATCH \
-H "X-API-Key: $SALDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"account":{"name":"Ostatní služby – provoz","active":true}}' \
https://techtools.cz/ucetnictvi-api/entities/1/accounts/431JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/accounts/431', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY, 'Content-Type': 'application/json' },
method: 'PATCH',
body: JSON.stringify({
"account": {
"name": "Ostatní služby – provoz",
"active": true
}
})
});
const data = await response.json();{
"id": 431,
"code": "518900",
"name": "Ostatní služby – provoz",
"kind": "expense",
"tax_relevant": true,
"statement_line": null,
"active": true,
"kind_label": "Nákladový"
}
DELETE Smazání nepoužitého účtu
/entities/{entity_id}/accounts/{id}
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Smaže účet, pokud jeho kód není v žádném účetním zápisu (na straně MD ani Dal) ani v položce žádného dokladu firmy; porovnává se přesná shoda kódu. Jiné odkazy (bankovní účet, bankovní pravidlo, majetek, výchozí účet kontaktu) se nekontrolují. Použitý účet lze jen deaktivovat.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
id | cesta | celé číslo | ano | Účet firmy. Příklad 902. |
Odpověď
204 Bez obsahu.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Kód je použitý v zápisech nebo položkách dokladů („Účet je použitý v zápisech – můžete ho jen deaktivovat“). |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Smaže účet. Událost do historie změn 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/accounts/432JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/accounts/432', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY },
method: 'DELETE'
});
const data = await response.json();soubor, 0 bajtů
GET Účetní deník
/entities/{entity_id}/entries
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
Vrátí účetní zápisy za období chronologicky (datum, pak pořadí vzniku) po stránkách, se součtem částek všech vyhovujících zápisů. Filtry lze kombinovat: účet (prefix na straně MD nebo Dal, takže 311 zahrne i 311xxx), text zápisu, doklad a zdroj zápisu.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
year | dotaz | celé číslo | ne | Účetní období začínající v tomto roce; výchozí je aktuální rok. Nečíselná hodnota se bere jako aktuální rok, mimo rozsah se ořízne. Rozsah od 2000 do 2100. Příklad 2026. |
from | dotaz | datum | ne | Začátek období (YYYY-MM-DD); výchozí je první den účetního období year. Příklad 2026-09-01. |
to | dotaz | datum | ne | Konec období včetně (YYYY-MM-DD); výchozí je poslední den účetního období year. Příklad 2026-09-30. |
account | dotaz | text | ne | Kód účtu nebo jeho začátek; zápis se vrátí, pokud jím začíná strana MD nebo Dal. Příklad 221. |
q | dotaz | text | ne | Hledaný text v textu zápisu bez ohledu na velikost písmen, s výjimkou velkých písmen s diakritikou v textu zápisu (databáze SQLite převádí na malá písmena jen ASCII): text „Úhrada“ se najde dotazem „hrada“, ne „úhrada“ ani „Úhrada“. Příklad nájem. |
document_id | dotaz | celé číslo | ne | Jen zápisy tohoto dokladu. Příklad 431. |
source_type | dotaz | text | ne | Zdroje oddělené čárkou: document, payment, bank, asset, payroll, manual, opening, closing, revaluation. Neznámé hodnoty se vynechají; když žádná neplatí, výsledek je prázdný. Pole source_type[] se nepodporuje. Příklad manual,opening. |
page | dotaz | celé číslo | ne | Stránka od 1. Výchozí 1. Rozsah od 1. Příklad 1. |
per | dotaz | celé číslo | ne | Počet zápisů na stránce. Výchozí 200. Rozsah od 1 do 1000. Příklad 50. |
Odpověď
200 application/json Stránka zápisů se součty.
| Pole | Význam |
|---|---|
total | Počet všech vyhovujících zápisů. |
sum | Součet částek všech vyhovujících zápisů v Kč. |
page | Vrácená stránka; per je velikost stránky. |
rows | Zápisy: id, date, text, debit_account (MD), credit_account (Dal), amount (Kč), source_type, document_id, document_number, variable_symbol, currency a amount_currency (u cizí měny). |
Chování
- Co změní
- Nic nezapisuje.
- Limity
- Nejvýše 1000 zápisů na stránce.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/entries?account=221&per=5"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/entries?account=221&per=5', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"total": 106,
"sum": 4566066.4,
"page": 1,
"per": 5,
"rows": [
{
"id": 1,
"date": "2026-01-01",
"text": "Počáteční stav – Provozní účet",
"debit_account": "221001",
"credit_account": "701",
"amount": 420000.0,
"source_type": "opening",
"document_id": null,
"document_number": null,
"variable_symbol": null,
"currency": null,
"amount_currency": null
},
{
"id": 89,
"date": "2026-01-14",
"text": "Úhrada · FP20260001 · Coworking Karlín s.r.o.",
"debit_account": "321",
"credit_account": "221001",
"amount": 17545.0,
"source_type": "payment",
"document_id": 30,
"document_number": "FP20260001",
"variable_symbol": "64364537",
"currency": "CZK",
"amount_currency": null
}
]
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
POST Ruční účetní zápis
/entities/{entity_id}/entries
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Vytvoří jeden účetní zápis MD/Dal v Kč (interní doklad, dohadná položka, oprava) nebo s opening: true počáteční stav. Kódy účtů se převedou na velká písmena a kontroluje se jen jejich tvar a to, že se strany liší – existence účtu v účtovém rozvrhu se neověřuje. Částka se zaokrouhlí na haléře; chybějící nebo nečíselná částka se uloží jako 0,00 a kladné znaménko se nevyžaduje. Datum v uzamčeném období je odmítnuto.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
Tělo požadavku
Formát application/json.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
entry | objekt | ano | |
entry. | datum | ano | Datum zápisu (YYYY-MM-DD); chybějící nebo neplatné datum vrátí 400. |
entry. | text | ano | Účet strany MD (1–12 znaků, číslice, písmena, tečka, pomlčka). |
entry. | text | ano | Účet strany Dal; musí se lišit od MD. |
entry. | číslo | ne | Částka v Kč; přijme i desetinnou čárku („1500,50“). |
entry. | text | ne | Text zápisu; delší než 250 znaků se zkrátí. |
entry. | ano/ne | ne | true = počáteční stav (zdroj opening), jinak ruční zápis (manual). |
Odpověď
201 application/json Všechny sloupce vytvořeného zápisu: id, entity_id, date, debit_account, credit_account, amount, text, source_type (manual nebo opening), source_id, document_id, partner_id, currency, amount_currency, cost_center, variable_symbol, created_at, updated_at.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Datum leží v uzamčeném období („Období je uzamčeno“). |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Vytvoří jeden účetní zápis a zapíše událost entry.created do historie změn.
- Opakování
- Každé volání vytvoří další zápis; duplicity se nekontrolují.
Příklad
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"entry":{"date":"2026-08-31","debit_account":"518","credit_account":"389","amount":4200,"text":"Dohadná položka – energie za minulý měsíc"}}' \
https://techtools.cz/ucetnictvi-api/entities/1/entriesJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/entries', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY, 'Content-Type': 'application/json' },
method: 'POST',
body: JSON.stringify({
"entry": {
"date": "2026-08-31",
"debit_account": "518",
"credit_account": "389",
"amount": 4200,
"text": "Dohadná položka – energie za minulý měsíc"
}
})
});
const data = await response.json();{
"id": 322,
"amount": 4200.0,
"amount_currency": null,
"cost_center": null,
"created_at": "2026-09-28T10:00:00.000Z",
"credit_account": "389",
"currency": null,
"date": "2026-08-31",
"debit_account": "518",
"document_id": null,
"entity_id": 1,
"partner_id": null,
"source_id": null,
"source_type": "manual",
"text": "Dohadná položka – energie za minulý měsíc",
"updated_at": "2026-09-28T10:00:00.000Z",
"variable_symbol": null
}
DELETE Smazání ručního zápisu
/entities/{entity_id}/entries/{id}
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Smaže ruční zápis nebo počáteční stav, který nevznikl z jiného záznamu (source_type manual nebo opening bez source_id, tedy i počáteční stavy z importu předvahy). Zápisy z dokladů, úhrad, banky, odpisů, mezd, uzávěrky, kurzových rozdílů a počáteční stavy bankovních účtů tudy smazat nelze – vrátí 404. Zápis v uzamčeném období je odmítnut.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
id | cesta | celé číslo | ano | Ruční zápis nebo počáteční stav bez zdroje. Příklad 5120. |
Odpověď
204 Bez obsahu.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Datum zápisu leží v uzamčeném období („Období je uzamčeno“). |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Smaže zápis a zapíše událost entry.deleted do historie změn.
- 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/entries/321JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/entries/321', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY },
method: 'DELETE'
});
const data = await response.json();soubor, 0 bajtů
GET Účetní sestava
/entities/{entity_id}/reports/{report}
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
Vrátí jednu sestavu podle hodnoty report. Každá sestava má vlastní parametry a strukturu odpovědi (viz variants). Sestavy jen čtou data a nic nezaúčtují.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
report | cesta | text | ano | Sestava. Hodnoty: dashboard, trial_balance, account, saldokonto, statements, cash_book, money, compliance, forecast, projects, insights. Příklad trial_balance. |
Odpověď
200 application/json Obsah sestavy podle varianty.
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 404 | – | Neznámá hodnota report („Neznámá sestava“). |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Nic nezapisuje. Sestavy s účty nebo doklady v cizí měně (money, dashboard, forecast, insights) mohou načíst kurz ČNB.
/entities/{entity_id}/reports/dashboard – Přehled firmy za účetní období
Tržby, náklady a zisk po 12 měsících účetního období (v podvojném účetnictví ze zápisů na účtech tříd 6 a 5 bez 59x, v daňové evidenci z peněžního deníku), peníze na účtech, otevřené pohledávky a závazky, odhad DPH za běžné období, počty, upozornění, 5 největších odběratelů a dodavatelů a 8 posledních dokladů.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
year | dotaz | celé číslo | ne | Účetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026. |
Pole odpovědi
| Pole | Význam |
|---|---|
months | 12 měsíců – month, label (MM/YYYY), revenue, costs, profit; totals je jejich součet. |
money | Zůstatky účtů a pokladen k dnešku (jako sestava money). |
receivables | Otevřené vydané faktury a dobropisy v Kč – total, count, overdue, overdue_count, due_soon a due_soon_count (do 7 dní); payables totéž pro přijaté. |
vat | U plátce DPH odhad za běžné období – from, to, frequency, output, input, due, deadline; u neplátce null. |
counts | drafts (koncepty), unmatched (nespárované pohyby), partners, documents (doklady období). |
alerts | Upozornění – level, key, title, detail, amount, action; obsahuje i nejvýše 6 kontrol ze sestavy compliance. |
top_customers | 5 odběratelů s nejvyšším základem v Kč za období – partner_id, name, amount; top_suppliers totéž pro dodavatele. |
recent | 8 posledních dokladů všech druhů podle data vystavení, včetně konceptů (souhrn dokladu jako v seznamu dokladů). |
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/reports/dashboard?year=2026"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/reports/dashboard?year=2026', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"year": 2026,
"months": [
{
"month": "2026-01-01",
"label": "01/2026",
"revenue": 153912.0,
"costs": 120138.9,
"profit": 33773.1
},
{
"month": "2026-02-01",
"label": "02/2026",
"revenue": 170076.0,
"costs": 126778.5,
"profit": 43297.5
}
],
"totals": {
"revenue": 1990955.1,
"costs": 1080821.5,
"profit": 910133.6
},
"money": {
"accounts": [
{
"id": 2,
"name": "Provozní účet",
"kind": "bank",
"currency": "CZK",
"number": "2900001227/2010",
"iban": "CZ3820100000002900001227",
"account_code": "221001",
"balance": 887525.6,
"balance_czk": 887525.6
},
{
"id": 6,
"name": "Rezervní účet",
"kind": "bank",
"currency": "CZK",
"number": "2900005005/2010",
"iban": null,
"account_code": "221002",
"balance": 0.0,
"balance_czk": 0.0
}
],
"total_czk": 897732.6
},
"receivables": {
"total": 174478.0,
"count": 3,
"overdue": 72600.0,
"overdue_count": 1,
"due_soon": 0.0,
"due_soon_count": 0
},
"payables": {
"total": 17545.0,
"count": 1,
"overdue": 0.0,
"overdue_count": 0,
"due_soon": 0.0,
"due_soon_count": 0
},
"vat": {
"from": "2026-09-01",
"to": "2026-09-30",
"frequency": "monthly",
"output": 57219.23,
"input": 13663.13,
"due": 43556.1,
"deadline": "2026-10-26"
},
"counts": {
"drafts": 2,
"unmatched": 6,
"partners": 17,
"documents": 78
},
"alerts": [
{
"level": "critical",
"key": "overdue",
"title": "1 faktura po splatnosti",
"detail": "Pošlete upomínku, dlužníci platí nejdřív tomu, kdo se ozve.",
"amount": 72600.0,
"action": "receivables"
},
{
"level": "warning",
"key": "unmatched",
"title": "6 nespárovaných bankovních pohybů",
"detail": "Přiřaďte je k fakturám nebo je zaúčtujte.",
"action": "bank"
}
],
"top_customers": [
{
"partner_id": 1,
"name": "Nordwood Studio s.r.o.",
"amount": 447400.0
},
{
"partner_id": 5,
"name": "Hafenlicht GmbH",
"amount": 389600.0
}
],
"top_suppliers": [
{
"partner_id": 12,
"name": "Autocentrum Morava s.r.o.",
"amount": 689000.0
},
{
"partner_id": 10,
"name": "Cloudwerk GmbH",
"amount": 252022.5
}
],
"recent": [
{
"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-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": "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
},
{
"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
}
]
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
/entities/{entity_id}/reports/trial_balance – Obratová předvaha
Po účtech tak, jak jsou v zápisech (analytické účty zvlášť): počáteční stav k začátku období, obraty MD a Dal a konečný stav. Počáteční stav rozvahových účtů zahrnuje převedený výsledek minulých let (428 nebo 429), výsledkové účty začínají od začátku účetního období. Účty bez stavu i obratů se vynechají.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
year | dotaz | celé číslo | ne | Účetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026. |
from | dotaz | datum | ne | Začátek období; výchozí je začátek účetního období year. Příklad 2026-01-01. |
to | dotaz | datum | ne | Konec období včetně; výchozí je konec účetního období year. Příklad 2026-09-30. |
Pole odpovědi
| Pole | Význam |
|---|---|
rows | code, name, kind, opening, debit, credit, closing. |
totals | debit, credit, balanced (MD = Dal), opening, closing. |
range | Použité období {from, to}. |
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/reports/trial_balance?year=2026"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/reports/trial_balance?year=2026', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"rows": [
{
"code": "022",
"name": "Hmotné movité věci a jejich soubory",
"kind": "asset",
"opening": 0.0,
"debit": 773990.0,
"credit": 0.0,
"closing": 773990.0
},
{
"code": "211001",
"name": "Pokladna",
"kind": "asset",
"opening": 0.0,
"debit": 21462.0,
"credit": 11255.0,
"closing": 10207.0
}
],
"totals": {
"debit": 9431439.8,
"credit": 9431439.8,
"balanced": true,
"opening": 0.0,
"closing": 0.0
},
"range": {
"from": "2026-01-01",
"to": "2026-12-31"
}
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
/entities/{entity_id}/reports/account – Hlavní kniha účtu
Zápisy jednoho účtu za období chronologicky s průběžným zůstatkem. Kód se bere jako začátek, takže 311 zahrne i analytické účty 311xxx; počáteční stav se počítá stejně jako v předvaze.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
code | dotaz | text | ano | Kód účtu nebo jeho začátek (převede se na velká písmena); bez něj vrátí 400. Příklad 311. |
year | dotaz | celé číslo | ne | Účetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026. |
from | dotaz | datum | ne | Začátek období; výchozí je začátek účetního období year. Příklad 2026-01-01. |
to | dotaz | datum | ne | Konec období včetně; výchozí je konec účetního období year. Příklad 2026-09-30. |
Pole odpovědi
| Pole | Význam |
|---|---|
code | Kód z dotazu; name je název účtu s přesně tímto kódem, jinak null. |
opening | Počáteční stav k začátku období. |
lines | Zápisy jako v deníku doplněné o debit, credit a balance (průběžný zůstatek). |
debit | Obrat MD; credit obrat Dal; closing konečný stav. |
range | Použité období {from, to}. |
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/reports/account?code=311"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/reports/account?code=311', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"code": "311",
"name": "Odběratelé",
"opening": 0.0,
"lines": [
{
"id": 5,
"date": "2026-01-04",
"text": "Faktura · FV20260001 · Nordwood Studio s.r.o.",
"debit_account": "311",
"credit_account": "602",
"amount": 75900.0,
"source_type": "document",
"document_id": 1,
"document_number": "FV20260001",
"variable_symbol": "20260001",
"currency": "CZK",
"amount_currency": null,
"debit": 75900.0,
"credit": 0.0,
"balance": 75900.0
},
{
"id": 6,
"date": "2026-01-04",
"text": "Faktura · FV20260001 · Nordwood Studio s.r.o.",
"debit_account": "311",
"credit_account": "343",
"amount": 15939.0,
"source_type": "document",
"document_id": 1,
"document_number": "FV20260001",
"variable_symbol": "20260001",
"currency": "CZK",
"amount_currency": null,
"debit": 15939.0,
"credit": 0.0,
"balance": 91839.0
}
],
"debit": 2245317.0,
"credit": 2070839.0,
"closing": 174478.0,
"range": {
"from": "2026-01-01",
"to": "2026-12-31"
}
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
/entities/{entity_id}/reports/saldokonto – Saldokonto pohledávek nebo závazků
Otevřené vystavené faktury a dobropisy k datu as_of podle úhrad do tohoto dne, po kontaktech a s rozdělením podle dnů po splatnosti. V podvojném účetnictví je zůstatek v Kč u dokladu podle zápisů na 311 nebo 321 (i s kurzovými rozdíly) a reconciliation porovná součet dokladů se stavem účtu.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
side | dotaz | text | ne | receivables = vydané faktury a dobropisy, payables = přijaté; jiná hodnota znamená receivables. Hodnoty: receivables, payables. Výchozí receivables. Příklad payables. |
as_of | dotaz | datum | ne | Datum, ke kterému se saldokonto počítá; výchozí je dnešek. Příklad 2026-09-30. |
Pole odpovědi
| Pole | Význam |
|---|---|
partners | Kontakty seřazené podle dlužné částky – partner_id, name, ico, total_czk, overdue_czk a items (document_id, number, kind, issue_date, due_date, currency, total, remaining, remaining_czk, days_overdue, bucket). |
buckets | Součty podle stáří – not_due, d30, d60, d90, d90plus (key, label, total_czk). |
total_czk | Součet otevřených položek v Kč. |
reconciliation | Jen v podvojném účetnictví – account (311 nebo 321), ledger_total_czk, open_items_total_czk, difference_czk, reconciled. |
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/reports/saldokonto?side=receivables"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/reports/saldokonto?side=receivables', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"side": "receivables",
"as_of": "2026-09-28",
"partners": [
{
"partner_id": 5,
"name": "Hafenlicht GmbH",
"ico": null,
"total_czk": 77920.0,
"overdue_czk": 0.0,
"items": [
{
"document_id": 23,
"number": "FV20260023",
"kind": "invoice_out",
"issue_date": "2026-09-21",
"due_date": "2026-10-21",
"currency": "EUR",
"total": 3200.0,
"remaining": 3200.0,
"remaining_czk": 77920.0,
"days_overdue": 0,
"bucket": "not_due",
"partner_id": 5,
"partner_name": "Hafenlicht GmbH",
"partner_ico": null
}
]
},
{
"partner_id": 3,
"name": "Atelier Lumen s.r.o.",
"ico": "90000030",
"total_czk": 72600.0,
"overdue_czk": 72600.0,
"items": [
{
"document_id": 27,
"number": "FV20260024",
"kind": "invoice_out",
"issue_date": "2026-09-13",
"due_date": "2026-09-27",
"currency": "CZK",
"total": 72600.0,
"remaining": 72600.0,
"remaining_czk": 72600.0,
"days_overdue": 1,
"bucket": "d30",
"partner_id": 3,
"partner_name": "Atelier Lumen s.r.o.",
"partner_ico": "90000030"
}
]
}
],
"buckets": [
{
"key": "not_due",
"label": "Do splatnosti",
"total_czk": 101878.0
},
{
"key": "d30",
"label": "1–30 dní",
"total_czk": 72600.0
}
],
"total_czk": 174478.0,
"reconciliation": {
"account": "311",
"ledger_total_czk": 174478.0,
"open_items_total_czk": 174478.0,
"difference_czk": 0.0,
"reconciled": true
}
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
/entities/{entity_id}/reports/statements – Rozvaha a výkaz zisku a ztráty
Rozvaha a výkaz zisku a ztráty v druhovém členění za účetní období year s údaji minulého období, v rozsahu podle kategorie účetní jednotky z nastavení (mikro a malá zkrácený, střední a velká plný; výchozí mikro). Počítá se ze zápisů s převodem výsledku; určeno pro podvojné účetnictví, způsob vedení kód nekontroluje.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
year | dotaz | celé číslo | ne | Účetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026. |
Pole odpovědi
| Pole | Význam |
|---|---|
rozvaha | scope, full, aktiva, pasiva, aktiva_total, pasiva_total, cizi_zdroje, balanced, difference. |
vzz | Výkaz zisku a ztráty – layout, lines a result (provozni, financni, pred_dani, dan, po_dani, za_obdobi, cisty_obrat). |
cashflow | Přehled o peněžních tocích odvozený z výkazů; equity přehled o změnách vlastního kapitálu. |
result | vh_za_obdobi, vh_za_obdobi_prev, vh_pred_zdanenim. |
checks | Kontroly výkazů; unmapped jsou účty se zůstatkem bez přiřazeného řádku. |
row_map | Přiřazení účtů k řádkům; line_options jsou platné hodnoty statement_line pro účty. |
period | Období {from, to}; category je kategorie účetní jednotky, opening_difference nevyrovnaný zůstatek účtu 701. |
accounts | Konečné zůstatky účtů – code, closing, previous. |
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/reports/statements?year=2026"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/reports/statements?year=2026', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"rozvaha": {
"scope": "zkraceny_mikro",
"full": false,
"aktiva": [
{
"code": "A",
"mark": "A.",
"label": "Pohledávky za upsaný základní kapitál",
"level": 0,
"visible": true,
"current": 0.0,
"prev": 0.0,
"korekce": 0.0,
"brutto": 0.0
},
{
"code": "B",
"mark": "B.",
"label": "Stálá aktiva",
"level": 0,
"visible": true,
"current": 773990.0,
"prev": 0.0,
"korekce": 0.0,
"brutto": 773990.0
}
],
"pasiva": [
{
"code": "A",
"mark": "A.",
"label": "Vlastní kapitál",
"level": 0,
"visible": true,
"current": 1345133.6,
"prev": 0.0
},
{
"code": "A.I",
"mark": "A.I.",
"label": "Základní kapitál",
"level": 1,
"visible": false,
"current": 200000.0,
"prev": 0.0
}
],
"aktiva_total": 1846200.6,
"pasiva_total": 1846200.6,
"cizi_zdroje": 501067.0,
"balanced": true,
"difference": 0.0
},
"cashflow": {
"rows": [
{
"mark": "P.",
"label": "Počáteční stav peněžních prostředků a peněžních ekvivalentů",
"value": 0.0,
"kind": "sub"
},
{
"mark": "Z.",
"label": "Účetní zisk/ztráta před zdaněním",
"value": 910133.6,
"kind": "item"
}
],
"penize_zacatek": 0.0,
"penize_konec": 897732.6,
"zmena": 897732.6,
"ties": true,
"note": "Nepřímá metoda, odvozeno z rozvahy (běžné + minulé období) a VZZ. Finanční tok C je dopočten tak, aby přehled navazoval na skutečný stav peněz (R = P + F); analytický odhad C = 200000.0 Kč, rozdíl 235000.0 Kč zahrnuje zejména vyplacené podíly na zisku. Vyžaduje vyplněný sloupec „minulé období\" v předvaze."
},
"equity": {
"rows": [
{
"code": "A.I",
"label": "Základní kapitál",
"pocatek": 0.0,
"zmena": 200000.0,
"konec": 200000.0
},
{
"code": "A.II",
"label": "Ážio a kapitálové fondy",
"pocatek": 0.0,
"zmena": 0.0,
"konec": 0.0
}
],
"total": {
"label": "Vlastní kapitál celkem",
"pocatek": 0.0,
"zmena": 1345133.6,
"konec": 1345133.6
},
"note": "Změny vlastního kapitálu mezi minulým a běžným rozvahovým dnem. Vyžaduje vyplněný sloupec „minulé období\" v předvaze."
},
"vzz": {
"layout": "druhove",
"lines": [
{
"code": "v_trzby_vyrobky",
"mark": "I.",
"label": "Tržby z prodeje výrobků a služeb",
"level": 1,
"kind": "vynos",
"visible": true,
"current": 1983250.0,
"prev": 0.0
},
{
"code": "v_trzby_zbozi",
"mark": "II.",
"label": "Tržby za prodej zboží",
"level": 1,
"kind": "vynos",
"visible": true,
"current": 5340.0,
"prev": 0.0
}
],
"result": {
"provozni": 907958.6,
"financni": 2175.0,
"pred_dani": 910133.6,
"dan": 0.0,
"po_dani": 910133.6,
"za_obdobi": 910133.6,
"cisty_obrat": 1990955.1
}
},
"result": {
"vh_za_obdobi": 910133.6,
"vh_za_obdobi_prev": 0.0,
"vh_pred_zdanenim": 910133.6
},
"checks": [
{
"key": "predvaha",
"ok": true,
"detail": "Σ MD 2927022.10 vs Σ Dal 2927022.10 (rozdíl 0.00)"
},
{
"key": "bilance",
"ok": true,
"detail": "AKTIVA 1846200.60 vs PASIVA 1846200.60 (rozdíl 0.00)"
}
],
"unmapped": [],
"row_map": [
{
"id": 1,
"account_code": "022",
"target": "ak:B.II.2",
"label": "B.II.2. Hmotné movité věci a jejich soubory",
"auto": true
},
{
"id": 2,
"account_code": "211001",
"target": "ak:C.IV.1",
"label": "C.IV.1. Peněžní prostředky v pokladně",
"auto": true
}
],
"line_options": [
{
"value": "ak:A",
"group": "Rozvaha – aktiva",
"label": "A. Pohledávky za upsaný základní kapitál"
},
{
"value": "ak:B",
"group": "Rozvaha – aktiva",
"label": "B. Stálá aktiva"
}
],
"year": 2026,
"period": {
"from": "2026-01-01",
"to": "2026-12-31"
},
"category": "mikro",
"opening_difference": -0.0,
"accounts": [
{
"code": "022",
"closing": 773990.0,
"previous": 0.0
},
{
"code": "211001",
"closing": 10207.0,
"previous": 0.0
}
]
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
/entities/{entity_id}/reports/cash_book – Peněžní deník
Příjmy a výdaje podle dne úhrady: úhrady faktur rozdělené podle položek a kategorií, pokladní doklady podle data vystavení a přímo zaúčtované bankovní pohyby; u plátce DPH se odděluje DPH. Určeno pro daňovou evidenci, způsob vedení kód nekontroluje.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
year | dotaz | celé číslo | ne | Účetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026. |
from | dotaz | datum | ne | Začátek období; výchozí je začátek účetního období year. Příklad 2026-01-01. |
to | dotaz | datum | ne | Konec období včetně; výchozí je konec účetního období year. Příklad 2026-09-30. |
Pole odpovědi
| Pole | Význam |
|---|---|
rows | date, number, text, partner, category, category_name, kind, tax_relevant, amount (příjem kladně, výdaj záporně), vat, base, source (Úhrada, Pokladna, Banka), document_id. |
categories | Součty po kategoriích – code, name, kind, tax_relevant, income, expense. |
totals | income, expense a profit (jen daňové kategorie), cash_in, cash_out, vat_net. |
range | Použité období {from, to}. |
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/2/reports/cash_book?year=2026"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/2/reports/cash_book?year=2026', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"rows": [
{
"date": "2026-01-07",
"number": "alth-2025-12",
"text": "Záloha ZP prosinec 2025",
"partner": "Všeobecná zdravotní pojišťovna ČR",
"category": "V91",
"category_name": "Pojistné OSVČ – sociální a zdravotní",
"kind": "neutral",
"tax_relevant": false,
"amount": -3143.0,
"vat": 0.0,
"base": -3143.0,
"source": "Banka",
"document_id": null
},
{
"date": "2026-01-13",
"number": "VP20260001",
"text": "Kancelářské a výtvarné potřeby",
"partner": "Papírnictví Dvořák",
"category": "V01",
"category_name": "Nákup materiálu",
"kind": "expense",
"tax_relevant": true,
"amount": -678.0,
"vat": -0.0,
"base": -678.0,
"source": "Pokladna",
"document_id": 105
}
],
"categories": [
{
"code": "P01",
"name": "Příjmy z prodeje zboží",
"kind": "revenue",
"tax_relevant": true,
"income": 5340.0,
"expense": 0.0
},
{
"code": "P02",
"name": "Příjmy z prodeje výrobků a služeb",
"kind": "revenue",
"tax_relevant": true,
"income": 802149.6,
"expense": 22800.0
}
],
"totals": {
"income": 784689.6,
"expense": 163711.05,
"profit": 620978.55,
"cash_in": 807489.6,
"cash_out": 363269.95,
"vat_net": 0.0
},
"range": {
"from": "2026-01-01",
"to": "2026-12-31"
}
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
/entities/{entity_id}/reports/money – Peníze na účtech a v pokladnách
Zůstatky aktivních bankovních účtů a pokladen k datu on. V podvojném účetnictví se zůstatek účtu v Kč bere ze zápisů na jeho účtu 21x/22x; v daňové evidenci a u účtů v cizí měně z počátečního stavu, pohybů, ručních úhrad a pokladních dokladů. balance_czk účtu v cizí měně je v podvojném účetnictví účetní hodnota, v daňové evidenci přepočet kurzem ČNB k datu (bez kurzu null).
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
on | dotaz | datum | ne | Datum zůstatků; výchozí je dnešek. Příklad 2026-09-30. |
Pole odpovědi
| Pole | Význam |
|---|---|
accounts | id, name, kind (bank nebo cash), currency, number, iban, account_code, balance (v měně účtu), balance_czk. |
total_czk | Součet balance_czk. |
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/reports/moneyJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/reports/money', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"accounts": [
{
"id": 2,
"name": "Provozní účet",
"kind": "bank",
"currency": "CZK",
"number": "2900001227/2010",
"iban": "CZ3820100000002900001227",
"account_code": "221001",
"balance": 887525.6,
"balance_czk": 887525.6
},
{
"id": 6,
"name": "Rezervní účet",
"kind": "bank",
"currency": "CZK",
"number": "2900005005/2010",
"iban": null,
"account_code": "221002",
"balance": 0.0,
"balance_czk": 0.0
}
],
"total_czk": 897732.6
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
/entities/{entity_id}/reports/compliance – Kontroly lhůt a limitů
Kontroly k dnešku: oprava odpočtu DPH u faktur 6 měsíců po splatnosti (§ 74b ZDPH), daňové doklady vystavené po lhůtě, čísla dodavatelů delší než 60 znaků pro kontrolní hlášení, hotovostní platby nad 270 000 Kč, nespolehliví plátci a kontakty v insolvenci podle uloženého stavu kontaktů (bez dotazu do registrů), registrace k DPH u neplátce a vratka záloh OSVČ v roce 2026. Kontroly DPH běží jen u plátce.
Pole odpovědi
| Pole | Význam |
|---|---|
checks | level (critical, warning, info), key (vat_74b, issue_15, kh_number, cash_limit, unreliable, insolvency, vat_registration, sp_refund_2026), title, detail, document_id, number. |
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
https://techtools.cz/ucetnictvi-api/entities/1/reports/complianceJavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/reports/compliance', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"checks": []
}
/entities/{entity_id}/reports/forecast – Výhled peněz na dny dopředu
Dnešní zůstatek všech účtů a pokladen plus očekávané příjmy a výdaje: neuhrazené vystavené faktury, zálohové faktury a dobropisy k datu splatnosti (po splatnosti odhadem za 7 dní u pohledávek a za 3 dny u závazků), aktivní opakované faktury, DPH, mzdy a zálohy OSVČ. Vrací denní průběh, týdenní součty a nejnižší bod.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
days | dotaz | celé číslo | ne | Horizont ve dnech; mimo rozsah se ořízne. Výchozí 90. Rozsah od 14 do 180. Příklad 30. |
Pole odpovědi
| Pole | Význam |
|---|---|
opening | Dnešní zůstatek v Kč; closing zůstatek na konci horizontu (until). |
inflow | Součet očekávaných příjmů; outflow výdajů (záporně). |
low | Den s nejnižším zůstatkem {date, change, balance}. |
series | Každý den horizontu včetně dneška – date, change, balance. |
weeks | Po týdnech – week (pondělí), inflow, outflow. |
items | Nejvýše 60 položek – date, amount, kind (receivable, payable, recurring, vat, payroll, zp, sp), estimated, label, u faktur document_id a overdue; count je jejich celkový počet. |
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/reports/forecast?days=30"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/reports/forecast?days=30', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"today": "2026-09-28",
"until": "2026-10-28",
"opening": 897732.6,
"closing": 1010473.6,
"inflow": 251918.0,
"outflow": -139177.0,
"low": {
"date": "2026-09-28",
"change": 0.0,
"balance": 897732.6
},
"series": [
{
"date": "2026-09-28",
"change": 0.0,
"balance": 897732.6
},
{
"date": "2026-09-29",
"change": 0.0,
"balance": 897732.6
}
],
"weeks": [
{
"week": "2026-10-05",
"inflow": 72600.0,
"outflow": -17545.0
},
{
"week": "2026-10-12",
"inflow": 101398.0,
"outflow": -49230.0
}
],
"items": [
{
"date": "2026-10-05",
"amount": 72600.0,
"kind": "receivable",
"estimated": true,
"label": "FV20260024 · Atelier Lumen s.r.o.",
"document_id": 27,
"overdue": true
},
{
"date": "2026-10-09",
"amount": -17545.0,
"kind": "payable",
"estimated": false,
"label": "FP20260039 · Coworking Karlín s.r.o.",
"document_id": 144,
"overdue": false
}
],
"count": 8
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
/entities/{entity_id}/reports/projects – Zakázky a střediska
Výnosy, náklady a marže po zakázkách nebo střediscích z vystavených dokladů účetního období podle DUZP (jinak data vystavení). U neplátce DPH a u neodpočitatelné DPH se DPH počítá do nákladů. Doklady bez zakázky nebo střediska tvoří vlastní řádek. S only=values vrátí jen seznam použitých hodnot.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
year | dotaz | celé číslo | ne | Účetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026. |
dimension | dotaz | text | ne | project = zakázka, cost_center = středisko; jiná hodnota znamená project. Hodnoty: project, cost_center. Výchozí project. Příklad cost_center. |
only | dotaz | text | ne | values = vrátit jen {values}. Hodnoty: values. Příklad values. |
Pole odpovědi
| Pole | Význam |
|---|---|
rows | key, label, revenue, costs, margin, margin_share (%), documents_count, months (12 měsíčních výsledků) a documents (nejvýše 200 nejnovějších – id, number, kind, partner, date, amount). |
totals | revenue, costs, margin, margin_share. |
values | Použité hodnoty {project: [], cost_center: []}, každé nejvýše 500. |
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/reports/projects?dimension=cost_center"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/reports/projects?dimension=cost_center', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"year": 2026,
"dimension": "cost_center",
"rows": [
{
"key": "Praha",
"label": "Praha",
"revenue": 1199090.0,
"costs": 532612.5,
"margin": 666477.5,
"margin_share": 55.6,
"documents_count": 58,
"months": [
103257.5,
-48702.5
],
"documents": [
{
"id": 23,
"number": "FV20260023",
"kind": "invoice_out",
"partner": "Hafenlicht GmbH",
"date": "2026-09-21",
"amount": 77920.0
},
{
"id": 70,
"number": "VP20260005",
"kind": "cash_out",
"partner": "Papírnictví Dvořák",
"date": "2026-09-13",
"amount": -1860.0
}
]
},
{
"key": "Morava",
"label": "Morava",
"revenue": 769700.0,
"costs": 689000.0,
"margin": 80700.0,
"margin_share": 10.5,
"documents_count": 12,
"months": [
0.0,
-519400.0
],
"documents": [
{
"id": 22,
"number": "FV20260022",
"kind": "invoice_out",
"partner": "Kavárna U Zeleného stromu s.r.o.",
"date": "2026-09-15",
"amount": 64000.0
},
{
"id": 27,
"number": "FV20260024",
"kind": "invoice_out",
"partner": "Atelier Lumen s.r.o.",
"date": "2026-09-13",
"amount": 120000.0
}
]
}
],
"values": {
"project": [
"Rebranding kavárny",
"Redesign e-shopu Lumen"
],
"cost_center": [
"Morava",
"Praha"
]
},
"totals": {
"revenue": 1988590.0,
"costs": 1236112.5,
"margin": 752477.5,
"margin_share": 37.8
}
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
/entities/{entity_id}/reports/insights – Přehled pro majitele
Kolik peněz je opravdu k dispozici po odečtení DPH, rezervy na daň z příjmů a závazků splatných do 14 dnů (available); u OSVČ kolik si měsíčně odkládat na daň a pojistné (set_aside); průměrné měsíční spalování a na jak dlouho peníze vystačí podle posledních 6 ukončených měsíců (runway); srovnání tržeb, nákladů, marže a doby úhrady faktur s loňskem (health).
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
year | dotaz | celé číslo | ne | Účetní období pro health; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026. |
Pole odpovědi
| Pole | Význam |
|---|---|
available | total, total_with_receivables, horizon, money, vat, reserve, payables, receivables. |
set_aside | Jen u fyzické osoby, jinak null. |
runway | months_used, from, to, burn, money, months, until, series. |
health | Srovnání s loňskem včetně dso a dpo; null, pokud účetní období ještě nezačalo. |
segment | Segment z profilu firmy (osvc, startup, small, growing, accountant); natural_person je boolean. |
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/reports/insights?year=2026"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/reports/insights?year=2026', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"year": 2026,
"today": "2026-09-28",
"segment": "small",
"natural_person": false,
"available": {
"total": 678081.6,
"total_with_receivables": 702039.6,
"horizon": "2026-10-12",
"money": {
"total": 897732.6,
"accounts": [
{
"id": 2,
"name": "Provozní účet",
"kind": "bank",
"currency": "CZK",
"balance": 887525.6,
"balance_czk": 887525.6
},
{
"id": 6,
"name": "Rezervní účet",
"kind": "bank",
"currency": "CZK",
"balance": 0.0,
"balance_czk": 0.0
}
]
},
"vat": {
"due": 43556.0,
"refund": 0.0,
"periods": [
{
"key": "2026-09",
"label": "září 2026",
"deadline": "2026-10-26",
"complete": false,
"own_tax": 43556.0,
"excess_deduction": 0.0
}
]
},
"reserve": {
"kind": "dppo",
"amount": 158550.0,
"tax": 158550.0,
"paid": 0.0,
"profit": 910133.6,
"rate": 0.21,
"from": "2026-01-01",
"to": "2026-09-28"
},
"payables": {
"amount": 17545.0,
"count": 1,
"overdue_amount": 0.0,
"overdue_count": 0
},
"receivables": {
"amount": 23958.0,
"count": 1,
"overdue_amount": 0.0,
"overdue_count": 0
}
},
"set_aside": null,
"runway": {
"months_used": 6,
"from": "2026-03-01",
"to": "2026-08-31",
"burn": -39578.85,
"money": 897732.6,
"months": null,
"until": null,
"series": [
{
"month": "2026-03-01",
"inflow": 329786.0,
"outflow": 1019307.4,
"financing": 0.0,
"net": -689521.4
},
{
"month": "2026-04-01",
"inflow": 315145.0,
"outflow": 94277.5,
"financing": 0.0,
"net": 220867.5
}
]
},
"health": {
"from": "2026-01-01",
"to": "2026-09-28",
"previous_from": "2025-01-01",
"previous_to": "2025-09-28",
"current": {
"revenue": 1990955.1,
"costs": 1080821.5,
"result": 910133.6,
"sales": 1988590.0,
"direct_costs": 464522.5
},
"previous": {
"revenue": 0.0,
"costs": 0.0,
"result": 0.0,
"sales": 0.0,
"direct_costs": 0.0
},
"has_previous": false,
"change": {
"revenue": null,
"costs": null,
"result": null
},
"difference": {
"revenue": 1990955.1,
"costs": 1080821.5,
"result": 910133.6
},
"gross_margin": {
"share": 76.6,
"previous": null
},
"dso": {
"days": 15,
"count": 23,
"terms": 17,
"previous": null
},
"dpo": {
"days": 9,
"count": 38,
"terms": 11,
"previous": null
}
}
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
GET Kontrolní seznam roční uzávěrky
/entities/{entity_id}/closing
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
Vrátí kroky roční uzávěrky účetního období se stavem každého kroku (banka, koncepty, pohledávky po splatnosti, odpisy, kurzové rozdíly, mzdy, DPH, daň z příjmů, výkazy, uzamčení), náhled kurzových rozdílů k rozvahovému dni a vypočtenou a zaúčtovanou daň z příjmů právnické osoby. Kroky, které se firmy netýkají, se vynechají: odpisy, kurzové rozdíly a výkazy v daňové evidenci, odpisy také bez odpisovaného majetku, banka bez bankovního účtu, mzdy bez pracovníků, DPH bez registrace k DPH a daň z příjmů mimo právnické osoby v podvojném účetnictví.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
year | dotaz | celé číslo | ne | Účetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2025. |
Odpověď
200 application/json Stav roční uzávěrky.
| Pole | Význam |
|---|---|
date | Rozvahový den (poslední den účetního období); finished říká, zda už minul, locked, zda je uzamčený. |
double_entry | Zda firma vede podvojné účetnictví. |
steps | Kroky – key (bank, drafts, receivables, depreciation, revaluation, payroll, vat, income_tax, statements, lock), title, state (done, todo, warning, info, waiting), detail, action (lock, depreciation, revaluation, income_tax nebo null) a link do aplikace. |
revaluation | Náhled kurzových rozdílů (jako odpověď postFxRevaluation); do rozvahového dne včetně {future: true, rows: [], posted: false}; v daňové evidenci null. |
income_tax | computed (daň podle výpočtu, celé Kč), posted (zaúčtováno 591), entry_date, up_to_date; null mimo právnické osoby v podvojném účetnictví. |
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | U právnické osoby v podvojném účetnictví pro rok, pro který Saldo nemá zákonné sazby daně z příjmů – výpočet daně selže („Pro rok RRRR nejsou k dispozici zákonné sazby“) a kontrolní seznam se nevrátí. |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Nic nezapisuje. Po rozvahovém dni načítá kurzy ČNB k náhledu kurzových rozdílů.
Příklad
cURL
curl \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/closing?year=2026"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/closing?year=2026', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"year": 2026,
"date": "2026-12-31",
"finished": false,
"locked": false,
"double_entry": true,
"steps": [
{
"key": "bank",
"title": "Bankovní výpisy za celý rok",
"state": "todo",
"detail": "6 nespárovaných pohybů v tomto účetním roce. Provozní účet: poslední pohyb 25. 9. 2026 · Rezervní účet: žádné pohyby",
"action": null,
"link": "#/banka"
},
{
"key": "drafts",
"title": "Koncepty dokladů",
"state": "warning",
"detail": "2 koncepty s datem v roce 2026 – koncepty se nezaúčtují, dokud je nevystavíte.",
"action": null,
"link": "#/doklady/vydane"
}
],
"revaluation": {
"future": true,
"rows": [],
"posted": false
},
"income_tax": {
"computed": 158550.0,
"posted": 0.0,
"entry_date": "2026-12-31",
"up_to_date": false
}
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
GET Kontrolní seznam měsíční uzávěrky
/entities/{entity_id}/closing/month
- Oprávnění
- Každý člen firmy včetně role Jen čtení
- Klíč jen pro čtení
- Stačí
Vrátí kroky měsíční uzávěrky zvoleného měsíce: banka za celý měsíc (nespárované pohyby a pokrytí výpisy), koncepty, skeny přijatých dokladů, záporná pokladna, přiznání k DPH a kontrolní hlášení (u plátce), mzdy a uzamčení. Kroky, které se firmy netýkají, se vynechají.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
year | dotaz | celé číslo | ne | Kalendářní rok; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026. |
month | dotaz | celé číslo | ano | Měsíc 1–12. Rozsah od 1 do 12. Příklad 8. |
Odpověď
200 application/json Stav měsíční uzávěrky.
| Pole | Význam |
|---|---|
from | První den měsíce; date poslední den, finished zda měsíc skončil, locked zda je uzamčený. |
steps | Kroky – key (bank, drafts, attachments, cash, vat, kh, payroll, lock), title, state (done, todo, warning, info, waiting), detail, action (lock nebo null), link. |
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 400 | – | month chybí nebo není 1–12 („Zvolte měsíc 1–12“). |
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/closing/month?year=2026&month=1"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/closing/month?year=2026&month=1', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY }
});
const data = await response.json();{
"year": 2026,
"month": 1,
"from": "2026-01-01",
"date": "2026-01-31",
"finished": true,
"locked": false,
"steps": [
{
"key": "bank",
"title": "Banka za celý měsíc",
"state": "info",
"detail": "Všechny evidované pohyby měsíce jsou spárované, ale uložené výpisy nepokrývají celý měsíc – v Saldu chybí datový export a PDF výpis pro: Provozní účet (1. 1. – 31. 1. 2026), Rezervní účet (1. 1. – 31. 1. 2026). Provozní účet: poslední pohyb 30. 1. 2026 · Rezervní účet: zatím žádné pohyby",
"action": null,
"link": "#/banka"
},
{
"key": "drafts",
"title": "Koncepty dokladů",
"state": "done",
"detail": "Žádné rozpracované doklady s datem v tomto měsíci.",
"action": null,
"link": null
}
]
}
Dlouhé seznamy jsou v ukázce zkrácené na první položky.
POST Zaúčtování kurzových rozdílů k rozvahovému dni
/entities/{entity_id}/closing/revaluation
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Přecení otevřené vydané a přijaté faktury a dobropisy v cizí měně (podle zůstatku na 311/321) a bankovní účty a pokladny v cizí měně kurzem ČNB k rozvahovému dni a rozdíly zaúčtuje na 563/663. U faktur se k prvnímu dni dalšího období zaúčtuje storno (pokud není uzamčeno), u účtů a pokladen ne. Účet v cizí měně s nespárovanými pohyby do rozvahového dne se nepřecení. Dřívější přecenění téhož roku se nejdřív smaže, výsledek tedy nahrazuje předchozí.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
year | dotaz | celé číslo | ne | Účetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2025. |
Odpověď
200 application/json Náhled přecenění po zaúčtování.
| Pole | Význam |
|---|---|
date | Rozvahový den; reversal_date den storna u faktur. |
rows | Položky – type (document nebo money), id, label, account, currency, open_amount, book_value, book_rate, rate, new_value, difference, effect, reverse, number, kind, blocked (důvod, proč se nepřecenila). |
gain | Kurzové zisky; loss ztráty; net výsledek přecenění. |
missing_rates | Měny bez kurzu ČNB (při zaúčtování vedou k chybě). |
blocked | Počet účtů čekajících na spárování pohybů. |
posted | Zda k rozvahovému dni existuje aspoň jeden zápis přecenění – bez nenulového rozdílu zůstane false i po zaúčtování; posted_on je čas vytvoření posledního zápisu. |
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Firma nevede podvojné účetnictví („Kurzové rozdíly k rozvahovému dni se účtují jen v podvojném účetnictví“). |
| 422 | – | Rozvahový den je v uzamčeném období („Období k … je uzamčeno – kurzové rozdíly už nelze měnit“). |
| 422 | – | Rozvahový den ještě nenastal („Kurzové rozdíly se účtují až po rozvahovém dni …“). |
| 422 | – | Pro některou měnu chybí kurz ČNB („Chybí kurz ČNB k … pro …“). |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Smaže dřívější zápisy přecenění k rozvahovému dni a ke dni storna, vytvoří nové zápisy 563/663 (zdroj revaluation) a u faktur jejich storna, zapíše událost closing.revaluation do historie změn. Načítá kurzy ČNB.
- Opakování
- Opakování vede ke stejnému zaúčtování (staré zápisy se nahradí), pokaždé ale přibude událost v historii.
Příklad
Ukázková firma nemá ke konci roku 2025 položky v cizí měně, výsledek proto nemá řádky, nic se nezaúčtuje a posted zůstane false.
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/closing/revaluation?year=2025"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/closing/revaluation?year=2025', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY },
method: 'POST'
});
const data = await response.json();{
"year": 2025,
"date": "2025-12-31",
"reversal_date": "2026-01-01",
"rows": [],
"gain": 0.0,
"loss": 0.0,
"net": 0.0,
"missing_rates": [],
"blocked": 0,
"posted": false,
"posted_on": null
}
DELETE Zrušení kurzových rozdílů k rozvahovému dni
/entities/{entity_id}/closing/revaluation
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Smaže zápisy přecenění k rozvahovému dni a jejich storna ke dni následujícímu. Platí stejné podmínky jako pro zaúčtování, včetně toho, že rozvahový den už musí minout.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
year | dotaz | celé číslo | ne | Účetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2025. |
Odpověď
200 application/json Náhled přecenění po zrušení (stejný tvar jako u postFxRevaluation, posted false).
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Firma nevede podvojné účetnictví („Kurzové rozdíly k rozvahovému dni se účtují jen v podvojném účetnictví“). |
| 422 | – | Rozvahový den je v uzamčeném období („Období k … je uzamčeno – kurzové rozdíly už nelze měnit“). |
| 422 | – | Rozvahový den ještě nenastal („Kurzové rozdíly se účtují až po rozvahovém dni …“). |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Smaže zápisy zdroje revaluation k rozvahovému dni a ke dni storna a zapíše událost closing.revaluation_removed do historie změn. Načítá kurzy ČNB pro náhled.
- Opakování
- Opakování nic dalšího nesmaže, ale pokaždé zapíše událost do historie.
Příklad
cURL
curl \
-X DELETE \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/closing/revaluation?year=2025"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/closing/revaluation?year=2025', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY },
method: 'DELETE'
});
const data = await response.json();{
"year": 2025,
"date": "2025-12-31",
"reversal_date": "2026-01-01",
"rows": [],
"gain": 0.0,
"loss": 0.0,
"net": 0.0,
"missing_rates": [],
"blocked": 0,
"posted": false,
"posted_on": null
}
POST Zaúčtování daně z příjmů právnické osoby
/entities/{entity_id}/closing/income_tax
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Spočítá daň z příjmů právnických osob za účetní období (zaokrouhlenou na celé Kč) a zaúčtuje ji jedním zápisem 591/341 k rozvahovému dni; dřívější zápis daně téhož období se nejdřív smaže. Nulová daň se nezaúčtuje. Kód nekontroluje, zda období už skončilo, takže daň lze zaúčtovat i za běžící rok podle dosavadních údajů.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
year | dotaz | celé číslo | ne | Účetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2025. |
Odpověď
200 application/json Stav daně po zaúčtování.
| Pole | Význam |
|---|---|
computed | Daň podle aktuálního výpočtu v celých Kč. |
posted | Součet zaúčtované daně (591) v období. |
entry_date | Datum zápisu (rozvahový den). |
up_to_date | Zda zaúčtovaná daň odpovídá výpočtu. |
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Firma není právnická osoba v podvojném účetnictví („Daň z příjmů se takto účtuje jen u právnických osob v podvojném účetnictví“). |
| 422 | – | Rozvahový den je v uzamčeném období („Rok … je uzamčený – zaúčtování daně už nelze měnit“). |
| 422 | – | Pro rok nejsou v Saldu zákonné sazby daně z příjmů („Pro rok RRRR nejsou k dispozici zákonné sazby“). |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Smaže dřívější zápisy daně (zdroj closing, MD 591) v období, vytvoří nový zápis 591/341 a zapíše událost closing.income_tax do historie změn.
- Opakování
- Opakování nahradí zápis aktuálně vypočtenou daní; pokaždé přibude událost v historii.
Příklad
cURL
curl \
-X POST \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/closing/income_tax?year=2026"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/closing/income_tax?year=2026', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY },
method: 'POST'
});
const data = await response.json();{
"computed": 158550.0,
"posted": 158550.0,
"entry_date": "2026-12-31",
"up_to_date": true
}
DELETE Zrušení zaúčtované daně z příjmů
/entities/{entity_id}/closing/income_tax
- Oprávnění
- Vlastník, účetní nebo editor
- Klíč jen pro čtení
- Nestačí, vrátí 403
READ_ONLY_KEY
Smaže zápisy daně z příjmů (591) daného účetního období. Platí stejné podmínky jako pro zaúčtování.
Parametry
| Název | Kde | Typ | Povinný | Popis |
|---|---|---|---|---|
entity_id | cesta | celé číslo | ano | Účetní jednotka (firma). Příklad 12. |
year | dotaz | celé číslo | ne | Účetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2025. |
Odpověď
200 application/json Stav daně po zrušení (computed, posted 0, entry_date, up_to_date).
Chyby této operace
| Stav | Kód | Kdy |
|---|---|---|
| 422 | – | Firma není právnická osoba v podvojném účetnictví („Daň z příjmů se takto účtuje jen u právnických osob v podvojném účetnictví“). |
| 422 | – | Rozvahový den je v uzamčeném období („Rok … je uzamčený – zaúčtování daně už nelze měnit“). |
| 422 | – | Pro rok nejsou v Saldu zákonné sazby daně z příjmů („Pro rok RRRR nejsou k dispozici zákonné sazby“) – podmínky se ověřují výpočtem daně, takže ani zrušení neproběhne. |
Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.
Chování
- Co změní
- Smaže zápisy daně období a zapíše událost closing.income_tax_removed do historie změn.
- Opakování
- Opakování nic dalšího nesmaže, ale pokaždé zapíše událost do historie.
Příklad
cURL
curl \
-X DELETE \
-H "X-API-Key: $SALDO_API_KEY" \
"https://techtools.cz/ucetnictvi-api/entities/1/closing/income_tax?year=2026"JavaScript
const response = await fetch('https://techtools.cz/ucetnictvi-api/entities/1/closing/income_tax?year=2026', {
headers: { 'X-API-Key': process.env.SALDO_API_KEY },
method: 'DELETE'
});
const data = await response.json();{
"computed": 158550.0,
"posted": 0.0,
"entry_date": "2026-12-31",
"up_to_date": false
}