SaldoDokumentace Otevřít Saldo

Reference API

Veřejné kalkulátory a číselníky

Operace bez přihlášení: zákonné sazby, svátky a lhůty, číselníky, kalkulátory (DPH, daně a pojistné, mzda, cestovní náhrady, odpisy, úrok z prodlení), QR Platba, čtení ISDOC, veřejný náhled sdílené faktury a popis API. Do účetnictví nic nezapisují; náhled sdílené faktury jen zaznamená, že ji někdo otevřel.

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

GET Stručný popis API ve formátu JSON

/docs

Oprávnění
Veřejné, bez přihlášení

Vrátí statický přehled API Salda: konvence (peníze, data, chyby, přihlášení, ochrana proti CSRF, limity), veřejné endpointy s ukázkovými vstupy a stručný seznam endpointů účetních jednotek. Obsah je napsaný v kódu (Ucetnictvi::ApiDocs), nikoli generovaný z rout. Úplný strojový popis operací je v GET /openapi.json.

Odpověď

200 application/json Objekt s popisem API.

PoleVýznam
nameNázev API
versionVerze popisu
descriptionStručný popis API (anglicky)
base_urlZákladní adresa https://techtools.cz/ucetnictvi-api
uiAdresa aplikace Saldo
conventionsKonvence: money, dates, errors, auth, csrf, rate_limits
public_endpointsVeřejné endpointy s ukázkovými vstupy kalkulaček
account_endpointsStručný přehled endpointů, které vyžadují přihlášení
disclaimerUpozornění, že výpočty nejsou daňovým poradenstvím

Chování

Co změní
Nic nezapisuje.

Příklad

cURL

