SaldoDokumentace
Otevřít Saldo

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.

14 operací · vygenerováno z OpenAPI · ukázky zaznamenané na smyšlené firmě

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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.

Odpověď

200 application/json Pole účtů (bez obalového objektu).

PoleVýznam
[].idIdentifikátor účtu pro úpravu a smazání.
[].codeKód účtu nebo kategorie.
[].nameNázev.
[].kindDruh (asset, liability, equity, expense, revenue, closing, off_balance, neutral); kind_label je český název.
[].tax_relevantZda je účet daňový.
[].statement_lineRuční přiřazení řádku rozvahy nebo výkazu zisku a ztráty, jinak null.
[].activeZda 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/accounts

JavaScript

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();
Odpověď 200 OK
[
  {
    "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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.

Tělo požadavku

Formát application/json.

PoleTypPovinnéPopis
accountobjektano
account.codetextanoKód: 1–12 znaků, číslice, velká písmena, tečka a pomlčka; první znak číslice nebo písmeno.
account.nametextanoNázev, nejvýše 160 znaků.
account.kindtextanoDruh úč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.tax_relevantano/neneDaňový účet (výchozí true).
account.statement_linetextneRuč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.activeano/neneAktivní účet (výchozí true).

Odpověď

201 application/json Založený účet ve stejném tvaru jako v seznamu účtů.

Chyby této operace

StavKódKdy
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/accounts

JavaScript

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();
Odpověď 201 Created
{
  "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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.
idcestacelé čísloanoÚčet firmy (id ze seznamu účtů). Příklad 815.

Tělo požadavku

Formát application/json.

PoleTypPovinnéPopis
accountobjektano
account.nametextneNázev, nejvýše 160 znaků.
account.kindtextneDruh účtu. Hodnoty: asset, liability, equity, expense, revenue, closing, off_balance, neutral.
account.tax_relevantano/neneDaňový účet.
account.statement_linetextneRuč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.activeano/neneAktivní účet.

Odpověď

200 application/json Upravený účet.

Chyby této operace

StavKódKdy
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/431

JavaScript

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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.
idcestacelé čísloanoÚčet firmy. Příklad 902.

Odpověď

204 Bez obsahu.

Chyby této operace

StavKódKdy
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/432

JavaScript

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();
Odpověď 204 No Content
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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.
yeardotazcelé čísloneÚč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.
fromdotazdatumneZačátek období (YYYY-MM-DD); výchozí je první den účetního období year. Příklad 2026-09-01.
todotazdatumneKonec období včetně (YYYY-MM-DD); výchozí je poslední den účetního období year. Příklad 2026-09-30.
accountdotaztextneKód účtu nebo jeho začátek; zápis se vrátí, pokud jím začíná strana MD nebo Dal. Příklad 221.
qdotaztextneHledaný 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_iddotazcelé čísloneJen zápisy tohoto dokladu. Příklad 431.
source_typedotaztextneZdroje 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.
pagedotazcelé čísloneStránka od 1. Výchozí 1. Rozsah od 1. Příklad 1.
perdotazcelé číslonePoč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.

PoleVýznam
totalPočet všech vyhovujících zápisů.
sumSoučet částek všech vyhovujících zápisů v Kč.
pageVrácená stránka; per je velikost stránky.
rowsZá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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.

Tělo požadavku

Formát application/json.

PoleTypPovinnéPopis
entryobjektano
entry.datedatumanoDatum zápisu (YYYY-MM-DD); chybějící nebo neplatné datum vrátí 400.
entry.debit_accounttextanoÚčet strany MD (1–12 znaků, číslice, písmena, tečka, pomlčka).
entry.credit_accounttextanoÚčet strany Dal; musí se lišit od MD.
entry.amountčísloneČástka v Kč; přijme i desetinnou čárku („1500,50“).
entry.texttextneText zápisu; delší než 250 znaků se zkrátí.
entry.openingano/nenetrue = 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

StavKódKdy
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/entries

JavaScript

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();
Odpověď 201 Created
{
  "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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.
idcestacelé čísloanoRuční zápis nebo počáteční stav bez zdroje. Příklad 5120.

Odpověď

204 Bez obsahu.

Chyby této operace

StavKódKdy
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/321

JavaScript

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();
Odpověď 204 No Content
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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.
reportcestatextanoSestava. 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

StavKódKdy
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ázevKdeTypPovinnýPopis
yeardotazcelé čísloneÚč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

PoleVýznam
months12 měsíců – month, label (MM/YYYY), revenue, costs, profit; totals je jejich součet.
moneyZůstatky účtů a pokladen k dnešku (jako sestava money).
receivablesOtevř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é.
vatU plátce DPH odhad za běžné období – from, to, frequency, output, input, due, deadline; u neplátce null.
countsdrafts (koncepty), unmatched (nespárované pohyby), partners, documents (doklady období).
alertsUpozornění – level, key, title, detail, amount, action; obsahuje i nejvýše 6 kontrol ze sestavy compliance.
top_customers5 odběratelů s nejvyšším základem v Kč za období – partner_id, name, amount; top_suppliers totéž pro dodavatele.
recent8 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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
yeardotazcelé čísloneÚčetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026.
fromdotazdatumneZačátek období; výchozí je začátek účetního období year. Příklad 2026-01-01.
todotazdatumneKonec období včetně; výchozí je konec účetního období year. Příklad 2026-09-30.

Pole odpovědi

PoleVýznam
rowscode, name, kind, opening, debit, credit, closing.
totalsdebit, credit, balanced (MD = Dal), opening, closing.
rangePouž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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
codedotaztextanoKód účtu nebo jeho začátek (převede se na velká písmena); bez něj vrátí 400. Příklad 311.
yeardotazcelé čísloneÚčetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026.
fromdotazdatumneZačátek období; výchozí je začátek účetního období year. Příklad 2026-01-01.
todotazdatumneKonec období včetně; výchozí je konec účetního období year. Příklad 2026-09-30.

Pole odpovědi

PoleVýznam
codeKód z dotazu; name je název účtu s přesně tímto kódem, jinak null.
openingPočáteční stav k začátku období.
linesZápisy jako v deníku doplněné o debit, credit a balance (průběžný zůstatek).
debitObrat MD; credit obrat Dal; closing konečný stav.
rangePouž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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
sidedotaztextnereceivables = vydané faktury a dobropisy, payables = přijaté; jiná hodnota znamená receivables. Hodnoty: receivables, payables. Výchozí receivables. Příklad payables.
as_ofdotazdatumneDatum, ke kterému se saldokonto počítá; výchozí je dnešek. Příklad 2026-09-30.

Pole odpovědi

PoleVýznam
partnersKontakty 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).
bucketsSoučty podle stáří – not_due, d30, d60, d90, d90plus (key, label, total_czk).
total_czkSoučet otevřených položek v Kč.
reconciliationJen 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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
yeardotazcelé čísloneÚč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

PoleVýznam
rozvahascope, full, aktiva, pasiva, aktiva_total, pasiva_total, cizi_zdroje, balanced, difference.
vzzVýkaz zisku a ztráty – layout, lines a result (provozni, financni, pred_dani, dan, po_dani, za_obdobi, cisty_obrat).
cashflowPřehled o peněžních tocích odvozený z výkazů; equity přehled o změnách vlastního kapitálu.
resultvh_za_obdobi, vh_za_obdobi_prev, vh_pred_zdanenim.
checksKontroly výkazů; unmapped jsou účty se zůstatkem bez přiřazeného řádku.
row_mapPřiřazení účtů k řádkům; line_options jsou platné hodnoty statement_line pro účty.
periodObdobí {from, to}; category je kategorie účetní jednotky, opening_difference nevyrovnaný zůstatek účtu 701.
accountsKoneč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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
yeardotazcelé čísloneÚčetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026.
fromdotazdatumneZačátek období; výchozí je začátek účetního období year. Příklad 2026-01-01.
todotazdatumneKonec období včetně; výchozí je konec účetního období year. Příklad 2026-09-30.

Pole odpovědi

PoleVýznam
rowsdate, 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.
categoriesSoučty po kategoriích – code, name, kind, tax_relevant, income, expense.
totalsincome, expense a profit (jen daňové kategorie), cash_in, cash_out, vat_net.
rangePouž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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
ondotazdatumneDatum zůstatků; výchozí je dnešek. Příklad 2026-09-30.

Pole odpovědi

PoleVýznam
accountsid, name, kind (bank nebo cash), currency, number, iban, account_code, balance (v měně účtu), balance_czk.
total_czkSoučet balance_czk.

Příklad

cURL

curl \
  -H "X-API-Key: $SALDO_API_KEY" \
  https://techtools.cz/ucetnictvi-api/entities/1/reports/money

JavaScript

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();
Odpověď 200 OK
{
  "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

PoleVýznam
checkslevel (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/compliance

JavaScript

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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
daysdotazcelé čísloneHorizont ve dnech; mimo rozsah se ořízne. Výchozí 90. Rozsah od 14 do 180. Příklad 30.

Pole odpovědi

PoleVýznam
openingDnešní zůstatek v Kč; closing zůstatek na konci horizontu (until).
inflowSoučet očekávaných příjmů; outflow výdajů (záporně).
lowDen s nejnižším zůstatkem {date, change, balance}.
seriesKaždý den horizontu včetně dneška – date, change, balance.
weeksPo týdnech – week (pondělí), inflow, outflow.
itemsNejvýš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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
yeardotazcelé čísloneÚčetní období začínající v tomto roce; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026.
dimensiondotaztextneproject = zakázka, cost_center = středisko; jiná hodnota znamená project. Hodnoty: project, cost_center. Výchozí project. Příklad cost_center.
onlydotaztextnevalues = vrátit jen {values}. Hodnoty: values. Příklad values.

Pole odpovědi

PoleVýznam
rowskey, 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).
totalsrevenue, costs, margin, margin_share.
valuesPouž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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
yeardotazcelé čísloneÚčetní období pro health; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026.

Pole odpovědi

PoleVýznam
availabletotal, total_with_receivables, horizon, money, vat, reserve, payables, receivables.
set_asideJen u fyzické osoby, jinak null.
runwaymonths_used, from, to, burn, money, months, until, series.
healthSrovnání s loňskem včetně dso a dpo; null, pokud účetní období ještě nezačalo.
segmentSegment 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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.
yeardotazcelé čísloneÚč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.

PoleVýznam
dateRozvahový den (poslední den účetního období); finished říká, zda už minul, locked, zda je uzamčený.
double_entryZda firma vede podvojné účetnictví.
stepsKroky – 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.
revaluationNá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_taxcomputed (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

StavKódKdy
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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.
yeardotazcelé čísloneKalendářní rok; výchozí je aktuální rok. Rozsah od 2000 do 2100. Příklad 2026.
monthdotazcelé čísloanoMěsíc 1–12. Rozsah od 1 do 12. Příklad 8.

Odpověď

200 application/json Stav měsíční uzávěrky.

PoleVýznam
fromPrvní den měsíce; date poslední den, finished zda měsíc skončil, locked zda je uzamčený.
stepsKroky – 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

StavKódKdy
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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.
yeardotazcelé čísloneÚč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í.

PoleVýznam
dateRozvahový den; reversal_date den storna u faktur.
rowsPolož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).
gainKurzové zisky; loss ztráty; net výsledek přecenění.
missing_ratesMěny bez kurzu ČNB (při zaúčtování vedou k chybě).
blockedPočet účtů čekajících na spárování pohybů.
postedZda 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

StavKódKdy
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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.
yeardotazcelé čísloneÚč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

StavKódKdy
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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.
yeardotazcelé čísloneÚč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í.

PoleVýznam
computedDaň podle aktuálního výpočtu v celých Kč.
postedSoučet zaúčtované daně (591) v období.
entry_dateDatum zápisu (rozvahový den).
up_to_dateZda zaúčtovaná daň odpovídá výpočtu.

Chyby této operace

StavKódKdy
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();
Odpověď 200 OK
{
  "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ázevKdeTypPovinnýPopis
entity_idcestacelé čísloanoÚčetní jednotka (firma). Příklad 12.
yeardotazcelé čísloneÚč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

StavKódKdy
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();
Odpověď 200 OK
{
  "computed": 158550.0,
  "posted": 0.0,
  "entry_date": "2026-12-31",
  "up_to_date": false
}