curl \
  https://techtools.cz/ucetnictvi-api/docs

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/docs');
const data = await response.json();
Odpověď 200 OK
{
  "name": "Saldo – TechTools účetnictví API",
  "version": "1.1",
  "description": "Czech bookkeeping for s.r.o. and OSVČ: invoices, bank matching, double-entry ledger or daňová evidence, VAT return + kontrolní hlášení + souhrnné hlášení with EPO XML, income tax (DPFO/DPPO), OSVČ insurance, income tax returns (DPFO/DPPO) as EPO XML, OSVČ insurance, payroll, travel allowances and depreciation, plus shared invoice links, attachments, quotes and orders, Fio bank feeds and insolvency checks. Public calculators need no account; bookkeeping endpoints need a personal API key or the TechTools session cookie.",
  "base_url": "https://techtools.cz/ucetnictvi-api",
  "ui": "https://techtools.cz/tools/ucetnictvi/",
  "documentation": "https://techtools.cz/tools/ucetnictvi/dokumentace/api/",
  "openapi": "https://techtools.cz/ucetnictvi-api/openapi.json",
  "conventions": {
    "money": "JSON numbers in the document currency, 2 decimals; *_czk fields are converted with the document exchange rate",
    "dates": "ISO 8601 (YYYY-MM-DD)",
    "errors": "{ \"error\": \"human readable message (Czech)\" } with 400/401/403/404/422",
    "auth": "Agents: create a key in Saldo → Nastavení → API a integrace and send it as \"X-API-Key: saldo_…\" or \"Authorization: Bearer saldo_…\". A key acts with its owner's rights in every firm they belong to; read-only keys refuse every non-GET request (403 READ_ONLY_KEY). Browsers: the session cookie (_techtools4_session, fetch credentials: \"include\").",
    "csrf": "Every non-GET request that carries the session cookie must also send \"X-Saldo: 1\"; cross-site requests (Origin or Sec-Fetch-Site from another site) are refused with 403 CROSS_SITE. Requests without cookies (API keys, curl to the public calculators) need no extra header.",
    "rate_limits": "API keys: 600 requests per minute (429 RATE_LIMITED). Calculators are CPU-only and stateless; inputs are bounded (numbers ≤ 15 digits, dates 2000–2100)"
  },
  "public_endpoints": {
    "docs": {
      "method": "GET",
      "path": "/docs"
    },
    "rates": {
      "method": "GET",
      "path": "/rates?year=2026",
      "returns": "every statutory constant used by the engines, with source URLs and reviewed_on (the date they were last checked against the law)"
    },
    "holidays": {
      "method": "GET",
      "path": "/holidays?year=2026",
      "returns": "Czech public holidays (deadline shifting: § 33 odst. 4 daňového řádu, § 23 odst. 3 zákona č. 589/1992 Sb.)"
    },
    "deadlines": {
      "method": "GET",
      "path": "/deadlines?year=2026&legal_form=osvc&vat=quarterly&employees=true",
      "params": {
        "legal_form": "osvc|sro|as",
        "vat": "none|monthly|quarterly|identified",
        "employees": "bool",
        "advisor": "bool",
        "databox": "bool",
        "flat_tax": "bool",
        "recap_statement": "bool",
        "real_estate": "bool",
        "road_tax": "bool"
      },
      "returns": "{ events: [{ date, title, detail, category, basis }] } — every tax and insurance deadline, shifted to business days"
    },
    "codebooks": {
      "method": "GET",
      "path": "/codebooks",
      "returns": "document kinds, VAT modes, account kinds, insurers, EU countries, RC codes, tax offices…"
    },
    "qr_platba": {
      "method": "GET",
      "path": "/qr?iban=CZ6508000000192000145399&amount=1210&vs=20260001&message=Faktura",
      "returns": "{ spayd: \"SPD*1.0*ACC:…\" } — the Czech QR Platba string (render it as a QR code)"
    },
    "shared_document": {
      "method": "GET",
      "path": "/share/:token",
      "returns": "public view of a shared invoice (JSON: document, entity, bank_account, spayd); GET /share/:token/isdoc downloads its ISDOC. The page is /tools/ucetnictvi/faktura/#<token>"
    },
    "isdoc_parse": {
      "method": "POST",
      "path": "/isdoc/parse",
      "body": "multipart field file (.isdoc/.isdocx, or a PDF with embedded ISDOC) or the raw XML as the request body",
      "returns": "normalized invoice: parties, lines, VAT recap, payment details",
      "example": "curl -F file=@faktura.isdoc https://techtools.cz/ucetnictvi-api/isdoc/parse"
    },
    "calculators": {
      "method": "POST",
      "path": "/calc/:calculator",
      "body": "JSON object (Content-Type: application/json) or form fields",
      "available": {
        "vat": {
          "input": {
            "net": 1000,
            "rate": 21
          },
          "alt": {
            "gross": 1210,
            "rate": 21
          }
        },
        "osvc": {
          "input": {
            "year": 2026,
            "income": 900000,
            "flat_rate": 60,
            "children": [
              {
                "order": 1
              }
            ],
            "spouse": false
          },
          "returns": "DPFO tax, credits, child bonus, social and health insurance, advances for next year"
        },
        "regime": {
          "input": {
            "year": 2026,
            "income": 900000,
            "expenses": 250000
          },
          "returns": "ranked comparison of actual expenses vs výdajové paušály vs paušální daň with the recommendation"
        },
        "flat_tax": {
          "input": {
            "year": 2026,
            "income": 1400000,
            "income_kind": "services",
            "vat_payer": false
          }
        },
        "corporate": {
          "input": {
            "year": 2026,
            "accounting_profit": 1250000,
            "non_deductible": [
              {
                "label": "Reprezentace",
                "amount": 18000
              }
            ]
          },
          "optional": "gifts (pole částek jednotlivých darů – odečítají se jen dary od 2 000 Kč, § 20 odst. 8 ZDP), loss_carryforward, rd_deduction, paid_advances, last_known_tax"
        },
        "payroll": {
          "input": {
            "year": 2026,
            "month": 9,
            "contract": "hpp",
            "gross": 52000,
    
…

GET Popis API ve formátu OpenAPI 3.1

/openapi.json

Oprávnění
Veřejné, bez přihlášení

Vrátí popis API ve formátu OpenAPI 3.1 (JSON) pro generátory klientů a AI agenty. Routa nepřijímá příponu formátu, cesta je vždy přesně /openapi.json.

Odpověď

200 application/json Dokument OpenAPI 3.1: info, servers, components (securitySchemes apiKey, bearer a session), paths.

Chování

Co změní
Nic nezapisuje.

Příklad

cURL

curl \
  https://techtools.cz/ucetnictvi-api/openapi.json

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/openapi.json');
const data = await response.json();
Odpověď 200 OK
{
  "openapi": "3.1.0",
  "info": {
    "title": "Saldo – TechTools účetnictví API",
    "version": "1.1",
    "description": "Czech bookkeeping for s.r.o. and OSVČ: invoices, bank matching, double-entry ledger or daňová evidence, VAT return + kontrolní hlášení + souhrnné hlášení with EPO XML, income tax (DPFO/DPPO), OSVČ insurance, income tax returns (DPFO/DPPO) as EPO XML, OSVČ insurance, payroll, travel allowances and depreciation, plus shared invoice links, attachments, quotes and orders, Fio bank feeds and insolvency checks. Public calculators need no account; bookkeeping endpoints need a personal API key or the TechTools session cookie.",
    "contact": {
      "url": "https://techtools.cz/tools/ucetnictvi/"
    }
  },
  "servers": [
    {
      "url": "https://techtools.cz/ucetnictvi-api"
    }
  ],
  "externalDocs": {
    "url": "https://techtools.cz/tools/ucetnictvi/dokumentace/api/",
    "description": "Dokumentace API v češtině: rychlý start, oprávnění, chyby, limity a reference s příklady"
  },
  "tags": [
    {
      "name": "Veřejné kalkulátory a číselníky",
      "description": "Sazby, svátky, lhůty, číselníky, QR Platba, čtení ISDOC, kalkulátory a sdílené faktury bez přihlášení."
    },
    {
      "name": "Účet, firmy a přístupy",
      "description": "API klíče, pozvánky, firmy, jejich nastavení, členové a role, historie změn, vyhledání firmy podle IČO."
    }
  ],
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "Osobní klíč z Nastavení → API a integrace"
      },
      "bearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "Tentýž klíč jako Bearer token"
      },
      "session": {
        "type": "apiKey",
        "in": "cookie",
        "name": "_techtools4_session",
        "description": "Přihlášení v prohlížeči; zápisy navíc potřebují hlavičku X-Saldo: 1 a stejný původ"
      }
    },
    "parameters": {
      "entity": {
        "name": "entity_id",
        "in": "path",
        "required": true,
        "schema": {
          "type": "integer"
        },
        "description": "Účetní jednotka (GET /entities)"
      },
      "id": {
        "name": "id",
        "in": "path",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "year": {
        "name": "year",
        "in": "query",
        "schema": {
          "type": "integer",
          "minimum": 2000,
          "maximum": 2100
        }
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "errors": {
            "type": "object",
            "additionalProperties": true
          }
        }
      }
    }
  },
  "security": [
    {
      "apiKey": []
    },
    {
      "bearer": []
    }
  ],
  "paths": {
    "/docs": {
      "get": {
        "operationId": "getApiDocs",
        "tags": [
          "Veřejné kalkulátory a číselníky"
        ],
        "summary": "Stručný popis API ve formátu JSON",
        "description": "Vrátí statický přehled API Salda: konvence (peníze, data, chyby, přihlášení, ochrana proti CSRF, limity), veřejné endpointy s ukázkovými vstupy a stručný seznam endpointů účetních jednotek. Obsah je napsaný v kódu (Ucetnictvi::ApiDocs), nikoli generovaný z rout. Úplný strojový popis operací je v GET /openapi.json.",
        "parameters": [],
        "security": [],
        "responses": {
          "200": {
            "description": "Objekt s popisem API.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "4XX": {
            "description": "Chyba",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "errors": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          }
        },
        "x-saldo-group": "verejne",
        "x-saldo-access": "public",
        "x-saldo-side-effects": "Nic nezapisuje.",
        "x-saldo-response-fields": [
          {
            "name": "name",
            "description": "Název API"
          },
          {
            "name": "version",
            "description": "Verze popisu"
          }
        ]
      }
    },
    "/openapi.json": {
      "get": {
        "operationId": "getOpenApi",
        "tags": [
          "Veřejné kalkulátory a číselníky"
        ],
        "summary": "Popis API ve formátu OpenAPI 3.1",
        "description": "Vrátí popis API ve formátu OpenAPI 3.1 (JSON) pro generátory klientů a AI agenty. Routa nepřijímá příponu formátu, cesta je vždy přesně /openapi.json.",
        "parameters": [],
        "security": [],
        "responses": {
          "200": {
            "description": "Dokument OpenAPI 3.1: info, servers, components (securitySchemes apiKey, bearer a session), paths.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "4XX": {
            "description": "Chyba",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    
…

Dlouhé seznamy jsou v ukázce zkrácené na první položky.

GET Zákonné sazby a konstanty pro rok

/rates

Oprávnění
Veřejné, bez přihlášení

Vrátí všechny zákonné sazby a konstanty, se kterými počítají výpočty Salda (DPH, daň z příjmů, pojistné OSVČ, mzdy, paušální daň, cestovní náhrady, odpisy, repo sazby ČNB), sloučené ze společných a ročních souborů, se zdroji a právním základem. Pole years uvádí roky, pro které Saldo sazby má; jiný rok skončí chybou 422. reviewed_on je den poslední kontroly sazeb proti předpisům.

Parametry

NázevKdeTypPovinnýPopis
yeardotazcelé čísloneRok sazeb, výchozí je aktuální rok. Hodnota mimo 2000–2100 se posune na nejbližší mez, nečíselná hodnota znamená aktuální rok. Sazby existují jen pro roky z pole years (nyní 2024–2026). Rozsah od 2000 do 2100. Příklad 2026.

Odpověď

200 application/json Rok, dostupné roky, datum kontroly a strom sazeb podle oblastí.

PoleVýznam
yearRok, pro který jsou sazby vráceny
yearsRoky, pro které Saldo sazby má
reviewed_onDatum poslední kontroly sazeb proti předpisům (YYYY-MM-DD)
ratesSazby podle oblastí: general, vat, income_tax, osvc, employees, flat_tax, corporate, travel, foreign_travel, depreciation, repo_rates

Chyby této operace

StavKódKdy
422–Pro zadaný rok Saldo sazby nemá (zpráva „Pro rok … 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í
Nic nezapisuje.

Příklad

cURL

curl \
  "https://techtools.cz/ucetnictvi-api/rates?year=2026"

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/rates?year=2026');
const data = await response.json();
Odpověď 200 OK
{
  "year": 2026,
  "years": [
    2024,
    2025
  ],
  "reviewed_on": "2026-09-27",
  "rates": {
    "depreciation": {
      "groups": [
        {
          "group": 1,
          "years": 3,
          "label": "Počítače, telefony, kancelářská technika, nářadí",
          "straight": {
            "standard": {
              "first": 20,
              "following": 40,
              "increased_price": 33.3
            },
            "first_year_plus_10": {
              "first": 30,
              "following": 35,
              "increased_price": 33.3
            },
            "first_year_plus_15": {
              "first": 35,
              "following": 32.5,
              "increased_price": 33.3
            },
            "first_year_plus_20": {
              "first": 40,
              "following": 30,
              "increased_price": 33.3
            }
          },
          "accelerated": {
            "first": 3,
            "following": 4,
            "increased_price": 3
          },
          "examples": [
            {
              "item": "1-15",
              "code": "CZ-CPA 26.20",
              "name": "Počítače a periferní zařízení"
            },
            {
              "item": "1-19",
              "code": "CZ-CPA 26.30.2",
              "name": "Telefonní přístroje včetně mobilních telefonů"
            }
          ]
        },
        {
          "group": 2,
          "years": 5,
          "label": "Osobní a nákladní automobily, nábytek, stroje, elektronika",
          "straight": {
            "standard": {
              "first": 11,
              "following": 22.25,
              "increased_price": 20
            },
            "first_year_plus_10": {
              "first": 21,
              "following": 19.75,
              "increased_price": 20
            },
            "first_year_plus_15": {
              "first": 26,
              "following": 18.5,
              "increased_price": 20
            },
            "first_year_plus_20": {
              "first": 31,
              "following": 17.25,
              "increased_price": 20
            }
          },
          "accelerated": {
            "first": 5,
            "following": 6,
            "increased_price": 5
          },
          "examples": [
            {
              "item": "2-65",
              "code": "CZ-CPA 29.10.2",
              "name": "Osobní automobily"
            },
            {
              "item": "2-67",
              "code": "CZ-CPA 29.10.4",
              "name": "Motorová vozidla nákladní"
            }
          ]
        }
      ],
      "increased_first_year": {
        "percents": [
          10,
          15
        ],
        "groups": [
          1,
          2
        ],
        "basis": {
          "straight": "§ 31 odst. 1 písm. b) až d) a odst. 2 až 6 ZDP",
          "accelerated": "§ 32 odst. 2 písm. a) body 1 až 3 ZDP"
        }
      },
      "disposal_year_share": 0.5,
      "rounding": {
        "digits": 0,
        "mode": "ceiling"
      },
      "basis": {
        "groups": "§ 30 odst. 1 a příloha č. 1 ZDP",
        "straight": "§ 31 odst. 1, 7 a 8 ZDP",
        "accelerated": "§ 32 odst. 1 až 3 ZDP",
        "rounding": "§ 31 odst. 9 a § 32 odst. 5 ZDP",
        "disposal": "§ 26 odst. 6 a 7 písm. a) bod 1 ZDP",
        "interruption": "§ 26 odst. 8 ZDP",
        "price_cap": "§ 30 odst. 3 ZDP"
      },
      "vehicle_m1": {
        "expense_cap": 2000000,
        "in_use_from_period_starting": "2024-01-01",
        "basis": "§ 30e a § 30g ZDP: u osobního automobilu (kategorie M1) jde do výdajů jen poměrná část odpisu 2 000 000 Kč / vstupní cena; neplatí pro sanitky, pohřební vozy, vozidla pro koncesovanou silniční dopravu a vozidla pronajímaná na finanční leasing; čl. XVI bod 10 zákona č. 349/2023 Sb.: jen vozidla uvedená do užívání od prvního zdaňovacího období započatého 1. 1. 2024 nebo později"
      },
      "intangible": {
        "acquired_before": "2021-01-01",
        "months": {
          "audiovisual": 18,
          "software": 36,
          "research": 36,
          "other": 72
        },
        "months_after_improvement": {
          "audiovisual": 9,
          "software": 18,
          "research": 18,
          "other": 36
        },
        "rounding": {
          "digits": 0,
          "mode": "ceiling"
        },
        "basis": {
          "schedule": "§ 32a odst. 4 a 5 ZDP ve znění účinném do 31. 12. 2020",
          "improvement": "§ 32a odst. 6 ZDP ve znění účinném do 31. 12. 2020",
          "transition": "čl. XII body 10 až 12 zákona č. 609/2020 Sb.; majetek pořízený od 1. 1. 2021 se daňově odpisuje účetními odpisy podle § 24 odst. 2 písm. v) bodu 2 ZDP"
        }
      },
      "accounting": {
        "rounding": {
          "digits": 0,
          "mode": "ceiling"
        },
        "legacy_rounding": {
          "in_use_before": "2026-01-01",
          "digits": 0,
          "mode": "half_up"
        },
        "basis": "§ 28 odst. 6 zákona č. 563/1991 Sb., § 56 vyhlášky č. 500/2002 Sb. a ČÚS č. 013 body 4.1 a 4.2 (odpisy se zaokrouhlují na celé koruny nahoru; odpisový plán je účetní politikou; měsíčně od měsíce následujícího po uvedení do užívání; u majetku uvedeného do užívání před 1. 1. 2026 zůstává dosavadní plán se zaokrouhlením matematicky)"
      },
      "sources": {
        "law": "https://www.e-sbirka.cz/eli/cz/sb/1992/586/2026-01-01",
        "groups": "https://www.zakonyprolidi.cz/cs/1992-586",
        "intangible_until_2020": "https://www.e-sbirka.cz/eli/cz/sb/1992/586/2020-07-01",
        "transition": "https://www.e-sbirka.cz/eli/cz/sb/2020/609",
        "vehicle_m1": "https://www.zakonyprolidi.cz/cs/1992-586#p30e",
        "vehicle_m1_transition": "https://www.zakonyprolidi.cz/cs/2023-349",
        "accounting": "https://mf.gov.cz/assets/attachments/Ucetnictvi_2018_Ceske-ucetni-standardy-pro-500-2002_v02.pdf"
      },
      "unverified": []
    },
    "repo_rates": {
      "history": [
        {
          "from":
…

Dlouhé seznamy jsou v ukázce zkrácené na první položky.

GET Státní svátky v Česku pro rok

/holidays

Oprávnění
Veřejné, bez přihlášení

Vrátí data státních svátků a ostatních svátků podle zákona č. 245/2000 Sb. v daném roce, seřazená podle data: 11 pevných svátků, Velký pátek a Velikonoční pondělí. Saldo podle nich posouvá lhůty na nejbližší následující pracovní den. Seznam neobsahuje názvy svátků a Velký pátek vrací pro každý rok, i když je svátkem až od roku 2016.

Parametry

NázevKdeTypPovinnýPopis
yeardotazcelé čísloneRok, výchozí je aktuální. Hodnota mimo 2000–2100 se posune na nejbližší mez, nečíselná hodnota znamená aktuální rok. Rozsah od 2000 do 2100. Příklad 2026.

Odpověď

200 application/json Rok a seřazené pole dat svátků.

PoleVýznam
yearPoužitý rok
holidaysData svátků (YYYY-MM-DD) vzestupně

Chování

Co změní
Nic nezapisuje.

Příklad

cURL

curl \
  "https://techtools.cz/ucetnictvi-api/holidays?year=2026"

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/holidays?year=2026');
const data = await response.json();
Odpověď 200 OK
{
  "year": 2026,
  "holidays": [
    "2026-01-01",
    "2026-04-03"
  ]
}

Dlouhé seznamy jsou v ukázce zkrácené na první položky.

GET Daňové a pojistné lhůty pro zadaný profil

/deadlines

Oprávnění
Veřejné, bez přihlášení

Vrátí kalendář lhůt jednoho poplatníka na kalendářní rok: DPH (přiznání, kontrolní a souhrnné hlášení), daň z příjmů a zálohy, pojistné OSVČ a přehledy, paušální daň, mzdové odvody a roční vyúčtování, daň z nemovitých věcí, silniční daň a účetní závěrka. Lhůta připadající na víkend nebo svátek se posune na nejbližší následující pracovní den (date), zákonný den zůstává v statutory_date. Počítá se vždy s elektronickým podáním; parametr databox jen doplní právní základ. Neznámá hodnota legal_form znamená osvc, neznámá hodnota vat znamená none. Události jsou seřazené podle data, kategorie a klíče.

Parametry

NázevKdeTypPovinnýPopis
yeardotazcelé čísloneKalendářní rok, výchozí je aktuální. Musí mít sazby (GET /rates → years), jinak 422. Rozsah od 2000 do 2100. Příklad 2026.
legal_formdotaztextnePrávní forma. U sro a as je kontrolní hlášení vždy měsíční, přibudou lhůty účetní závěrky a platí fiscal_year_start. Hodnoty: osvc, sro, as. Výchozí osvc. Příklad osvc.
vatdotaztextneVztah k DPH: neplátce, měsíční plátce, čtvrtletní plátce, identifikovaná osoba. Hodnoty: none, monthly, quarterly, identified. Výchozí none. Příklad quarterly.
employeesdotazano/neneMá zaměstnance – přidá mzdové odvody, JMHZ a roční vyúčtování. Výchozí false. Příklad true.
advisordotazano/nenePřiznání k dani z příjmů podává daňový poradce (prodloužená lhůta). Výchozí false.
databoxdotazano/neneMá datovou schránku; jen doplní právní základ povinného elektronického podání u přiznání. Výchozí false.
flat_taxdotazano/neneOSVČ v paušálním režimu – místo přiznání, záloh na daň a pojistného dostane oznámení a měsíční paušální platby. U sro a as se ignoruje. Výchozí false.
recap_statementdotazano/nenePodává souhrnné hlášení (dodání do jiného státu EU). Výchozí false.
recap_goodsdotazano/neneČtvrtletní plátce dodává zboží do jiného státu EU – souhrnné hlášení se přidá měsíčně (i bez recap_statement) místo čtvrtletně. Výchozí false.
auditdotazano/nenePovinný audit (jen sro a as) – prodloužená lhůta přiznání a text lhůty schválení závěrky. Výchozí false.
real_estatedotazano/nenePřidá přiznání a splátky daně z nemovitých věcí. Výchozí false.
road_taxdotazano/nenePřidá přiznání a platbu silniční daně. Výchozí false.
fiscal_year_startdotazcelé čísloneMěsíc začátku hospodářského roku (jen sro a as). Hodnota mimo 1–12 se posune na nejbližší mez. Výchozí 1. Rozsah od 1 do 12.

Odpověď

200 application/json Rok, použitý profil (včetně electronic: true) a seřazené události.

PoleVýznam
yearKalendářní rok
profilePoužitý profil po doplnění výchozích hodnot
events[].dateLhůta posunutá na pracovní den
events[].statutory_dateZákonný den lhůty
events[].shiftedZda byla lhůta posunuta
events[].keyStabilní klíč události, např. vat_return_2026_01
events[].titleNázev povinnosti
events[].detailObdobí, ke kterému se povinnost vztahuje
events[].descriptionVysvětlení povinnosti
events[].categoryincome_tax, vat, insurance, payroll, property, accounts nebo other
events[].basisPrávní základ

Chyby této operace

StavKódKdy
422–Pro zadaný rok Saldo sazby nemá

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 \
  "https://techtools.cz/ucetnictvi-api/deadlines?year=2026&legal_form=osvc&vat=quarterly&employees=true"

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/deadlines?year=2026&legal_form=osvc&vat=quarterly&employees=true');
const data = await response.json();
Odpověď 200 OK
{
  "year": 2026,
  "profile": {
    "legal_form": "osvc",
    "vat": "quarterly",
    "employees": true,
    "advisor": false,
    "databox": false,
    "electronic": true,
    "flat_tax": false,
    "recap_statement": false,
    "recap_goods": false,
    "audit": false,
    "real_estate": false,
    "road_tax": false,
    "fiscal_year_start": 1
  },
  "events": [
    {
      "date": "2026-01-08",
      "statutory_date": "2026-01-08",
      "shifted": false,
      "key": "osvc_health_advance_2025_12",
      "title": "Záloha na zdravotní pojištění OSVČ",
      "detail": "za prosinec 2025",
      "description": "Zaplaťte zálohu své zdravotní pojišťovně do 8. dne následujícího měsíce. Kdo nemá minimální vyměřovací základ (např. zaměstnanec s pojistným aspoň z minima, pojištěnec státu nebo držitel ZTP či ZTP/P), zálohy neplatí a pojistné doplatí do 8 dnů po podání přehledu.",
      "category": "insurance",
      "basis": "§ 7 odst. 2 zákona č. 592/1992 Sb."
    },
    {
      "date": "2026-01-20",
      "statutory_date": "2026-01-20",
      "shifted": false,
      "key": "payroll_2025_12",
      "title": "Odvody za zaměstnance a měsíční hlášení",
      "detail": "za prosinec 2025",
      "description": "Odveďte zálohy na daň ze mzdy, pojistné na sociální pojištění ČSSZ a zdravotní pojištění pojišťovnám spolu s přehledem o platbě pojistného. Podejte přehled o výši pojistného pro ČSSZ. Srážkovou daň odveďte do konce následujícího měsíce.",
      "category": "payroll",
      "basis": "§ 38h odst. 10 ZDP; § 9 odst. 1 zákona č. 589/1992 Sb.; § 5 odst. 2 a § 25 odst. 3 zákona č. 592/1992 Sb.; § 9 odst. 2 zákona č. 589/1992 Sb. ve znění do 31. 12. 2025; za prosinec 2025 čl. IX bod 1 zákona č. 360/2025 Sb."
    }
  ]
}

Dlouhé seznamy jsou v ukázce zkrácené na první položky.

GET Číselníky pro formuláře a API

/codebooks

Oprávnění
Veřejné, bez přihlášení

Vrátí všechny číselníky v jednom objektu: druhy a stavy dokladů, režimy DPH, způsoby úhrady, druhy DPH na řádku, nárok na odpočet, právní formy, způsoby vedení účetnictví, vztahy k DPH, výdajové paušály, druhy účtů, role členů, pracovní poměry, zdravotní pojišťovny, invalidity, kategorie a způsoby odpisů majetku, druhy a typy podání, státy EU, měny, jednotky, sazby DPH podle roku, kódy přenesené daňové povinnosti, finanční úřady a odpisové skupiny.

Odpověď

200 application/json Objekt, jehož klíče jsou názvy číselníků.

PoleVýznam
document_kindsDruhy dokladů s popisem a klíčem
legal_formsPrávní formy (osvc, sro, as, vos, ks, druzstvo, spolek, other)
bookkeeping_modesZpůsoby vedení (double_entry, tax_records, flat_expenses, flat_tax)
vat_statusesVztah k DPH (none, monthly, quarterly, identified)
rolesRole členů (owner, accountant, editor, viewer)
vat_ratesSazby DPH podle roku
rc_codesKódy režimu přenesení daňové povinnosti
tax_officesFinanční úřady a územní pracoviště
depreciation_groupsOdpisové skupiny s dobou odpisování a sazbami

Chování

Co změní
Nic nezapisuje.

Příklad

cURL

curl \
  https://techtools.cz/ucetnictvi-api/codebooks

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/codebooks');
const data = await response.json();
Odpověď 200 OK
{
  "document_kinds": [
    {
      "label": "Faktura vydaná",
      "short": "Faktura",
      "prefix": "FV",
      "direction": "sale",
      "tax": true,
      "key": "invoice_out"
    },
    {
      "label": "Faktura přijatá",
      "short": "Přijatá faktura",
      "prefix": "FP",
      "direction": "purchase",
      "tax": true,
      "key": "invoice_in"
    }
  ],
  "statuses": {
    "draft": "Koncept",
    "issued": "Vystaveno",
    "cancelled": "Stornováno"
  },
  "vat_modes": {
    "domestic": "Tuzemské plnění",
    "reverse_charge": "Přenesená daňová povinnost (§ 92a)",
    "eu_goods": "Dodání / pořízení zboží v EU",
    "eu_services": "Služby v rámci EU",
    "import": "Dovoz ze třetí země",
    "export": "Vývoz do třetí země",
    "exempt": "Osvobozené plnění",
    "non_vat": "Mimo DPH",
    "triangular": "Třístranný obchod"
  },
  "payment_methods": {
    "bank": "Bankovní převod",
    "cash": "Hotově",
    "card": "Kartou",
    "cod": "Dobírka",
    "offset": "Zápočet",
    "advance": "Uhrazeno zálohou",
    "other": "Jinak"
  },
  "vat_kinds": {
    "standard": "Zdanitelné plnění",
    "exempt_with_credit": "Osvobozeno s nárokem na odpočet",
    "exempt_without_credit": "Osvobozeno bez nároku na odpočet",
    "not_subject": "Není předmětem daně"
  },
  "deductions": {
    "full": "Plný odpočet",
    "proportional": "Krácený odpočet",
    "none": "Bez odpočtu"
  },
  "legal_forms": {
    "osvc": "OSVČ",
    "sro": "s.r.o.",
    "as": "a.s.",
    "vos": "v.o.s.",
    "ks": "k.s.",
    "druzstvo": "družstvo",
    "spolek": "spolek",
    "other": "jiná forma"
  },
  "bookkeeping_modes": {
    "double_entry": "Podvojné účetnictví",
    "tax_records": "Daňová evidence",
    "flat_expenses": "Výdajový paušál",
    "flat_tax": "Paušální daň"
  },
  "vat_statuses": {
    "none": "Neplátce DPH",
    "monthly": "Plátce DPH – měsíčně",
    "quarterly": "Plátce DPH – čtvrtletně",
    "identified": "Identifikovaná osoba"
  },
  "flat_expense_rates": [
    80,
    60
  ],
  "account_kinds": {
    "asset": "Aktivní",
    "liability": "Pasivní",
    "equity": "Vlastní kapitál",
    "expense": "Nákladový",
    "revenue": "Výnosový",
    "closing": "Závěrkový",
    "off_balance": "Podrozvahový",
    "neutral": "Neutrální"
  },
  "roles": {
    "owner": "Vlastník",
    "accountant": "Účetní",
    "editor": "Editor",
    "viewer": "Jen čtení"
  },
  "contracts": {
    "hpp": "Pracovní poměr (HPP)",
    "dpc": "Dohoda o pracovní činnosti (DPČ)",
    "dpp": "Dohoda o provedení práce (DPP)"
  },
  "health_insurers": {
    "111": "VZP",
    "201": "VoZP",
    "205": "ČPZP",
    "207": "OZP",
    "209": "ZPŠ",
    "211": "ZPMV",
    "213": "RBP"
  },
  "disabilities": {
    "first": "Invalidita I. a II. stupně",
    "third": "Invalidita III. stupně"
  },
  "asset_categories": {
    "tangible": "Hmotný",
    "intangible": "Nehmotný",
    "low_value": "Drobný"
  },
  "tax_methods": {
    "straight": "Rovnoměrné",
    "accelerated": "Zrychlené"
  },
  "filing_kinds": {
    "dph": "Přiznání k DPH",
    "kh": "Kontrolní hlášení",
    "sh": "Souhrnné hlášení",
    "dpfo": "Přiznání k dani z příjmů FO",
    "dppo": "Přiznání k dani z příjmů PO",
    "prehled_sp": "Přehled pro ČSSZ",
    "prehled_zp": "Přehled pro zdravotní pojišťovnu",
    "jmhz": "Jednotné měsíční hlášení zaměstnavatele"
  },
  "filing_types": {
    "B": "Řádné",
    "O": "Opravné",
    "D": "Dodatečné",
    "E": "Opravné dodatečné",
    "N": "Následné",
    "S": "Storno"
  },
  "eu_countries": [
    "AT",
    "BE"
  ],
  "currencies": [
    "CZK",
    "EUR"
  ],
  "units": [
    "ks",
    "hod"
  ],
  "vat_rates": {
    "2024": [
      {
        "rate": 21,
        "band": "basic",
        "kh_slot": 1
      },
      {
        "rate": 12,
        "band": "reduced",
        "kh_slot": 2
      }
    ],
    "2025": [
      {
        "rate": 21,
        "band": "basic",
        "kh_slot": 1
      },
      {
        "rate": 12,
        "band": "reduced",
        "kh_slot": 2
      }
    ],
    "2026": [
      {
        "rate": 21,
        "band": "basic",
        "kh_slot": 1
      },
      {
        "rate": 12,
        "band": "reduced",
        "kh_slot": 2
      }
    ]
  },
  "rc_codes": [
    {
      "code": "1",
      "label": "Zlato",
      "basis": "§ 92b odst. 2 ZDPH"
    },
    {
      "code": "1a",
      "label": "Zlato – zprostředkování dodání investičního zlata",
      "basis": "§ 92b odst. 3 ZDPH"
    }
  ],
  "tax_offices": [
    {
      "code": 13,
      "name": "Specializovaný finanční úřad",
      "workplaces": []
    },
    {
      "code": 451,
      "name": "Finanční úřad pro hlavní město Prahu",
      "workplaces": [
        {
          "code": 2001,
          "name": "Územní pracoviště pro Prahu 1"
        },
        {
          "code": 2002,
          "name": "Územní pracoviště pro Prahu 2"
        }
      ]
    }
  ],
  "depreciation_groups": [
    {
      "group": 1,
      "years": 3,
      "label": "Počítače, telefony, kancelářská technika, nářadí",
      "straight": {
        "first": 20.0,
        "following": 40.0,
        "increased_price": 33.3
      },
      "accelerated": {
        "first": 3,
        "following": 4,
        "increased_price": 3
      },
      "examples": [
        {
          "item": "1-15",
          "code": "CZ-CPA 26.20",
          "name": "Počítače a periferní zařízení"
        },
        {
          "item": "1-19",
          "code": "CZ-CPA 26.30.2",
          "name": "Telefonní přístroje včetně mobilních telefonů"
        }
      ]
    },
    {
      "group": 2,
      "years": 5,
      "label": "Osobní a nákladní automobily, nábytek, stroje, elektronika",
      "straight": {
        "first": 11.0,
        "following": 22.25,
        "increased_price": 20.0
      },
      "accelerated": {
        "first": 5,
        "following": 6,
        "increased_price": 5
      },
      "examples": [
        {
          "item": "2-65",
          "code": "CZ-CPA 29.10.2",
          "name": "Osobní 
…

Dlouhé seznamy jsou v ukázce zkrácené na první položky.

GET Řetězec QR Platby (SPAYD) pro platbu

/qr

Oprávnění
Veřejné, bez přihlášení

Sestaví řetězec QR Platby podle standardu SPAYD 1.0 České bankovní asociace, který stačí vykreslit jako QR kód. Ověří IBAN (kontrolní číslice, i zahraniční), měnu, částku, datum a symboly. Text zprávy a jméno příjemce zkrátí na délku podle standardu a znaky mimo ASCII zakóduje.

Parametry

NázevKdeTypPovinnýPopis
ibandotaztextanoIBAN příjemce; mezery se odstraní a písmena převedou na velká. Příklad CZ6508000000192000145399.
amountdotazčísloanoČástka, kladná a nejvýše 9 999 999,99. Přijme i desetinnou čárku a mezery; nečíselná hodnota se bere jako 0 a skončí chybou 422. Příklad 1210.
currencydotaztextneKód měny ISO 4217 (tři písmena). Výchozí CZK. Příklad CZK.
vsdotaztextneVariabilní symbol, nejvýše 10 číslic. Příklad 20260001.
ksdotaztextneKonstantní symbol, nejvýše 10 číslic.
ssdotaztextneSpecifický symbol, nejvýše 10 číslic.
messagedotaztextneZpráva pro příjemce; zkrátí se na 60 znaků. Příklad Faktura 20260001.
due_datedotazdatumneDatum splatnosti (YYYY-MM-DD); jiný formát vrátí 400. Příklad 2026-10-15.
namedotaztextneJméno příjemce; zkrátí se na 35 znaků.

Odpověď

200 application/json Objekt s řetězcem SPAYD.

PoleVýznam
spaydŘetězec QR Platby, např. SPD*1.0*ACC:CZ…*AM:1210.00*CC:CZK*X-VS:20260001

Chyby této operace

StavKódKdy
422–Neplatný IBAN („Neplatný IBAN: …“)
422–Částka není kladná („Částka musí být kladná“), a to i když není číslem
422–Částka je vyšší než 9 999 999,99
422–Neplatný kód měny nebo symbol delší než 10 číslic či s jinými znaky než číslicemi

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 \
  "https://techtools.cz/ucetnictvi-api/qr?iban=CZ6508000000192000145399&amount=1210&vs=20260001&message=Faktura+20260001&due_date=2026-10-15"

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/qr?iban=CZ6508000000192000145399&amount=1210&vs=20260001&message=Faktura+20260001&due_date=2026-10-15');
const data = await response.json();
Odpověď 200 OK
{
  "spayd": "SPD*1.0*ACC:CZ6508000000192000145399*AM:1210.00*CC:CZK*DT:20261015*MSG:Faktura 20260001*X-VS:20260001"
}

POST Přečte fakturu ve formátu ISDOC

/isdoc/parse

Oprávnění
Veřejné, bez přihlášení

Přečte jeden doklad ISDOC 5.x nebo 6.x a vrátí ho jako JSON: strany, řádky, rekapitulaci DPH, součty a platební údaje. Přijme soubor .isdoc (XML), .isdocx (ZIP s manifestem a přílohami) i PDF s vloženým ISDOC. Soubor lze poslat jako pole file (multipart) nebo přímo jako tělo požadavku. Obsah souboru nikdy nezpůsobí chybu: neplatný soubor vrátí 200 s prázdnými poli a důvodem v prvním prvku warnings. Druh dokladu je vždy z pohledu příjemce (invoice_in, credit_in, proforma_in, advance_in).

Parametry

NázevKdeTypPovinnýPopis
filenamedotaztextneNázev souboru pro hlášení ve warnings, když se soubor posílá jako tělo požadavku.

Tělo požadavku

Formát multipart/form-data.

PoleTypPovinnéPopis
filesouboranoSoubor .isdoc, .isdocx nebo PDF s vloženým ISDOC, nejvýše 10 MB. Místo multipart lze poslat samotný soubor jako tělo (např. Content-Type: application/xml).

Odpověď

200 application/json Normalizovaný doklad. U nečitelného souboru jsou pole prázdná a warnings obsahuje důvod.

PoleVýznam
format_versionVerze ISDOC ze souboru
document_typeTyp dokladu ISDOC (1 faktura, 2 dobropis, 3 vrubopis, 4 zálohová faktura, 5–6 daňový doklad k záloze, 7 zjednodušený)
kindDruh dokladu v Saldu z pohledu příjemce
simplifiedZjednodušený daňový doklad (typ 7)
numberČíslo dokladu
uuidUUID dokladu, je-li platné
issue_dateDatum vystavení
taxable_dateDUZP
due_dateDatum splatnosti
currencyMěna dokladu
exchange_rateKurz u cizí měny
vat_applicableDoklad podléhá DPH (VATApplicable; bez údaje true, u nečitelného souboru null)
notePoznámka z dokladu
order_referenceČíslo objednávky (ExternalOrderID nebo SalesOrderID)
originalPůvodní doklad u opravného dokladu (number, uuid, issue_date), jinak null
supplierDodavatel: name, ico, dic, street, house_number, city, zip, country, email, phone, register_note
customerOdběratel ve stejném tvaru
linesŘádky: description, quantity, unit, unit_price, net, vat, gross, vat_rate, net_czk, vat_czk, reverse_charge
totalsSoučty: net, vat, gross, rounding, payable, paid_deposits, by_rate a částky v Kč
paymentmethod, variable_symbol, constant_symbol, specific_symbol, account_number, bank_code, iban, bic, due_date
attachmentsPřílohy z .isdocx (filename, content_type, size), bez obsahu
warningsUpozornění a důvody, proč něco nešlo přečíst

Chyby této operace

StavKódKdy
400–Nebyl poslán žádný soubor ani tělo požadavku
413–Soubor je větší než 10 MB

Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.

Chování

Co změní
Nic nezapisuje.
Limity
Nejvýše 10 MB. ZIP (.isdocx) nejvýše 200 souborů, jeden soubor do 20 MB a celkem do 60 MB po rozbalení; PDF nejvýše 5 000 proudů, 20 MB na proud a 80 MB po dekompresi. Čte vždy jen jeden doklad: z archivu bez manifest.xml vezme první soubor .isdoc (přednostně z kořene archivu), ostatní soubory vrátí jen jako přílohy a do warnings doplní upozornění.

Příklad

cURL

curl \
  -X POST \
  -F "file=@faktura-dodavatel.isdoc" \
  https://techtools.cz/ucetnictvi-api/isdoc/parse

JavaScript

const form = new FormData();
form.append('file', fileInput.files[0], 'faktura-dodavatel.isdoc');
const response = await fetch('https://techtools.cz/ucetnictvi-api/isdoc/parse', {
  method: 'POST',
  body: form
});
const data = await response.json();
Odpověď 200 OK
{
  "format_version": "6.0.2",
  "document_type": 1,
  "kind": "invoice_in",
  "simplified": false,
  "number": "FV2026-0317",
  "uuid": "6C1F2B3A-4D5E-4F60-8A7B-9C0D1E2F3A4B",
  "issue_date": "2026-09-14",
  "taxable_date": "2026-09-12",
  "due_date": "2026-09-28",
  "currency": "CZK",
  "exchange_rate": null,
  "vat_applicable": true,
  "note": "Fakturujeme Vám dodávku kancelářských potřeb dle objednávky.",
  "order_reference": "OBJ/2026/112",
  "original": null,
  "supplier": {
    "name": "Kancelářské potřeby Hradec s.r.o.",
    "ico": "27082440",
    "dic": "CZ27082440",
    "street": "Gočárova třída",
    "house_number": "1754/48a",
    "city": "Hradec Králové",
    "zip": "500 02",
    "country": "CZ",
    "email": "fakturace@kp-hradec.cz",
    "phone": "+420 495 123 456",
    "register_note": "Krajský soud v Hradci Králové, oddíl C, vložka 21456"
  },
  "customer": {
    "name": "Novák Stavby s.r.o.",
    "ico": "07082440",
    "dic": "CZ07082440",
    "street": "Na Příkopě",
    "house_number": "33",
    "city": "Praha 1",
    "zip": "11000",
    "country": "CZ",
    "email": null,
    "phone": null,
    "register_note": null
  },
  "lines": [
    {
      "description": "Kancelářský papír A4 80 g/m², balení 500 listů",
      "quantity": 25.0,
      "unit": "ks",
      "unit_price": 119.0,
      "net": 2975.0,
      "vat": 624.75,
      "gross": 3599.75,
      "vat_rate": 21.0,
      "net_czk": 2975.0,
      "vat_czk": 624.75,
      "reverse_charge": null
    },
    {
      "description": "Instalace a zprovoznění síťové tiskárny",
      "quantity": 1.5,
      "unit": "hod",
      "unit_price": 950.0,
      "net": 1425.0,
      "vat": 299.25,
      "gross": 1724.25,
      "vat_rate": 21.0,
      "net_czk": 1425.0,
      "vat_czk": 299.25,
      "reverse_charge": null
    }
  ],
  "totals": {
    "net": 5378.0,
    "vat": 1041.36,
    "gross": 6419.36,
    "rounding": -0.36,
    "payable": 6419.0,
    "paid_deposits": 0.0,
    "by_rate": [
      {
        "rate": 21.0,
        "net": 4400.0,
        "vat": 924.0,
        "gross": 5324.0,
        "net_czk": 4400.0,
        "vat_czk": 924.0
      },
      {
        "rate": 12.0,
        "net": 978.0,
        "vat": 117.36,
        "gross": 1095.36,
        "net_czk": 978.0,
        "vat_czk": 117.36
      }
    ],
    "net_czk": 5378.0,
    "vat_czk": 1041.36,
    "gross_czk": 6419.36,
    "rounding_czk": -0.36,
    "payable_czk": 6419.0
  },
  "payment": {
    "method": "bank",
    "variable_symbol": "20260317",
    "constant_symbol": "308",
    "specific_symbol": null,
    "account_number": "19-2000145399",
    "bank_code": "0800",
    "iban": "CZ6508000000192000145399",
    "bic": "GIBACZPX",
    "due_date": "2026-09-28"
  },
  "attachments": [],
  "warnings": []
}

Dlouhé seznamy jsou v ukázce zkrácené na první položky.

POST Veřejná kalkulačka daní, pojistného, mezd a náhrad

/calc/{calculator}

Oprávnění
Veřejné, bez přihlášení

Spustí jednu z bezstavových kalkulaček podle cesty: DPH, OSVČ, porovnání režimů, paušální daň, daň právnické osoby, mzda, cestovní náhrady, odpisy a úrok z prodlení. Vstupy se posílají jako JSON objekt (Content-Type: application/json) nebo jako formulářová pole. Výsledky počítají se sazbami roku, který kalkulačka použije; pro rok bez sazeb vrátí 422. Nečíselné hodnoty a čísla s více než 15 číslicemi se u částek berou jako 0, nevrátí chybu.

Parametry

NázevKdeTypPovinnýPopis
calculatorcestatextanoNázev kalkulačky. Pomlčky se převádějí na podtržítka, takže fungují i late-interest a flat-tax. Hodnoty: vat, osvc, regime, flat_tax, corporate, payroll, travel, depreciation, late_interest. Příklad osvc.

Odpověď

200 application/json Výsledek výpočtu; tvar podle kalkulačky (viz varianty).

Chyby této operace

StavKódKdy
404–Neznámá kalkulačka; zpráva vyjmenuje dostupné názvy
422–Chybí povinné pole nebo má neplatnou hodnotu, včetně neplatného data; zpráva začíná „Chybí nebo je neplatný parametr:“
422–Pole má jiný tvar, než kalkulačka čeká (např. objekt místo čísla); zpráva „Parametry mají neplatný tvar – popis vstupů je v /ucetnictvi-api/docs“
422–Pro rok výpočtu Saldo sazby nemá („Pro rok … nejsou k dispozici zákonné sazby“)
400–Tělo není platný JSON; odpověď sestaví Rails (HTML stránka, s Accept: application/json objekt {status, error}), ne tvar {error} Salda

Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.

Chování

Co změní
Nic nezapisuje.
Limity
Částky mají nejvýše 15 číslic před desetinnou čárkou, jinak se berou jako 0. Roky jen z GET /rates → years (nyní 2024–2026). Aplikace sama volání bez API klíče neomezuje; s API klíčem platí limit 600 požadavků za minutu na klíč, počítaný zvlášť pro každou skupinu cest.
Opakování
Stejný vstup dává stejný výsledek. Výchozí hodnoty (rok, měsíc, den úhrady) se berou z dnešního data, takže se mohou mezi dny lišit.

/calc/vat – DPH ze základu nebo z částky s daní

Spočítá DPH zdola ze základu (net, § 37 písm. a) ZDPH), nebo shora z částky včetně daně (gross, § 37 písm. b) ZDPH). Když je zadané gross, net se ignoruje. Daň se zaokrouhlí na haléře. Sazba se neověřuje; nečíselná sazba znamená 0 %.

Tělo požadavku

Formát application/json.

PoleTypPovinnéPopis
netčísloneZáklad daně; povinný, pokud není zadané gross.
grossčísloneČástka včetně DPH; když je zadaná, počítá se shora.
ratečísloneSazba DPH v procentech. Výchozí 21.

Pole odpovědi

PoleVýznam
ratePoužitá sazba
netZáklad
vatDaň
grossČástka s daní
methodZpůsob výpočtu (zdola nebo shora) s paragrafem

Chyby této operace

StavKódKdy
422–Chybí net i gross

Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.

Příklad

cURL

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"net":1000,"rate":21}' \
  https://techtools.cz/ucetnictvi-api/calc/vat

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/calc/vat', {
  headers: { 'Content-Type': 'application/json' },
  method: 'POST',
  body: JSON.stringify({
    "net": 1000,
    "rate": 21
  })
});
const data = await response.json();
Odpověď 200 OK
{
  "rate": 21.0,
  "net": 1000.0,
  "vat": 210.0,
  "gross": 1210.0,
  "method": "zdola (§ 37 písm. a) ZDPH)"
}

/calc/osvc – Daň a pojistné OSVČ za rok

Spočítá rok OSVČ: daň z příjmů fyzických osob se slevami a daňovým zvýhodněním na děti, sociální a zdravotní pojištění podle přehledů, doplatky, zálohy na další rok, čistý příjem a řádky přiznání DPFO. Výdaje zadejte buď skutečné (expenses), nebo jako výdajový paušál (flat_rate) – právě jedno z nich. Sleva na manžela se přes tuto kalkulačku neuplatní (spouse se bere jen jako ano/ne a sleva vyžaduje příjem manžela a dítě do 3 let; vrátí se jen upozornění). Počet měsíců u dětí se neomezuje.

Tělo požadavku

Formát application/json.

PoleTypPovinnéPopis
yearcelé čísloneRok, výchozí je aktuální; musí mít sazby.
incomečísloanoPříjmy ze samostatné činnosti za rok.
expensesčísloneSkutečné výdaje; nezadávejte současně s flat_rate.
flat_ratecelé čísloneVýdajový paušál v procentech; nezadávejte současně s expenses. Hodnoty: 80, 60, 40, 30.
monthscelé číslonePočet měsíců činnosti v roce. Výchozí 12. Rozsah od 1 do 12.
main_activityano/neneHlavní (true) nebo vedlejší (false) samostatná činnost. Výchozí true.
sickness_insuranceano/nenePlatí dobrovolné nemocenské pojištění. Výchozí false.
spouseano/neneUplatnění slevy na manžela; v této kalkulačce jen vyvolá upozornění, slevu neuplatní. Výchozí false.
childrenpole (objekt)neVyživované děti pro daňové zvýhodnění.
children[].ordercelé číslonePořadí dítěte; 3 a vyšší mají sazbu třetího dítěte. Výchozí 1.
children[].monthscelé číslonePočet měsíců nároku; hodnota se neověřuje. Výchozí 12.
children[].ztppano/neneDítě je držitelem průkazu ZTP/P. Výchozí false.
disabilitytextneStupeň invalidity poplatníka pro slevu. Hodnoty: 1, 2, 3, i, ii, iii, first, second, third.
ztppano/nenePoplatník je držitelem průkazu ZTP/P. Výchozí false.
deductionsobjektneNezdanitelné části základu daně: gifts, blood_donations (počet odběrů), mortgage_interest, mortgage_before_2021, mortgage_months, pension, life_insurance, dip, long_term_care. Neznámý klíč vrátí upozornění.
employment_incomečíslonePříjmy ze závislé činnosti (§ 6 ZDP). Výchozí 0.
paid_advancesobjektneJiž zaplacené částky: tax (zálohy na daň), withheld (sražená daň), bonuses (vyplacené měsíční daňové bonusy), sp (zálohy na sociální pojištění), zp (zálohy na zdravotní pojištění).

Pole odpovědi

PoleVýznam
expensesUplatněné výdaje
expense_methodZpůsob výdajů a u paušálu jeho části se stropem
profitDílčí základ ze samostatné činnosti
tax_baseZáklad daně
deductionsUplatněné odpočty
tax_before_creditsDaň před slevami
creditsSlevy na dani
child_benefitDaňové zvýhodnění na děti: celkem, uplatněno jako sleva, bonus
taxDaň po slevách
bonusDaňový bonus
tax_withheldSražená daň (paid_advances.withheld)
tax_advances_paidZaplacené zálohy na daň (paid_advances.tax)
tax_balanceDoplatek (kladný) nebo přeplatek daně
tax_advancesZálohy na daň na další období
spSociální pojištění: základy, pojistné, sleva, doplatek, nová záloha, nemocenské
zpZdravotní pojištění: základy, pojistné, doplatek, nová záloha
total_leviesDaň a pojistné celkem
net_incomePříjmy po výdajích a odvodech
effective_ratePodíl odvodů na příjmech
form_rowsHodnoty řádků přiznání DPFO
warningsUpozornění k výpočtu

Chyby této operace

StavKódKdy
422–Chybí income
422–Není zadán právě jeden z expenses a flat_rate („Zadejte buď skutečné výdaje, nebo výdajový paušál“)
422–flat_rate není 80, 60, 40 ani 30 („Neznámý výdajový paušál“)
422–months mimo 1–12 nebo neznámý stupeň invalidity

Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.

Příklad

cURL

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"year":2026,"income":900000,"flat_rate":60,"children":[{"order":1}]}' \
  https://techtools.cz/ucetnictvi-api/calc/osvc

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/calc/osvc', {
  headers: { 'Content-Type': 'application/json' },
  method: 'POST',
  body: JSON.stringify({
    "year": 2026,
    "income": 900000,
    "flat_rate": 60,
    "children": [
      {
        "order": 1
      }
    ]
  })
});
const data = await response.json();
Odpověď 200 OK
{
  "year": 2026,
  "income": 900000.0,
  "expenses": 540000.0,
  "expense_method": {
    "kind": "flat_rate",
    "parts": [
      {
        "kind": "trade",
        "label": "živnostenské podnikání kromě řemeslných živností",
        "rate": 0.6,
        "income": 900000.0,
        "amount": 540000.0,
        "cap": 1200000.0,
        "capped": false,
        "basis": "§ 7 odst. 7 písm. b) ZDP"
      }
    ]
  },
  "profit": 360000.0,
  "employment_income": 0.0,
  "tax_base": 360000.0,
  "deductions": [],
  "tax_base_rounded": 360000.0,
  "tax_before_credits": 54000.0,
  "credits": [
    {
      "key": "taxpayer",
      "label": "Základní sleva na poplatníka",
      "row": "64",
      "months": 12,
      "amount": 30840.0,
      "basis": "§ 35ba odst. 1 písm. a) ZDP"
    }
  ],
  "child_benefit": {
    "total": 15204.0,
    "used_as_credit": 15204.0,
    "bonus": 0.0,
    "children": [
      {
        "order": 1,
        "months": 12,
        "ztpp": false,
        "amount": 15204.0
      }
    ]
  },
  "tax": 7956.0,
  "bonus": 0.0,
  "tax_withheld": 0.0,
  "tax_advances_paid": 0.0,
  "tax_balance": 7956.0,
  "tax_advances": {
    "last_known_tax": 7956.0,
    "frequency": "none",
    "amount": 0.0,
    "period": {
      "from": "2027-05-04",
      "to": "2028-05-02"
    },
    "schedule": [],
    "basis": "§ 38a ZDP"
  },
  "sp": {
    "participates": true,
    "decisive_amount": null,
    "assessment_base": 198000.0,
    "minimum_base": 205668.0,
    "maximum_base": 2350416.0,
    "applied_base": 205668.0,
    "rate": 0.292,
    "premium": 60056.0,
    "discount": 0.0,
    "premium_after_discount": 60056.0,
    "advances_paid": 0.0,
    "balance": 60056.0,
    "monthly_advance_next": 5005.0,
    "sickness": null,
    "basis": "§ 5b, § 7 odst. 1 písm. e) bod 1, § 14 a § 15a zákona č. 589/1992 Sb."
  },
  "zp": {
    "minimum_applies": true,
    "assessment_base": 180000.0,
    "minimum_base": 293802.0,
    "applied_base": 293802.0,
    "rate": 0.135,
    "premium": 39664.0,
    "advances_paid": 0.0,
    "balance": 39664.0,
    "monthly_advance_next": 3306.0,
    "basis": "§ 2, § 3a a § 8 zákona č. 592/1992 Sb."
  },
  "total_levies": 107676.0,
  "net_income": 252324.0,
  "effective_rate": 0.1196,
  "form_rows": {
    "37": 360000.0,
    "41": 360000.0,
    "42": 360000.0,
    "45": 360000.0,
    "55": 360000.0,
    "56": 360000.0,
    "57": 54000.0,
    "58": 54000.0,
    "60": 54000.0,
    "70": 30840.0,
    "71": 23160.0,
    "72": 15204.0,
    "73": 15204.0,
    "74": 7956.0,
    "75": 7956.0,
    "77": 7956.0,
    "91": 7956.0,
    "64": 30840.0,
    "101": 900000.0,
    "102": 540000.0,
    "104": 360000.0,
    "113": 360000.0
  },
  "warnings": [
    "Minima pro rok 2027 zatím nejsou v sazbách, nové zálohy jsou spočteny s minimy roku 2026.",
    "Minimální zálohy hlavní činnosti za leden až červen 2026 činily 5 720 Kč (40 % průměrné mzdy). Zákon č. 90/2026 Sb. snížil minimum od 1. 7. 2026 na 35 % (5 005 Kč) a přehled za rok 2026 se počítá s minimem 35 % za celý rok. Kdo měl platit minimální zálohu, může do 31. 12. 2026 písemně požádat o vrácení rozdílu, jinak se přeplatek zohlední v přehledu; nedoplatek do výše rozdílu a penále z něj zanikly, byla-li zaplacena aspoň nová výše zálohy (čl. II body 2, 3 a 5)."
  ]
}

/calc/regime – Porovnání skutečných výdajů, paušálů a paušální daně

Porovná roční odvody OSVČ (daň, sociální a zdravotní pojištění, případně nemocenské) při skutečných výdajích, při výdajových paušálech a v paušálním režimu, seřadí způsobilé varianty od nejlevnější, označí doporučenou a spočítá úsporu proti současnému režimu. Paušál neodpovídající druhu příjmů a nedostupný paušální režim jsou uvedeny s důvody. Osobní údaje se předávají v objektu profile; main_activity, vat_payer, children a spouse lze poslat i na nejvyšší úrovni a mají přednost. Na rozdíl od kalkulačky osvc lze v profile.spouse poslat objekt s příjmem manžela a slevu tak uplatnit.

Tělo požadavku

Formát application/json.

PoleTypPovinnéPopis
yearcelé čísloneRok, výchozí je aktuální; musí mít sazby.
incomečísloanoPříjmy ze samostatné činnosti.
expensesčísloneSkutečné výdaje. Výchozí 0.
main_activityano/neneHlavní činnost; přepíše profile.main_activity.
vat_payerano/nenePlátce DPH (vylučuje paušální režim); přepíše profile.vat_payer.
childrenpole (objekt)neDěti jako u kalkulačky osvc; přepíše profile.children.
spousenetrue/false, nebo objekt { income, child_under_three, months, ztpp }; přepíše profile.spouse.
profileobjektneDalší údaje: income_kind (crafts, trade, other, rental nebo 80/60/40/30, případně objekt { druh: částka } pro smíšené příjmy; výchozí trade s upozorněním), flat_rate (totéž, když chybí income_kind), current_regime (klíč varianty), bookkeeping (tax_records, double_entry, flat_expenses, flat_tax – určí současný režim), employment_income, other_income, partner, insolvency, months, sickness_insurance, disability, ztpp, deductions, starting_business.

Pole odpovědi

PoleVýznam
income_kindPoužitý druh příjmů
currentKlíč současného režimu
recommendedKlíč nejlevnější způsobilé varianty
savingsÚspora doporučené varianty proti současné (null, když současná není způsobilá)
optionsVarianty (actual_expenses, flat_rate_80/60/40/30 nebo flat_rate_mixed, flat_tax): eligible, rank, total_levies, tax, sp, zp, net_income, reasons, notes, savings_vs_current
summaryShrnutí doporučení česky
warningsUpozornění

Chyby této operace

StavKódKdy
422–Chybí income nebo je neznámý druh příjmů (income_kind, flat_rate)

Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.

Příklad

cURL

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"year":2026,"income":900000,"expenses":250000,"profile":{"income_kind":"trade"}}' \
  https://techtools.cz/ucetnictvi-api/calc/regime

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/calc/regime', {
  headers: { 'Content-Type': 'application/json' },
  method: 'POST',
  body: JSON.stringify({
    "year": 2026,
    "income": 900000,
    "expenses": 250000,
    "profile": {
      "income_kind": "trade"
    }
  })
});
const data = await response.json();
Odpověď 200 OK
{
  "year": 2026,
  "income": 900000.0,
  "actual_expenses": 250000.0,
  "income_kind": "trade",
  "current": "actual_expenses",
  "recommended": "flat_tax",
  "savings": 104981.0,
  "options": [
    {
      "key": "flat_tax",
      "label": "Paušální daň – 1. pásmo",
      "eligible": true,
      "rank": 1,
      "basis": "§ 2a, § 7a a § 38lk ZDP",
      "band": 1,
      "monthly": 9162.0,
      "tax": 1200.0,
      "bonus": 0.0,
      "sp": 69072.0,
      "zp": 39672.0,
      "sickness": 0.0,
      "total_levies": 109944.0,
      "net_income": 540056.0,
      "effective_rate": 0.1222,
      "reasons": [],
      "notes": [
        "Paušální daň zahrnuje daň, sociální i zdravotní pojištění; je-li vaše daň rovna paušální dani, nepodáváte daňové přiznání ani přehledy pro ČSSZ a zdravotní pojišťovnu (§ 38lh ZDP, § 15 odst. 1 zákona č. 589/1992 Sb., § 24 odst. 2 zákona č. 592/1992 Sb.).",
        "V paušálním režimu nelze uplatnit slevy na dani, daňové zvýhodnění na děti, daňový bonus ani odpočty od základu daně."
      ],
      "savings_vs_current": 104981.0
    },
    {
      "key": "flat_rate_60",
      "label": "Výdajový paušál 60 %",
      "eligible": true,
      "rank": 2,
      "basis": "§ 7 odst. 7 písm. b) ZDP",
      "expenses": 540000.0,
      "profit": 360000.0,
      "tax": 23160.0,
      "bonus": 0.0,
      "sp": 60056.0,
      "zp": 39664.0,
      "sickness": 0.0,
      "total_levies": 122880.0,
      "net_income": 527120.0,
      "effective_rate": 0.1365,
      "reasons": [],
      "notes": [
        "Minima pro rok 2027 zatím nejsou v sazbách, nové zálohy jsou spočteny s minimy roku 2026.",
        "Minimální zálohy hlavní činnosti za leden až červen 2026 činily 5 720 Kč (40 % průměrné mzdy). Zákon č. 90/2026 Sb. snížil minimum od 1. 7. 2026 na 35 % (5 005 Kč) a přehled za rok 2026 se počítá s minimem 35 % za celý rok. Kdo měl platit minimální zálohu, může do 31. 12. 2026 písemně požádat o vrácení rozdílu, jinak se přeplatek zohlední v přehledu; nedoplatek do výše rozdílu a penále z něj zanikly, byla-li zaplacena aspoň nová výše zálohy (čl. II body 2, 3 a 5)."
      ],
      "savings_vs_current": 92045.0
    }
  ],
  "summary": "Nejvýhodnější je paušální daň – 1. pásmo: odvody 109 944 Kč ročně, o 104 981 Kč méně než současný režim (skutečné výdaje v daňové evidenci).",
  "warnings": []
}

Dlouhé seznamy jsou v ukázce zkrácené na první položky.

/calc/flat_tax – Nárok na paušální daň a pásmo

Ověří, zda poplatník může být v paušálním režimu, a vrátí pásmo s měsíční paušální zálohou rozdělenou na daň, sociální a zdravotní pojištění. Nesplněné podmínky vrátí v reasons. Pro smíšené příjmy lze poslat income_kind jako objekt s částkami podle druhu.

Tělo požadavku

Formát application/json.

PoleTypPovinnéPopis
yearcelé čísloneRok, výchozí je aktuální; musí mít sazby.
incomečísloanoRoční příjmy ze samostatné činnosti.
income_kindtextneDruh příjmů: crafts, trade, other, rental nebo sazba paušálu 80, 60, 40, 30; případně objekt { druh: částka }. Výchozí trade.
vat_payerano/nenePlátce DPH (vylučuje paušální režim). Výchozí false.
employmentano/neneMá příjmy ze závislé činnosti nezdaněné srážkovou daní (vylučuje režim). Výchozí false.
other_incomečíslonePříjmy z kapitálu, nájmu a ostatní příjmy (nad limit vylučují režim). Výchozí 0.

Pole odpovědi

PoleVýznam
eligibleZda může být v paušálním režimu
bandČíslo pásma (null, když nesplní limit)
monthlyMěsíční paušální záloha
annualRoční částka (12 měsíců)
splitRozdělení měsíční zálohy: tax, social, health
reasonsDůvody, proč režim nelze použít
notesPoznámky k režimu
basisPrávní základ

Chyby této operace

StavKódKdy
422–Chybí income nebo je neznámý druh příjmů („Neznámý výdajový paušál: …“)

Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.

Příklad

cURL

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"year":2026,"income":800000,"income_kind":"trade","vat_payer":false}' \
  https://techtools.cz/ucetnictvi-api/calc/flat_tax

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/calc/flat_tax', {
  headers: { 'Content-Type': 'application/json' },
  method: 'POST',
  body: JSON.stringify({
    "year": 2026,
    "income": 800000,
    "income_kind": "trade",
    "vat_payer": false
  })
});
const data = await response.json();
Odpověď 200 OK
{
  "eligible": true,
  "band": 1,
  "monthly": 9162.0,
  "annual": 109944.0,
  "split": {
    "tax": 100.0,
    "social": 5756.0,
    "health": 3306.0
  },
  "reasons": [],
  "notes": [
    "Paušální daň zahrnuje daň, sociální i zdravotní pojištění; je-li vaše daň rovna paušální dani, nepodáváte daňové přiznání ani přehledy pro ČSSZ a zdravotní pojišťovnu (§ 38lh ZDP, § 15 odst. 1 zákona č. 589/1992 Sb., § 24 odst. 2 zákona č. 592/1992 Sb.).",
    "V paušálním režimu nelze uplatnit slevy na dani, daňové zvýhodnění na děti, daňový bonus ani odpočty od základu daně."
  ],
  "basis": "§ 2a, § 7a a § 38lk ZDP"
}

Dlouhé seznamy jsou v ukázce zkrácené na první položky.

/calc/corporate – Daň z příjmů právnické osoby

Spočítá daň z příjmů právnických osob z účetního výsledku hospodaření: připočte daňově neuznatelné náklady, odečte nezdanitelné výnosy, uplatní ztrátu z minulých let, odpočet na výzkum a dary (jen jednotlivé dary od zákonného minima, nejvýše podíl základu), zaokrouhlí základ, vrátí daň, zálohy na další období, doplatek a řádky přiznání DPPO. Úpravy se zařadí na výchozí řádky přiznání.

Tělo požadavku

Formát application/json.

PoleTypPovinnéPopis
yearcelé čísloneRok, výchozí je aktuální (zdaňovací období končí 31. 12.); musí mít sazby.
accounting_profitčísloanoÚčetní výsledek hospodaření před zdaněním (ztráta záporně).
non_deductiblepole (objekt)nePřipočitatelné položky.
non_deductible[].labeltextnePopis
non_deductible[].amountčísloneČástka
non_taxablepole (objekt)neOdečitatelné položky.
non_taxable[].labeltextnePopis
non_taxable[].amountčísloneČástka
loss_carryforwardčísloneDaňová ztráta z minulých let k uplatnění. Výchozí 0.
giftspole (číslo)neČástky jednotlivých darů (lze poslat i jedno číslo).
rd_deductiončísloneOdpočet na výzkum a vývoj. Výchozí 0.
paid_advancesčísloneZaplacené zálohy na daň. Výchozí 0.
last_known_taxčíslonePoslední známá daň pro výpočet záloh; bez ní se použije vypočtená daň.

Pole odpovědi

PoleVýznam
increasesPřipočtené položky s řádkem přiznání
decreasesOdečtené položky s řádkem přiznání
tax_baseZáklad daně před odpočty
lossDaňová ztráta běžného roku
loss_appliedUplatněná ztráta z minulých let
rd_appliedUplatněný odpočet na výzkum a vývoj
base_after_deductionsZáklad po odečtení ztráty a odpočtu na výzkum
gifts_appliedOdečtené dary
tax_base_roundedZaokrouhlený základ
rateSazba daně
taxDaň
advancesZálohy: frequency, amount, period, schedule
balanceDaň minus zaplacené zálohy
form_rowsNenulové řádky přiznání DPPO
warningsUpozornění (ztráta, malé dary, strop darů)

Chyby této operace

StavKódKdy
422–Chybí accounting_profit

Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.

Příklad

cURL

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"year":2026,"accounting_profit":1250000,"non_deductible":[{"label":"Reprezentace","amount":18000}],"gifts":[5000]}' \
  https://techtools.cz/ucetnictvi-api/calc/corporate

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/calc/corporate', {
  headers: { 'Content-Type': 'application/json' },
  method: 'POST',
  body: JSON.stringify({
    "year": 2026,
    "accounting_profit": 1250000,
    "non_deductible": [
      {
        "label": "Reprezentace",
        "amount": 18000
      }
    ],
    "gifts": [
      5000
    ]
  })
});
const data = await response.json();
Odpověď 200 OK
{
  "year": 2026,
  "accounting_profit": 1250000.0,
  "increases": [
    {
      "label": "Reprezentace",
      "amount": 18000.0,
      "row": "40"
    }
  ],
  "decreases": [],
  "tax_base": 1268000.0,
  "loss": 0.0,
  "loss_applied": 0.0,
  "rd_applied": 0.0,
  "base_after_deductions": 1268000.0,
  "gifts_applied": 5000.0,
  "tax_base_rounded": 1263000.0,
  "rate": 0.21,
  "tax": 265230.0,
  "advances": {
    "last_known_tax": 265230.0,
    "frequency": "quarterly",
    "amount": 66400.0,
    "period": {
      "from": "2027-05-04",
      "to": "2028-05-02"
    },
    "schedule": [
      {
        "due_on": "2027-06-15",
        "amount": 66400.0
      },
      {
        "due_on": "2027-09-15",
        "amount": 66400.0
      }
    ],
    "basis": "§ 38a ZDP"
  },
  "paid_advances": 0.0,
  "balance": 265230.0,
  "form_rows": {
    "40": 18000.0,
    "10": 1250000.0,
    "70": 18000.0,
    "200": 1268000.0,
    "220": 1268000.0,
    "250": 1268000.0,
    "260": 5000.0,
    "270": 1263000.0,
    "280": 21.0,
    "290": 265230.0,
    "310": 265230.0,
    "330": 265230.0,
    "340": 265230.0,
    "360": 265230.0,
    "V.4": -265230.0
  },
  "warnings": []
}

Dlouhé seznamy jsou v ukázce zkrácené na první položky.

/calc/payroll – Výplatní páska zaměstnance za měsíc

Spočítá měsíční mzdu zaměstnance v pracovním poměru (hpp), na dohodu o pracovní činnosti (dpc) nebo o provedení práce (dpp): účast na pojištění, pojistné zaměstnance i zaměstnavatele, zálohu nebo srážkovou daň se slevami a zvýhodněním na děti, čistou mzdu, výplatu s bonusem, náklady zaměstnavatele a předkontace mzdových zápisů.

Tělo požadavku

Formát application/json.

PoleTypPovinnéPopis
yearcelé čísloneRok, výchozí je aktuální; musí mít sazby.
monthcelé čísloneMěsíc, výchozí je aktuální. Rozsah od 1 do 12.
contracttextnePracovněprávní vztah. Hodnoty: hpp, dpc, dpp. Výchozí hpp.
grossčísloanoHrubá mzda za měsíc. Rozsah od 0.
declarationano/neneZaměstnanec podepsal prohlášení poplatníka. Výchozí true.
childrenpole (objekt)neDěti pro daňové zvýhodnění.
children[].ordercelé číslonePořadí dítěte
children[].ztppano/neneDítě s průkazem ZTP/P
children[].monthspole (celé číslo)neČísla měsíců nároku; bez nich se dítě uplatní v každém měsíci
disabilitytextneStupeň invalidity zaměstnance (0 = žádná). Hodnoty: 0, 1, 2, 3, first, second, third.
ztppano/neneZaměstnanec je držitelem průkazu ZTP/P. Výchozí false.
studentano/neneStudent (bez minimálního vyměřovacího základu zdravotního pojištění). Výchozí false.
pensioner_discountano/nenePracující důchodce se slevou na pojistném. Výchozí false.
health_minimum_exemptano/neneNeuplatní se minimální vyměřovací základ zdravotního pojištění. Výchozí false.
agreed_wagečísloneSjednaná mzda (pro účast na pojištění u zaměstnání malého rozsahu).
ytd_social_basečísloneDosavadní roční vyměřovací základ sociálního pojištění (kvůli ročnímu maximu). Výchozí 0.

Pole odpovědi

PoleVýznam
insuredÚčast na sociálním a zdravotním pojištění
assessment_baseVyměřovací základy
employeePojistné zaměstnance: social, health, total
employerPojistné zaměstnavatele: social, health, total
health_min_base_topupDoplatek do minimálního základu zdravotního pojištění
taxDaň: základ, sazby, slevy, zvýhodnění na děti, advance, withholding, kind
netČistá mzda
payoutK výplatě včetně daňového bonusu
employer_costNáklady zaměstnavatele
postingsPředkontace: debit, credit, amount, text
warningsUpozornění

Chyby této operace

StavKódKdy
422–Chybí gross, gross je záporná, neznámý contract, měsíc mimo 1–12 nebo neplatný stupeň invalidity

Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.

Příklad

cURL

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"year":2026,"month":9,"contract":"hpp","gross":52000,"children":[{"order":1}]}' \
  https://techtools.cz/ucetnictvi-api/calc/payroll

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/calc/payroll', {
  headers: { 'Content-Type': 'application/json' },
  method: 'POST',
  body: JSON.stringify({
    "year": 2026,
    "month": 9,
    "contract": "hpp",
    "gross": 52000,
    "children": [
      {
        "order": 1
      }
    ]
  })
});
const data = await response.json();
Odpověď 200 OK
{
  "gross": 52000.0,
  "insured": {
    "social": true,
    "health": true
  },
  "assessment_base": {
    "social": 52000.0,
    "health": 52000.0
  },
  "employee": {
    "social": 3692.0,
    "health": 2340.0,
    "total": 6032.0
  },
  "employer": {
    "social": 12896.0,
    "health": 4680.0,
    "total": 17576.0
  },
  "health_min_base_topup": 0.0,
  "tax": {
    "base": 52000.0,
    "rounded_base": 52000.0,
    "rate_split": [
      {
        "rate": 0.15,
        "base": 52000.0,
        "tax": 7800.0
      }
    ],
    "advance_before_credits": 7800.0,
    "credits": [
      {
        "key": "taxpayer",
        "label": "Základní sleva na poplatníka",
        "amount": 2570.0,
        "entitlement": 2570.0
      }
    ],
    "child_benefit": {
      "total": 1267.0,
      "as_credit": 1267.0,
      "bonus": 0.0
    },
    "advance": 3963.0,
    "withholding": 0.0,
    "kind": "advance"
  },
  "net": 42005.0,
  "payout": 42005.0,
  "employer_cost": 69576.0,
  "postings": [
    {
      "debit": "521",
      "credit": "331",
      "amount": 52000.0,
      "text": "Hrubá mzda"
    },
    {
      "debit": "524",
      "credit": "336",
      "amount": 12896.0,
      "text": "Sociální pojištění hrazené zaměstnavatelem"
    }
  ],
  "warnings": []
}

Dlouhé seznamy jsou v ukázce zkrácené na první položky.

/calc/travel – Cestovní náhrady za jednu tuzemskou nebo zahraniční cestu

Spočítá cestovní náhrady jedné cesty ze sídla do cíle a zpět: stravné po kalendářních dnech s krácením za poskytnuté jídlo, základní náhradu za použití vozidla, náhradu za pohonné hmoty (bez ceny paliva se použije průměrná cena z vyhlášky), ubytování a ostatní výdaje. U zaměstnance se použije minimální sazba stravného, u OSVČ maximální. Zahraniční stravné se vrátí v cizí měně; do celkové částky se nezapočte, protože kalkulačka nemá kurz. Rok sazeb se bere z data odjezdu; časy bez časového pásma se berou tak, jak jsou zadané.

Tělo požadavku

Formát application/json.

PoleTypPovinnéPopis
departuretextanoOdjezd, např. 2026-09-21T06:30.
arrivaltextanoNávrat; musí být po odjezdu a nejvýše 366 dní od něj.
destinationtextneCíl cesty.
travellertextneZaměstnanec, nebo OSVČ. Hodnoty: employee, self_employed. Výchozí employee.
kmčísloneUjeté kilometry soukromým vozidlem; bez nich se náhrady za vozidlo nepočítají.
vehicle_kindtextneDruh vozidla. Hodnoty: car, motorcycle, truck, electric. Výchozí car.
consumptiončísloneSpotřeba v litrech (nebo kWh) na 100 km podle technického průkazu.
fueltextnePalivo; u elektromobilu vždy electricity. Hodnoty: petrol95, petrol98, diesel, lpg, electricity. Výchozí petrol95.
fuel_pricečísloneDoložená cena paliva za jednotku; bez ní průměrná cena z vyhlášky.
mealspole (objekt)nePoskytnutá jídla, která krátí stravné.
meals[].datedatumneDen
meals[].countcelé číslonePočet jídel
accommodationčísloneVýdaje za ubytování. Výchozí 0.
otherčísloneOstatní nutné výdaje. Výchozí 0.
foreign_countrytextneKód cílového státu (ISO 3166-1 alpha-2) u zahraniční cesty; CZ vrátí chybu.
hours_abroadčíslonePočet hodin v zahraničí u zahraniční cesty.

Pole odpovědi

PoleVýznam
duration_hoursDélka cesty v hodinách
per_diemTuzemské stravné: band, rate, reductions, amount, days
foreign_per_diemZahraniční stravné v cizí měně (amount_czk je null) nebo null
mileageZákladní náhrada: base_rate, km, amount
fuelNáhrada za pohonné hmoty: type, price, consumption, amount
accommodationVýdaje za ubytování ze vstupu
otherOstatní nutné výdaje ze vstupu
totalCelkem v Kč bez zahraničního stravného; u zaměstnance zaokrouhleno
basisPrávní základ
warningsUpozornění

Chyby této operace

StavKódKdy
422–Chybí odjezd nebo návrat, návrat není po odjezdu, nebo cesta trvá déle než 366 dní; tyto zprávy („Zadejte odjezd i návrat“, „Návrat musí být po odjezdu“, „Cesta smí trvat nejvýš 366 dní“) nemají předponu „Chybí nebo je neplatný parametr:“
422–Neznámý druh vozidla, palivo, záporné kilometry nebo náhrady, u zahraniční cesty stát CZ

Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.

Příklad

cURL

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"destination":"Brno","departure":"2026-09-21T06:30","arrival":"2026-09-21T19:10","km":420,"vehicle_kind":"car","consumption":6.1,"fuel":"diesel"}' \
  https://techtools.cz/ucetnictvi-api/calc/travel

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/calc/travel', {
  headers: { 'Content-Type': 'application/json' },
  method: 'POST',
  body: JSON.stringify({
    "destination": "Brno",
    "departure": "2026-09-21T06:30",
    "arrival": "2026-09-21T19:10",
    "km": 420,
    "vehicle_kind": "car",
    "consumption": 6.1,
    "fuel": "diesel"
  })
});
const data = await response.json();
Odpověď 200 OK
{
  "duration_hours": 12.67,
  "per_diem": {
    "band": "medium",
    "rate": 236.0,
    "reductions": 0.0,
    "amount": 236.0,
    "days": [
      {
        "date": "2026-09-21",
        "dates": [
          "2026-09-21"
        ],
        "hours": 12.67,
        "band": "medium",
        "range": {
          "min": 236.0,
          "max": 284.0
        },
        "rate": 236.0,
        "meals": 0,
        "reductions": 0.0,
        "amount": 236.0
      }
    ]
  },
  "foreign_per_diem": null,
  "mileage": {
    "base_rate": 5.9,
    "km": 420.0,
    "amount": 2478.0
  },
  "fuel": {
    "type": "diesel",
    "price": 44.5,
    "consumption": 6.1,
    "amount": 1140.09
  },
  "accommodation": 0.0,
  "other": 0.0,
  "total": 3855.0,
  "basis": [
    "§ 163 odst. 1 až 3 zákoníku práce, vyhláška č. 573/2025 Sb. § 2",
    "§ 6 odst. 7 písm. a) ZDP, § 176 odst. 1 zákoníku práce, vyhláška č. 573/2025 Sb. § 3"
  ],
  "warnings": []
}

Dlouhé seznamy jsou v ukázce zkrácené na první položky.

/calc/depreciation – Daňové a účetní odpisy majetku

Vrátí odpisový plán hmotného majetku. S group spočítá daňové odpisy rovnoměrné nebo zrychlené po letech (§ 30 až 32 ZDP); s useful_life_months účetní odpisy po měsících sečtené po letech, od měsíce po zařazení. Lze zadat obojí; alespoň jedno je povinné.

Tělo požadavku

Formát application/json.

PoleTypPovinnéPopis
pricečísloanoVstupní (pořizovací) cena, kladná.
groupcelé čísloneOdpisová skupina pro daňové odpisy. Rozsah od 1 do 6.
methodtextneRovnoměrné nebo zrychlené daňové odpisy. Hodnoty: straight, accelerated. Výchozí straight.
start_yearcelé čísloneRok zahájení daňového odpisování, výchozí je aktuální.
disposal_yearcelé čísloneRok vyřazení (polovina ročního odpisu); nesmí předcházet start_year.
useful_life_monthscelé čísloneDoba použitelnosti v měsících pro účetní odpisy. Rozsah od 1 do 1200.
in_use_fromdatumneDatum zařazení do užívání; povinné s useful_life_months.
residualčísloneZbytková hodnota (0 až cena). Výchozí 0.

Pole odpovědi

PoleVýznam
taxDaňové odpisy po letech: year, rate_or_coefficient, kind, amount, deductible, accumulated, remaining
accountingÚčetní odpisy po letech: year, amount, accumulated, remaining

Chyby této operace

StavKódKdy
422–Chybí price, nebo group i useful_life_months
422–Neznámá skupina nebo způsob, cena není kladná, rok vyřazení před zahájením
422–useful_life_months mimo 1–1200, chybí nebo je neplatné in_use_from, zbytková hodnota mimo 0 až cenu

Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.

Příklad

cURL

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"price":850000,"group":2,"method":"straight","start_year":2026}' \
  https://techtools.cz/ucetnictvi-api/calc/depreciation

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/calc/depreciation', {
  headers: { 'Content-Type': 'application/json' },
  method: 'POST',
  body: JSON.stringify({
    "price": 850000,
    "group": 2,
    "method": "straight",
    "start_year": 2026
  })
});
const data = await response.json();
Odpověď 200 OK
{
  "tax": [
    {
      "year": 2026,
      "rate_or_coefficient": 11.0,
      "kind": "first_year",
      "amount": 93500.0,
      "deductible": 93500.0,
      "accumulated": 93500.0,
      "remaining": 756500.0
    },
    {
      "year": 2027,
      "rate_or_coefficient": 22.25,
      "kind": "following_year",
      "amount": 189125.0,
      "deductible": 189125.0,
      "accumulated": 282625.0,
      "remaining": 567375.0
    }
  ]
}

Dlouhé seznamy jsou v ukázce zkrácené na první položky.

/calc/late_interest – Úrok z prodlení a náklady spojené s uplatněním pohledávky

Spočítá zákonný úrok z prodlení podle nařízení vlády č. 351/2013 Sb.: repo sazba ČNB platná první den kalendářního pololetí, v němž prodlení začalo, plus 8 procentních bodů, po celou dobu prodlení; výsledek je rozdělený po pololetích. Mezi podnikateli přidá paušál 1 200 Kč. Zaplaceno do splatnosti znamená nulový úrok. Částka je vždy v Kč.

Tělo požadavku

Formát application/json.

PoleTypPovinnéPopis
principalčísloanoDlužná jistina. Rozsah od 0.
due_datedatumanoDen splatnosti; prodlení začíná následujícím dnem. Nejdříve 31. 12. 2013.
paid_ondatumneDen úhrady, výchozí je dnešek.
businessano/neneZávazek mezi podnikateli nebo vůči veřejnému zadavateli (nárok na paušál 1 200 Kč). Výchozí true.

Pole odpovědi

PoleVýznam
delay_fromPrvní den prodlení (null bez prodlení)
daysPočet dní prodlení
reference_dateRozhodný den pro repo sazbu
repo_rateRepo sazba ČNB
rateRoční sazba úroku z prodlení
periodsPololetí: from, to, days, rate, interest
interestÚrok celkem
recovery_costPaušální náklady 1 200 Kč nebo 0
basisPrávní základ

Chyby této operace

StavKódKdy
422–Chybí principal nebo due_date, datum je neplatné nebo jistina záporná
422–Data mimo roky 2000–2100 nebo od sebe víc než 30 let
422–Splatnost před 31. 12. 2013 (prodlení podle nařízení č. 142/1994 Sb. Saldo nepočítá)

Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.

Příklad

cURL

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"principal":48400,"due_date":"2026-05-15","paid_on":"2026-09-26"}' \
  https://techtools.cz/ucetnictvi-api/calc/late_interest

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/calc/late_interest', {
  headers: { 'Content-Type': 'application/json' },
  method: 'POST',
  body: JSON.stringify({
    "principal": 48400,
    "due_date": "2026-05-15",
    "paid_on": "2026-09-26"
  })
});
const data = await response.json();
Odpověď 200 OK
{
  "principal": 48400.0,
  "currency": "CZK",
  "delay_from": "2026-05-16",
  "days": 134,
  "reference_date": "2026-01-01",
  "repo_rate": 3.5,
  "rate": 11.5,
  "periods": [
    {
      "from": "2026-05-16",
      "to": "2026-06-30",
      "days": 46,
      "rate": 11.5,
      "interest": 701.47
    },
    {
      "from": "2026-07-01",
      "to": "2026-09-26",
      "days": 88,
      "rate": 11.5,
      "interest": 1341.94
    }
  ],
  "interest": 2043.41,
  "recovery_cost": 1200.0,
  "basis": [
    "§ 2 odst. 1 nařízení vlády č. 351/2013 Sb. (repo sazba ČNB platná první den kalendářního pololetí, v němž došlo k prodlení, + 8 p. b., po celou dobu prodlení)",
    "§ 3 nařízení vlády č. 351/2013 Sb. (vzájemný závazek podnikatelů nebo podnikatele a veřejného zadavatele)"
  ]
}

Dlouhé seznamy jsou v ukázce zkrácené na první položky.

GET Veřejný náhled sdílené faktury

/share/{token}

Oprávnění
Veřejné, bez přihlášení

Vrátí to, co vidí zákazník na veřejném odkazu faktury (stránka /tools/ucetnictvi/faktura/#<token>): údaje dokladu s řádky a rekapitulací DPH, odběratele, dodavatele včetně loga a vzhledu faktury, bankovní účet a řetězec QR Platby. Sdílet lze jen vystavenou fakturu, zálohovou fakturu, daňový doklad k přijaté platbě nebo dobropis; interní poznámka ani účetní účty řádků se nevracejí. Odpověď má hlavičku X-Robots-Tag: noindex, nofollow.

Parametry

NázevKdeTypPovinnýPopis
tokencestatextanoToken z odkazu (32 znaků A–Z, a–z, 0–9, _ a -). Jiný tvar routa nepřijme a vrátí 404 od Rails. Příklad UC2gSmTAa-8xk0Q9yrAGCAQE1471pxZS.

Odpověď

200 application/json Doklad, dodavatel, bankovní účet a QR Platba.

PoleVýznam
documentDruh, stav, číslo, symboly, data, měna, součty, úhrady, zbývá uhradit, stav splatnosti, řádky, rekapitulace DPH, odběratel, související doklad
entityDodavatel: název, adresa, IČO, DIČ, kontakty, vztah k DPH, patička, logo (data URI), barva a vzhled faktury v settings, vat_payer
bank_accountÚčet pro platbu (number, bank_code, iban, bic, currency) nebo null
spaydQR Platba jen u neuhrazeného dokladu v CZK nebo EUR, jinak null

Chyby této operace

StavKódKdy
404–Token neexistuje, sdílení bylo zrušeno nebo doklad už není vystavený (JSON „Záznam nebyl nalezen“); token jiného tvaru vrátí 404 od Rails bez JSON

Společné chyby všech operací (přihlášení, oprávnění, limity) popisuje Chyby a limity.

Chování

Co změní
Když odkaz neotevře přihlášený člen firmy, zvýší počítadlo zobrazení a při prvním zobrazení uloží jeho čas. Jinak nic nezapisuje.
Opakování
Každé zobrazení mimo členy firmy se započítá znovu.

Příklad

cURL

curl \
  https://techtools.cz/ucetnictvi-api/share/3bND5_Cv7iT39piyS-wZbFjQ1NizQFVX

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/share/3bND5_Cv7iT39piyS-wZbFjQ1NizQFVX');
const data = await response.json();
Odpověď 200 OK
{
  "document": {
    "kind": "invoice_out",
    "kind_label": "Faktura vydaná",
    "status": "issued",
    "number": "FV20260025",
    "variable_symbol": "20260025",
    "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,
    "paid_amount": 0.0,
    "remaining": 23958.0,
    "payment_state": "unpaid",
    "days_overdue": 0,
    "description": "Správa webu – září",
    "constant_symbol": null,
    "specific_symbol": null,
    "exchange_rate": 1.0,
    "vat_mode": "domestic",
    "prices_include_vat": false,
    "payment_method": "bank",
    "rounding": 0.0,
    "total_gross": 23958.0,
    "note": null,
    "language": "cs",
    "lines": [
      {
        "description": "Správa webu – září",
        "quantity": 12.0,
        "unit": "hod",
        "unit_price": 1650.0,
        "discount_percent": 0.0,
        "vat_rate": 21.0,
        "vat_kind": "standard",
        "net": 19800.0,
        "vat": 4158.0,
        "gross": 23958.0
      }
    ],
    "vat_recap": [
      {
        "rate": 21.0,
        "net": 19800.0,
        "vat": 4158.0,
        "gross": 23958.0,
        "net_czk": 19800.0,
        "vat_czk": 4158.0
      }
    ],
    "partner": {
      "name": "Nordwood Studio s.r.o.",
      "street": "Korunní 1208/74",
      "city": "Praha 10",
      "zip": "10100",
      "country": "CZ",
      "ico": "90000013",
      "dic": "CZ90000013"
    },
    "related_document": null
  },
  "entity": {
    "name": "Ukázková firma s.r.o.",
    "street": "Na Příkopě",
    "house_number": "859",
    "orientation_number": "22",
    "city": "Praha",
    "zip": "11000",
    "country": "CZ",
    "ico": "99999994",
    "dic": "CZ99999994",
    "register_note": "Zapsáno v obchodním rejstříku vedeném Městským soudem v Praze, oddíl C, vložka 999999 (ukázková data).",
    "email": "demo@example.cz",
    "phone": "+420 777 000 000",
    "web": null,
    "vat_status": "monthly",
    "invoice_footer": null,
    "logo_data": null,
    "accent_color": null,
    "settings": {
      "invoice_style": "plain",
      "invoice_font": "auto",
      "invoice_density": "normal",
      "invoice_table": "auto",
      "invoice_corners": "auto",
      "invoice_logo_size": "m",
      "show_qr": true,
      "invoice_logo_name": false,
      "invoice_row_numbers": false,
      "invoice_paid_stamp": true,
      "invoice_contacts": true,
      "invoice_credit": true
    },
    "vat_payer": true
  },
  "bank_account": {
    "number": "2900001227",
    "bank_code": "2010",
    "iban": "CZ3820100000002900001227",
    "bic": null,
    "currency": "CZK"
  },
  "spayd": "SPD*1.0*ACC:CZ3820100000002900001227*AM:23958.00*CC:CZK*RN:Uk%C3%A1zkov%C3%A1 firma s.r.o.*DT:20261012*MSG:Faktura FV20260025*X-VS:20260025"
}

GET ISDOC sdílené faktury ke stažení

/share/{token}/isdoc

Oprávnění
Veřejné, bez přihlášení

Vrátí sdílený doklad jako soubor ISDOC 6.0.2 (XML) ke stažení s názvem <číslo dokladu>.isdoc, aby ho zákazník mohl načíst do svého účetnictví. Počítadlo zobrazení nemění. Odpověď má hlavičku X-Robots-Tag: noindex, nofollow.

Parametry

NázevKdeTypPovinnýPopis
tokencestatextanoToken z odkazu (32 znaků A–Z, a–z, 0–9, _ a -). Příklad UC2gSmTAa-8xk0Q9yrAGCAQE1471pxZS.

Odpověď

200 application/xml Soubor ISDOC (Content-Disposition: attachment).

Chyby této operace

StavKódKdy
404–Token neexistuje, sdílení bylo zrušeno nebo doklad už není vystavený
422–Z dokladu nelze sestavit ISDOC (např. chybí číslo, položky nebo název dodavatele)

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 \
  https://techtools.cz/ucetnictvi-api/share/3bND5_Cv7iT39piyS-wZbFjQ1NizQFVX/isdoc

JavaScript

const response = await fetch('https://techtools.cz/ucetnictvi-api/share/3bND5_Cv7iT39piyS-wZbFjQ1NizQFVX/isdoc');
const data = await response.json();
Odpověď 200 OK
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="http://isdoc.cz/namespace/2013" version="6.0.2">
  <DocumentType>1</DocumentType>
  <ID>FV20260025</ID>
  <UUID>A41DE8B1-BD65-46A0-886F-23C5CD2A89C4</UUID>
  <IssuingSystem>Saldo – TechTools.cz</IssuingSystem>
  <IssueDate>2026-09-28</IssueDate>
  <TaxPointDate>2026-09-28</TaxPointDate>
  <VATApplicable>true</VATApplicable>
  <ElectronicPossibilityAgreementReference/>
  <LocalCurrencyCode>CZK</LocalCurrencyCode>
  <CurrRate>1</CurrRate>
  <RefCurrRate>1</RefCurrRate>
  <AccountingSupplierParty>
    <Party>
      <PartyIdentification>
        <ID>99999994</ID>
      </PartyIdentification>
      <PartyName>
        <Name>Ukázková firma s.r.o.</Name>
      </PartyName>
      <PostalAddress>
        <StreetName>Na Příkopě</StreetName>
        <BuildingNumber>859/22</BuildingNumber>
        <CityName>Praha</CityName>
        <PostalZone>11000</PostalZone>
        <Country>
          <IdentificationCode>CZ</IdentificationCode>
          <Name>Česká republika</Name>
        </Country>
      </PostalAddress>
      <PartyTaxScheme>
        <CompanyID>CZ99999994</CompanyID>
        <TaxScheme>VAT</TaxScheme>
      </PartyTaxScheme>
      <RegisterIdentification>
        <Preformatted>Zapsáno v obchodním rejstříku vedeném Městským soudem v Praze, oddíl C, vložka 999999 (ukázková data).</Preformatted>
      </RegisterIdentification>
      <Contact>
        <Telephone>+420 777 000 000</Telephone>
        <ElectronicMail>demo@example.cz</ElectronicMail>
      </Contact>
    </Party>
  </AccountingSupplierParty>
  <AccountingCustomerParty>
    <Party>
      <PartyIdentification>
        <ID>90000013</ID>
      </PartyIdentification>
      <PartyName>
        <Name>Nordwood Studio s.r.o.</Name>
      </PartyName>
      <PostalAddress>
        <StreetName>Korunní</StreetName>
        <BuildingNumber>1208/74</BuildingNumber>
        <CityName>Praha 10</CityName>
        <PostalZone>10100</PostalZone>
        <Country>
          <IdentificationCode>CZ</IdentificationCode>
          <Name>Česká republika</Name>
        </Country>
      </PostalAddress>
      <PartyTaxScheme>
        <CompanyID>CZ90000013</CompanyID>
        <TaxScheme>VAT</TaxScheme>
      </PartyTaxScheme>
      <Contact>
        <ElectronicMail>fakturace@example.cz</ElectronicMail>
      </Contact>
    </Party>
  </AccountingCustomerParty>
  <InvoiceLines>
    <InvoiceLine>
      <ID>1</ID>
      <InvoicedQuantity unitCode="hod">12</InvoicedQuantity>
      <LineExtensionAmount>19800.00</LineExtensionAmount>
      <LineExtensionAmountTaxInclusive>23958.00</LineExtensionAmountTaxInclusive>
      <LineExtensionTaxAmount>4158.00</LineExtensionTaxAmount>
      <UnitPrice>1650</UnitPrice>
      <UnitPriceTaxInclusive>1996.5</UnitPriceTaxInclusive>
      <ClassifiedTaxCategory>
        <Percent>21</Percent>
        <VATCalculationMethod>0</VATCalculationMethod>
        <VATApplicable>true</VATApplicable>
      </ClassifiedTaxCategory>
      <Item>
  
…