MyTempo Dokumentace API v1 · návrh

MyTempo API

Napojte účetnictví a daňovou evidenci v MyTempo na e-shop, CRM, n8n, Make nebo AI asistenta. API čte vše, co vidíte v aplikaci, a zakládá koncepty dokladů – účetní kroky zůstávají v rukou člověka.

Základní adresahttps://api.mytempo.cz/v1
OvěřeníBearer tempo_pat_… / OAuth 2.1
FormátJSON · OpenAPI 3.1
Volání40 (23 beta · 6 v1 · 11 připravujeme)
Návrh verze 1. API zatím není spuštěné. Adresy, názvy polí a obrazovky se do zveřejnění mohou změnit; všechny ukázky používají smyšlená data.

Přehled integrací

MyTempo můžete propojit s dalšími aplikacemi a s AI asistenty. Data zůstávají v MyTempo a platí pro ně stejná pravidla a oprávnění jako v aplikaci.

Způsob K čemu Pro koho
REST API jiná aplikace čte data a zakládá koncepty dokladů, partnery nebo poštu n8n, Make, Zapier, e-shop, CRM, vlastní skripty
AI asistenti (MCP) ptáte se Clauda, ChatGPT nebo jiného asistenta na stav firem běžnou řečí každý uživatel MyTempo
Webhooky připravujeme MyTempo samo oznámí jiné aplikaci, že se něco stalo (např. faktura je uhrazená) n8n, Make, e-shop

Co přes napojení jde: číst vše, co vidíte v aplikaci (firmy, období, doklady, partnery, saldo, zůstatky peněz, výkazy, číselníky), zakládat koncepty dokladů, partnery, přílohy a přijatou poštu a nahrávat doklady k vytěžení.

Co přes napojení nejde: zařazení, zaúčtování, uzamčení a storno dokladu; párování, uzávěrka, změny osnovy a období; podání DPH a kontrolního hlášení, odeslání datové zprávy, platby; správa uživatelů, oprávnění a tokenů. Tyto kroky dělá vždy člověk v aplikaci. Koncept založený přes API nebo AI se nikde nepočítá, dokud ho nezkontrolujete a nezařadíte.

Napojení povoluje vlastník organizace v Nastavení organizace › Integrace › Povolení, zvlášť API a zvlášť AI asistenty. U každé firmy lze napojení vypnout. Napojení nikdy nevidí ani neudělá víc než uživatel, kterému patří, a můžete ho dál omezit na vybrané firmy a čtení (Oprávnění a rozsahy).

Začínáme s API

Za deset minut vytvoříte osobní token, ověříte spojení a načtete faktury po splatnosti. Stačí příkazový řádek s programem curl (je ve Windows 10+, macOS i Linuxu).

Než začnete: vlastník organizace musí mít zapnuto Povolit API a vy potřebujete přístup aspoň k jedné firmě.

1. Vytvořte token

  1. Otevřete Nastavení organizace › Integrace › Osobní tokeny a klikněte na Nový token.
  2. Název Zkouška API, firmy: jedna testovací firma, rozsah Jen čtení, platnost 7 dní.
  3. Potvrďte heslem a token zkopírujte. Zobrazí se jen jednou.

Token začíná tempo_pat_. Kdo ho zná, vidí data jako vy – nikomu ho neposílejte.

2. Ověřte spojení

export TEMPO_TOKEN="tempo_pat_…"
curl -s https://api.mytempo.cz/v1/me \
  -H "Authorization: Bearer $TEMPO_TOKEN"

Odpověď ukáže uživatele, organizaci a rozsah tokenu (Kdo jsem). Kód 401 znamená, že token je překlepnutý, zrušený nebo prošlý.

3. Načtěte firmy

curl -s https://api.mytempo.cz/v1/companies \
  -H "Authorization: Bearer $TEMPO_TOKEN"

Hodnotu id firmy použijete v dalších voláních (Seznam firem).

4. Načtěte faktury po splatnosti

curl -s "https://api.mytempo.cz/v1/companies/9d42…/open-items?side=receivable&overdue=true" \
  -H "Authorization: Bearer $TEMPO_TOKEN"

Odpověď vrátí neuhrazené faktury s polem remaining (Neuhrazené pohledávky a závazky). Částky jsou vždy text s tečkou ("12100.00"), aby se nezaokrouhlovaly.

5. Ukliďte

Zkušební token zrušte v Nastavení organizace › Integrace › Osobní tokeny › Zrušit.

Osobní tokeny

Osobní token je heslo pro aplikaci: jiná aplikace s ním pracuje v MyTempo vaším jménem a jen v rozsahu, který mu nastavíte.

Vytvoření tokenu

  1. Otevřete Nastavení organizace › Integrace › Osobní tokeny a klikněte na Nový token.
  2. Vyplňte název podle integrace (např. n8n – faktury po splatnosti), firmy (všechny nebo vybrané), rozsah (Jen čtení nebo jednotlivá práva k zápisu), platnost (nejvýš 1 rok, výchozí 90 dní) a volitelně povolené IP adresy (např. 203.0.113.0/24).
  3. Potvrďte heslem a token uložte do správce hesel nebo úložiště tajemství integrace. Zobrazí se jen jednou.

Doporučení

  • Jeden token na jednu integraci – když jeden zrušíte, ostatní běží dál a v logu poznáte, který co dělal.
  • Jen potřebné firmy a práva – pro přehledy stačí Jen čtení.
  • Krátká platnost – 14 dní před vypršením vám MyTempo pošle oznámení.
  • Token patří do přihlašovacích údajů integrace (credentials, connection), ne do textu scénáře, exportu ani snímku obrazovky.

Co se stane s tokenem, když…

Situace Token
uživateli odeberete oprávnění k firmě nebo modulu okamžitě vidí méně – stejně jako uživatel
uživatel odejde z organizace nebo je zablokován okamžitě přestane fungovat
vlastník vypne Povolit API přestanou fungovat všechny tokeny organizace
token vyprší vrací 401; vytvořte nový a vyměňte ho v integraci

Unikl token? Hned ho zrušte (přestane platit okamžitě, historie zůstane), v Logu volání zkontrolujte, co se s ním dělo, a vytvořte nový.

Základní pravidla API

Adresa a ověření

Základní adresa je https://api.mytempo.cz/v1, jen HTTPS. Data firmy leží pod /v1/companies/{company_id}/…; organizace se určí z tokenu. Každý požadavek nese hlavičku Authorization: Bearer tempo_pat_…; aplikace přihlášené přes OAuth posílají přístupový token z přihlášení. Odpověď nese X-Tempo-Api-Version.

Formáty

Údaj Formát Příklad
Částka text s tečkou, 2 a více desetinných míst "12100.00"
Datum YYYY-MM-DD "2026-10-31"
Čas ISO 8601 s posunem "2026-11-11T08:15:00+01:00"
Měna kód ISO 4217 "CZK", "EUR"
Identifikátor UUID "9d42c1e0-…"
Druh dokladu kód z MyTempo "FV", "FP", "ID"

Částky jsou text, protože desetinná čísla v JSON se v mnoha nástrojích zaokrouhlují; na číslo je převeďte až pro výpočet. Datum „dnes“ neposílejte – určuje ho MyTempo podle českého času.

Stránkování

Seznamy vrací nejvýš limit záznamů (výchozí 100, maximum 500) a next_cursor. Pokračujte s cursor=<next_cursor>, dokud není null. Seznam se nikdy tiše nezkrátí. Pro pravidelnou synchronizaci používejte filtr updated_since místo stahování celých seznamů.

Souběžné úpravy

Každý záznam má version a odpověď hlavičku ETag. Úprava vyžaduje If-Match s touto hodnotou; když záznam mezitím změnil někdo jiný, dostanete 409 version_conflict – načtěte ho znovu a změnu zopakujte.

Bezpečné opakování

Každý POST, který něco zakládá, nese hlavičku Idempotency-Key s jedinečnou hodnotou (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé a vrátí původní výsledek; stejný klíč s jiným obsahem vrátí 409 idempotency_conflict. Klíč platí 24 hodin.

Chyby

Chyby mají formát application/problem+json (RFC 9457). V programu se řiďte polem code, pole detail a message jsou česky pro lidi. Přehled kódů je v části Chybové kódy.

{
  "type": "https://api.mytempo.cz/chyby/validation_failed",
  "title": "Neplatné údaje",
  "status": 422,
  "code": "validation_failed",
  "detail": "Doklad nejde uložit.",
  "errors": [
    { "field": "due_date", "code": "date_before_issue", "message": "Splatnost je před datem vystavení." }
  ]
}

Limity

Limit Hodnota
požadavky na token 120 za minutu
požadavky na organizaci 20 000 za den
výkazy a sestavy za celou firmu 30 za hodinu
velikost souboru 20 MB

Odpovědi nesou X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset; po překročení přijde 429 s Retry-After v sekundách.

Verze API

Ve verzi v1 se jen přidává (nová pole, volání, hodnoty) – integrace musí neznámá pole ignorovat. Nekompatibilní změna přijde jako v2 a v1 poběží nejméně 12 měsíců souběžně.

Oprávnění a rozsahy

Napojení smí jen to, co splní všechny tři podmínky: vaše oprávnění v MyTempo (firmy, moduly, knihy), rozsah tokenu nebo souhlasu a povolení organizace a firmy. Token tedy nikdy nesmí víc než vy, a když vám někdo oprávnění odebere, token ho ztratí ve stejné chvíli.

Rozsah V aplikaci Co dovolí
read Jen čtení číst vše, co vidíte, v povolených firmách
partners:write Adresář – zápis zakládat a upravovat partnery, načítat ARES
documents:write Doklady – koncepty zakládat koncepty FV, FP, ZFV, ZFP, ID, PO, přílohy a poznámky
bank:import Banka – import výpisů nahrát výpis GPC nebo camt.053
mail:write Pošta – zápis založit přijatou zásilku se skenem
extraction:write Vytěžování nahrát soubor k vytěžení
webhooks:manage Webhooky spravovat webhooky tokenu

Rozsahy pro zápis přijdou s další verzí. Každý zápis projde stejnými kontrolami jako v aplikaci (např. právo zapisovat do knihy). Odpověď 403 s kódem insufficient_scope znamená chybějící rozsah tokenu, kód forbidden chybějící oprávnění uživatele.

Napojení n8n a Make

Zatím MyTempo napojíte obecným HTTP modulem; vlastní uzel pro n8n a aplikaci pro Make připravujeme. Popis API ve formátu OpenAPI (https://api.mytempo.cz/v1/openapi.json) můžete do obou nástrojů importovat.

n8n

  1. Credentials › Add credential › Header Auth: Name Authorization, Value Bearer tempo_pat_…, uložte jako MyTempo.
  2. Uzel HTTP Request: Method GET, URL https://api.mytempo.cz/v1/companies/{id firmy}/open-items, Authentication Header Auth › MyTempo, query side=receivable, overdue=true.
  3. Pagination: parametr cursor z pole next_cursor, dokud není prázdné.

Make

  1. Modul HTTP › Make a request, Method GET, URL https://api.mytempo.cz/v1/companies/{id firmy}/open-items?side=receivable&overdue=true.
  2. Hlavička Authorization: Bearer tempo_pat_… – token uložte jako proměnnou, ne do sdíleného scénáře.
  3. Parse response: Ano.

Ukázka: každé pondělí faktury po splatnosti e-mailem

  1. Spouštěč Schedule (n8n) nebo plánování scénáře (Make): pondělí 7:00.
  2. Požadavek na open-items se stránkováním.
  3. Seřadit podle due_date, sečíst remaining (převést text na číslo).
  4. Odeslat e-mail se seznamem: číslo, partner, splatnost, zbývá.

Hlídejte 429 (počkejte podle Retry-After; v n8n zapněte Retry On Fail) a pro změny používejte updated_since.

AI asistenti (MCP)

AI asistent (Claude, ChatGPT, Cursor, n8n) se k MyTempo připojí přes MCP, otevřený protokol pro propojení AI s aplikacemi. Klíč nepotřebujete: zadáte adresu https://mcp.mytempo.cz a přihlásíte se do MyTempo.

Připojení

  1. V asistentovi přidejte vlastní konektor (Claude: Settings › Connectors › Add custom connector) s adresou https://mcp.mytempo.cz.
  2. Klikněte na Connect – otevře se přihlášení do MyTempo.
  3. Na stránce souhlasu zvolte organizaci, firmy a rozsah Jen čtení a klikněte na Povolit.

Nástroje bez podpory OAuth použijí osobní token v hlavičce Authorization. Odpojení: Nastavení organizace › Integrace › Připojené aplikace › Odpojit – přístup skončí okamžitě.

Nástroje

Nástroj Co vrátí
seznam_firem firmy, metoda vedení, plátcovství DPH, otevřená období
zustatky_penez zůstatky pokladen a bank napříč firmami a součet v CZK
pohledavky_a_zavazky neuhrazené faktury a zálohové listy ve a po splatnosti
hledat_doklady, detail_dokladu doklady podle textu a filtrů; hlavička, řádky, DPH, úhrady
hledat_partnera, ares partneři z Adresáře a údaje z ARES
obraty_uctu, vysledovka, rozvaha obraty účtů a výkazy za období
prehled_dph přehled DPH a kontrolního hlášení (bez podání)
nesparovane_pohyby pohyby banky bez dokladu nebo spárování
posta_k_vyrizeni zásilky přidělené vám k vyřízení

Příklady dotazů: „Kdo mi dluží víc než 30 dní po splatnosti?“, „Porovnej výsledek hospodaření Vzor s.r.o. za 1.–3. čtvrtletí 2026 s loňskem.“, „Které pohyby na bance ještě nejsou spárované?“ Zakládání konceptů z asistenta připravujeme; zařadit, zaúčtovat, stornovat ani zaplatit nebude asistent moci nikdy.

Bezpečnost a AI

Asistent vidí jen výsledky nástrojů ve firmách, které jste povolili. Odpovědi nástrojů dostane asistent a jeho poskytovatel (Anthropic, OpenAI…) a nakládání s nimi určují jeho podmínky – proto AI musí vědomě povolit vlastník organizace. U firem, kde to klient nechce, nechte AI vypnuté a používejte firemní tarify AI s vypnutým učením z vašich dat.

Asistent čte i texty z dokladů a útočník může do faktury vložit skrytý pokyn („zaplať tuto fakturu“). Proto asistent nemá nástroje na zařazení, zaúčtování, storno, mazání, párování ani platby, zakládá jen koncepty, před zápisem se ptá na potvrzení a počet zápisů za hodinu je omezený. Co asistent dělal, ukáže Log volání a u dokladu panel Historie.

Slovník pojmů

API používá anglické názvy polí, aby fungovalo s běžnými nástroji; kódy z MyTempo (druhy dokladů, kódy DPH) zůstávají beze změny.

V aplikaci V API
Organizace · Firma · Účetní období organization · company · period
Účetnictví / Daňová evidence method: accounting / tax_records
Doklad · Druh dokladu · Kniha · Číselná řada document · document_type · book · number_series
Koncept · Zařazený · Zaúčtovaný · Uzamčený · Stornovaný draft · registered · booked · locked · cancelled
Datum vystavení · účetního případu · DUZP · Datum DPH · Splatnost issue_date · accounting_date · taxable_supply_date · vat_date · due_date
Variabilní / konstantní / specifický symbol variable_symbol / constant_symbol / specific_symbol
Kód DPH · Vstupuje do DPH vat_code · vat_relevant
Partner · Účet · Položka daňové evidence · Dimenze partner · account · tax_category · dimension
Otevřená položka · Pohledávka / závazek · Zbývá uhradit open_item · receivable / payable · remaining
Bankovní výpis / pohyb · Zásilka · Vytěžení bank_statement / bank_movement · mail_item · extraction
Příloha / poznámka · Osobní token · Rozsah attachment / note · token · scope

Změny API

Historie změn se vede podle Keep a Changelog (Přidáno, Změněno, Zastaralé, Odstraněno, Opraveno, Bezpečnost); datum je den zveřejnění. Zatím nebylo nic vydáno – tato dokumentace popisuje navrhovanou podobu API.

Reference API

Každé volání s parametry, tělem požadavku, ukázkou v curl a JavaScriptu a ukázkou odpovědi. Seznamy se stránkují kurzorem, chyby mají jednotný formát (viz Chybové kódy).

Beta první etapaVerze 1 do zmrazení v1Připravujeme zápis a události v dalších etapách

Identita

Kdo volá a co token smí. První volání každé integrace.

Kdo jsem

Beta
GET/me

Vrátí uživatele, organizaci a rozsah tokenu (firmy, práva, platnost). Použijte jako první volání každé integrace a pro ověření, že token platí.

Rozsah tokenu: libovolný

Odpovědi

  • 200 Úspěch
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
curl -X GET "https://api.mytempo.cz/v1/me" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "user": {
    "id": "5b1c…",
    "name": "Jana Nováková"
  },
  "organization": {
    "id": "a3f0…",
    "name": "Účetní kancelář Vzor"
  },
  "token": {
    "name": "Zkouška API",
    "scopes": [
      "read"
    ],
    "companies": [
      "9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04"
    ],
    "expires_at": "2026-11-18"
  }
}

Firmy a období

Firmy, ke kterým má token přístup, jejich údaje a účetní období.

Seznam firem

Beta
GET/companies

Firmy, ke kterým má token přístup (průnik oprávnění uživatele a rozsahu tokenu).

Rozsah tokenu: read

Parametry dotazu

limitintegervýchozí 100

Počet záznamů na stránku, 1–500.

Příklad: 100

cursorstring

Hodnota next_cursor z předchozí odpovědi.

Příklad: eyJpZCI6Ijk…

Odpovědi

  • 200 Úspěch – objekt Company
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "id": "9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04",
      "name": "Vzor s.r.o.",
      "ico": "12345678",
      "dic": "CZ12345678",
      "organization_id": "a3f0b1c2-…",
      "method": "accounting",
      "vat_payer": true,
      "vat_period": "month",
      "currency": "CZK"
    }
  ],
  "next_cursor": "eyJpZCI6Ijk…"
}

Detail firmy

Beta
GET/companies/{company_id}

Údaje firmy včetně metody vedení, plátcovství DPH a měny účetnictví.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Odpovědi

  • 200 Úspěch – objekt Company
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 404 not_found – Záznam neexistuje, nebo k němu nemáte přístup.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "id": "9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04",
  "name": "Vzor s.r.o.",
  "ico": "12345678",
  "dic": "CZ12345678",
  "organization_id": "a3f0b1c2-…",
  "method": "accounting",
  "vat_payer": true,
  "vat_period": "month",
  "currency": "CZK"
}

Účetní období

Beta
GET/companies/{company_id}/periods

Období firmy seřazená od nejnovějšího se stavem (otevřené / uzavřené / uzamčené).

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Odpovědi

  • 200 Úspěch – objekt Period
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/periods" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "id": "p26…",
      "name": "2026",
      "date_from": "2026-01-01",
      "date_to": "2026-12-31",
      "status": "open"
    }
  ],
  "next_cursor": null
}

Číselníky

Kódy DPH, měny, způsoby platby, osnova, položky daňové evidence, dimenze a kurzy ČNB.

Kódy DPH

Beta
GET/companies/{company_id}/vat-codes

Kódy DPH firmy platné k datu, se sazbou a řádkem přiznání / oddílem KH.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Parametry dotazu

datedate

Platnost k datu; výchozí dnes.

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/vat-codes" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "code": "21",
      "name": "Tuzemsko 21 %",
      "rate": "21",
      "direction": "output",
      "vat_return_line": "1",
      "kh_section": "A.4/A.5"
    }
  ],
  "next_cursor": null
}

Měny

Beta
GET/companies/{company_id}/currencies

Měny používané ve firmě.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/currencies" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "code": "CZK",
      "name": "Česká koruna",
      "decimals": 2
    },
    {
      "code": "EUR",
      "name": "Euro",
      "decimals": 2
    }
  ],
  "next_cursor": null
}

Způsoby platby

Beta
GET/companies/{company_id}/payment-methods

Způsoby platby firmy.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/payment-methods" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "code": "PREVOD",
      "name": "Převodem",
      "active": true
    }
  ],
  "next_cursor": null
}

Účtová osnova

Beta
GET/companies/{company_id}/accounts

Účty období (jen firmy s účetnictvím). Účty se vždy zobrazují jako „číslo – název“.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Parametry dotazu

period_iduuid

Účetní období; bez zadání aktuální období podle dnešního data.

activebooleanvýchozí true

Jen aktivní účty.

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/accounts" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "number": "311000",
      "name": "Odběratelé",
      "kind": "receivables",
      "active": true
    }
  ],
  "next_cursor": null
}

Položky daňové evidence

Beta
GET/companies/{company_id}/tax-categories

Položky období (jen firmy s daňovou evidencí); technické položky se nevrací.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Parametry dotazu

period_iduuid

Účetní období; bez zadání aktuální období podle dnešního data.

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/tax-categories" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "code": "P01",
      "name": "Příjmy z prodeje služeb",
      "kind": "income"
    }
  ],
  "next_cursor": null
}

Dimenze

Beta
GET/companies/{company_id}/dimensions

Typy dimenzí (středisko, zakázka, vozidlo…) a jejich hodnoty.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/dimensions" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "type": "STR",
      "name": "Středisko",
      "values": [
        {
          "code": "01",
          "name": "Praha"
        }
      ]
    }
  ],
  "next_cursor": null
}

Kurzy ČNB

Beta
GET/exchange-rates

Kurzovní lístek ČNB k datu (platí poslední vyhlášený kurz).

Rozsah tokenu: read

Parametry dotazu

datedate

Datum; výchozí dnes.

Příklad: 2026-11-11

currencystring

Jen jedna měna (ISO 4217).

Příklad: EUR

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/exchange-rates" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "date": "2026-11-11",
  "rates": [
    {
      "currency": "EUR",
      "amount": 1,
      "rate": "24.315"
    }
  ]
}

Adresář

Partneři firmy – odběratelé a dodavatelé, jejich bankovní účty a údaje z ARES.

Seznam partnerů

Beta
GET/companies/{company_id}/partners

Partneři z Adresáře firmy. Hledání podle názvu, IČO nebo e-mailu.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Parametry dotazu

qstring

Hledaný text (název, IČO, e-mail).

Příklad: odběratel

icostring

Přesné IČO.

Příklad: 87654321

updated_sincedate-time

Jen záznamy změněné od zadaného času (pro pravidelnou synchronizaci).

Příklad: 2026-11-01T00:00:00+01:00

limitintegervýchozí 100

Počet záznamů na stránku, 1–500.

Příklad: 100

cursorstring

Hodnota next_cursor z předchozí odpovědi.

Příklad: eyJpZCI6Ijk…

Odpovědi

  • 200 Úspěch – objekt Partner
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/partners" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
      "kind": "company",
      "name": "Odběratel a.s.",
      "ico": "87654321",
      "dic": "CZ87654321",
      "address": {
        "street": "Hlavní 12",
        "city": "Brno",
        "zip": "60200",
        "country": "CZ"
      },
      "email": "fakturace@odberatel.example",
      "bank_accounts": [
        {
          "account_number": "123456789",
          "bank_code": "0100",
          "iban": "CZ65 0100 0000 0001 2345 6789",
          "currency": "CZK"
        }
      ],
      "tags": [
        "velkoodběr"
      ],
      "version": 3,
      "updated_at": "2026-10-20T09:14:00+02:00"
    }
  ],
  "next_cursor": "eyJpZCI6Ijk…"
}

Detail partnera

Beta
GET/companies/{company_id}/partners/{partner_id}

Partner včetně bankovních účtů a štítků. Odpověď nese ETag pro následnou úpravu.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

partner_iduuidpovinný

Identifikátor partnera.

Odpovědi

  • 200 Úspěch – objekt Partner
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 404 not_found – Záznam neexistuje, nebo k němu nemáte přístup.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/partners/…" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
  "kind": "company",
  "name": "Odběratel a.s.",
  "ico": "87654321",
  "dic": "CZ87654321",
  "address": {
    "street": "Hlavní 12",
    "city": "Brno",
    "zip": "60200",
    "country": "CZ"
  },
  "email": "fakturace@odberatel.example",
  "bank_accounts": [
    {
      "account_number": "123456789",
      "bank_code": "0100",
      "iban": "CZ65 0100 0000 0001 2345 6789",
      "currency": "CZK"
    }
  ],
  "tags": [
    "velkoodběr"
  ],
  "version": 3,
  "updated_at": "2026-10-20T09:14:00+02:00"
}

Založit partnera

Připravujeme
POST/companies/{company_id}/partners

Založí partnera. Když zadáte jen IČO a from_ares: true, údaje se doplní z ARES. Partner se stejným IČO vrátí 409 partner_exists s odkazem na existujícího.

Rozsah tokenu: partners:write

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Hlavičky

Idempotency-Keystringpovinný

Jedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.

Příklad: objednavka-2026-004512

Tělo požadavku application/json

kindenumpovinné

company nebo person.

namestring

Název (u from_ares nepovinný).

icostring

IČO.

from_aresboolean

Doplnit údaje z ARES.

addressAddress

Sídlo.

emailstring

E-mail.

bank_accountsarray

Bankovní účty.

Odpovědi

  • 201 Úspěch – objekt Partner
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 409 version_conflict / idempotency_conflict – Souběžná změna, opakovaný klíč s jiným obsahem, uzavřené období.
  • 422 validation_failed – Údaje neprošly kontrolou – podrobnosti v errors.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/partners" \
  -H "Authorization: Bearer $TEMPO_TOKEN" \
  -H "Idempotency-Key: objednavka-2026-004512" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "company",
    "ico": "87654321",
    "from_ares": true,
    "email": "fakturace@odberatel.example"
  }'
Odpověď 201
{
  "id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
  "kind": "company",
  "name": "Odběratel a.s.",
  "ico": "87654321",
  "dic": "CZ87654321",
  "address": {
    "street": "Hlavní 12",
    "city": "Brno",
    "zip": "60200",
    "country": "CZ"
  },
  "email": "fakturace@odberatel.example",
  "bank_accounts": [
    {
      "account_number": "123456789",
      "bank_code": "0100",
      "iban": "CZ65 0100 0000 0001 2345 6789",
      "currency": "CZK"
    }
  ],
  "tags": [
    "velkoodběr"
  ],
  "version": 3,
  "updated_at": "2026-10-20T09:14:00+02:00"
}

Upravit partnera

Připravujeme
PATCH/companies/{company_id}/partners/{partner_id}

Změní jen zaslaná pole. Vyžaduje If-Match; při souběžné změně vrátí 409 version_conflict.

Rozsah tokenu: partners:write

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

partner_iduuidpovinný

Identifikátor partnera.

Hlavičky

If-Matchstringpovinný

Hodnota ETag / version z posledního načtení záznamu.

Příklad: "7"

Tělo požadavku application/json

emailstring

E-mail.

addressAddress

Sídlo.

tagsarray of string

Štítky.

Odpovědi

  • 200 Úspěch – objekt Partner
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 404 not_found – Záznam neexistuje, nebo k němu nemáte přístup.
  • 409 version_conflict / idempotency_conflict – Souběžná změna, opakovaný klíč s jiným obsahem, uzavřené období.
  • 422 validation_failed – Údaje neprošly kontrolou – podrobnosti v errors.
curl -X PATCH "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/partners/…" \
  -H "Authorization: Bearer $TEMPO_TOKEN" \
  -H "If-Match: "7"" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "nova.fakturace@odberatel.example"
  }'
Odpověď 200
{
  "id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
  "kind": "company",
  "name": "Odběratel a.s.",
  "ico": "87654321",
  "dic": "CZ87654321",
  "address": {
    "street": "Hlavní 12",
    "city": "Brno",
    "zip": "60200",
    "country": "CZ"
  },
  "email": "fakturace@odberatel.example",
  "bank_accounts": [
    {
      "account_number": "123456789",
      "bank_code": "0100",
      "iban": "CZ65 0100 0000 0001 2345 6789",
      "currency": "CZK"
    }
  ],
  "tags": [
    "velkoodběr"
  ],
  "version": 4,
  "updated_at": "2026-10-20T09:14:00+02:00"
}

Údaje z ARES

Beta
GET/ares/{ico}

Načte subjekt z ARES (název, sídlo, DIČ, právní forma). Nic neukládá.

Rozsah tokenu: read

Parametry cesty

icostringpovinný

IČO (8 číslic).

Příklad: 87654321

Odpovědi

  • 200 Úspěch
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 404 not_found – Záznam neexistuje, nebo k němu nemáte přístup.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/ares/87654321" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "ico": "87654321",
  "name": "Odběratel a.s.",
  "dic": "CZ87654321",
  "legal_form": "121",
  "kind": "company",
  "address": {
    "street": "Hlavní 12",
    "city": "Brno",
    "zip": "60200",
    "country": "CZ"
  }
}

Doklady

Faktury, zálohové listy, interní a pokladní doklady. Přes API jen čtení a koncepty.

Seznam dokladů

Beta
GET/companies/{company_id}/documents

Doklady firmy napříč obdobími, seřazené od nejnovějšího. Seznam neobsahuje řádky – ty vrací detail.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Parametry dotazu

document_typestring

Druh dokladu, více hodnot čárkou.

Příklad: FV,ZFV

statusenum

draft, registered, booked, locked, cancelled; více čárkou.

bookstring

Kód knihy.

Příklad: FV

date_fromdate

Datum účetního případu od.

date_todate

Datum účetního případu do.

partner_iduuid

Partner.

variable_symbolstring

Variabilní symbol (přesná shoda).

qstring

Hledání v čísle, popisu a partnerovi.

updated_sincedate-time

Jen záznamy změněné od zadaného času (pro pravidelnou synchronizaci).

Příklad: 2026-11-01T00:00:00+01:00

limitintegervýchozí 100

Počet záznamů na stránku, 1–500.

Příklad: 100

cursorstring

Hodnota next_cursor z předchozí odpovědi.

Příklad: eyJpZCI6Ijk…

Odpovědi

  • 200 Úspěch – objekt Document
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
      "document_type": "FV",
      "status": "registered",
      "number": "FV2026-0142",
      "book": {
        "id": "b1…",
        "code": "FV",
        "name": "Vydané faktury"
      },
      "partner": {
        "id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
        "name": "Odběratel a.s.",
        "ico": "87654321"
      },
      "issue_date": "2026-10-17",
      "accounting_date": "2026-10-17",
      "taxable_supply_date": "2026-10-17",
      "due_date": "2026-10-31",
      "variable_symbol": "20260142",
      "currency": "CZK",
      "exchange_rate": null,
      "amount_base": "10000.00",
      "amount_vat": "2100.00",
      "amount_total": "12100.00",
      "remaining": "12100.00",
      "source": "app",
      "version": 5,
      "updated_at": "2026-10-17T10:02:11+02:00",
      "app_url": "https://app.mytempo.cz/doklady/e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b"
    }
  ],
  "next_cursor": "eyJpZCI6Ijk…"
}

Detail dokladu

Beta
GET/companies/{company_id}/documents/{document_id}

Hlavička, řádky, rekapitulace DPH a zaúčtování (účty jen ke čtení). Odpověď nese ETag.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

document_iduuidpovinný

Identifikátor dokladu.

Odpovědi

  • 200 Úspěch – objekt Document
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 404 not_found – Záznam neexistuje, nebo k němu nemáte přístup.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
  "document_type": "FV",
  "status": "registered",
  "number": "FV2026-0142",
  "book": {
    "id": "b1…",
    "code": "FV",
    "name": "Vydané faktury"
  },
  "partner": {
    "id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
    "name": "Odběratel a.s.",
    "ico": "87654321"
  },
  "issue_date": "2026-10-17",
  "accounting_date": "2026-10-17",
  "taxable_supply_date": "2026-10-17",
  "due_date": "2026-10-31",
  "variable_symbol": "20260142",
  "currency": "CZK",
  "exchange_rate": null,
  "amount_base": "10000.00",
  "amount_vat": "2100.00",
  "amount_total": "12100.00",
  "remaining": "12100.00",
  "source": "app",
  "version": 5,
  "updated_at": "2026-10-17T10:02:11+02:00",
  "app_url": "https://app.mytempo.cz/doklady/e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
  "lines": [
    {
      "id": "l1…",
      "description": "Vedení účetnictví 10/2026",
      "quantity": "1",
      "unit": "měs.",
      "unit_price": "10000.00",
      "vat_code": "21",
      "vat_rate": "21",
      "amount_base": "10000.00",
      "amount_vat": "2100.00",
      "account": "602100",
      "tax_category": null,
      "dimensions": {
        "STR": "01"
      }
    }
  ],
  "vat_summary": [
    {
      "vat_rate": "21",
      "base": "10000.00",
      "vat": "2100.00"
    }
  ]
}

Založit koncept dokladu

Připravujeme
POST/companies/{company_id}/documents

Založí koncept dokladu (FV, FP, ZFV, ZFP, ID, PO). Koncept nemá číslo, nikde se nepočítá a zařadí ho člověk v aplikaci. Platí stejné kontroly a práva ke knize jako v aplikaci; odpověď obsahuje odkaz na koncept.

Rozsah tokenu: documents:write

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Hlavičky

Idempotency-Keystringpovinný

Jedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.

Příklad: objednavka-2026-004512

Tělo požadavku application/json

document_typestringpovinné

FV, FP, ZFV, ZFP, ID nebo PO.

book_codestring

Kód knihy; bez zadání výchozí kniha druhu.

partner_iduuid

Partner z Adresáře (u FV / FP povinný při zařazení).

issue_datedate

Datum vystavení; výchozí dnes.

due_datedate

Splatnost; výchozí podle partnera / firmy.

taxable_supply_datedate

DUZP.

variable_symbolstring

VS; bez zadání se doplní z čísla při zařazení.

supplier_numberstring

Číslo dokladu dodavatele (FP, ZFP).

currencystring

Měna; výchozí měna firmy.

notestring

Poznámka k dokladu.

linesarraypovinné

Řádky: description, quantity, unit, unit_price, vat_code, dimensions.

Odpovědi

  • 201 Úspěch – objekt Document
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 409 version_conflict / idempotency_conflict – Souběžná změna, opakovaný klíč s jiným obsahem, uzavřené období.
  • 422 validation_failed – Údaje neprošly kontrolou – podrobnosti v errors.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents" \
  -H "Authorization: Bearer $TEMPO_TOKEN" \
  -H "Idempotency-Key: objednavka-2026-004512" \
  -H "Content-Type: application/json" \
  -d '{
    "document_type": "FV",
    "book_code": "FV",
    "partner_id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
    "issue_date": "2026-11-11",
    "due_date": "2026-11-25",
    "variable_symbol": "2026004512",
    "currency": "CZK",
    "note": "Objednávka e-shopu 004512",
    "lines": [
      {
        "description": "Konzultace",
        "quantity": "2",
        "unit": "hod",
        "unit_price": "1500.00",
        "vat_code": "21"
      }
    ]
  }'
Odpověď 201
{
  "id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
  "document_type": "FV",
  "status": "draft",
  "number": null,
  "amount_total": "3630.00",
  "source": "api",
  "version": 1,
  "app_url": "https://app.mytempo.cz/doklady/e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b"
}

Upravit koncept

Připravujeme
PATCH/companies/{company_id}/documents/{document_id}

Změní koncept, který vznikl přes API nebo je ještě nezařazený. Zařazený doklad vrátí 409 document_not_draft.

Rozsah tokenu: documents:write

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

document_iduuidpovinný

Identifikátor dokladu.

Hlavičky

If-Matchstringpovinný

Hodnota ETag / version z posledního načtení záznamu.

Příklad: "7"

Tělo požadavku application/json

due_datedate

Splatnost.

notestring

Poznámka.

linesarray

Řádky – nahradí všechny řádky.

Odpovědi

  • 200 Úspěch – objekt Document
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 404 not_found – Záznam neexistuje, nebo k němu nemáte přístup.
  • 409 version_conflict / idempotency_conflict – Souběžná změna, opakovaný klíč s jiným obsahem, uzavřené období.
  • 422 validation_failed – Údaje neprošly kontrolou – podrobnosti v errors.
curl -X PATCH "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…" \
  -H "Authorization: Bearer $TEMPO_TOKEN" \
  -H "If-Match: "7"" \
  -H "Content-Type: application/json" \
  -d '{
    "due_date": "2026-11-30"
  }'
Odpověď 200
{
  "id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
  "document_type": "FV",
  "status": "draft",
  "number": null,
  "amount_total": "3630.00",
  "source": "api",
  "version": 2,
  "app_url": "https://app.mytempo.cz/doklady/e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b"
}

PDF vydané faktury

Beta
GET/companies/{company_id}/documents/{document_id}/pdf

Tisk vydané faktury, zálohového listu nebo daňového dokladu k platbě ve formátu PDF (stejný jako v aplikaci).

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

document_iduuidpovinný

Identifikátor dokladu.

Odpovědi

  • 200 Úspěch
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 404 not_found – Záznam neexistuje, nebo k němu nemáte přístup.
  • 409 version_conflict / idempotency_conflict – Souběžná změna, opakovaný klíč s jiným obsahem, uzavřené období.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…/pdf" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
(binární soubor application/pdf)

Přílohy a poznámky

Soubory a poznámky u dokladů.

Přílohy dokladu

Beta
GET/companies/{company_id}/documents/{document_id}/attachments

Seznam příloh s krátkodobou adresou ke stažení (platí 5 minut).

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

document_iduuidpovinný

Doklad.

Odpovědi

  • 200 Úspěch
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 404 not_found – Záznam neexistuje, nebo k němu nemáte přístup.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…/attachments" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "id": "a1…",
      "file_name": "faktura.pdf",
      "mime_type": "application/pdf",
      "size": 84211,
      "download_url": "https://api.mytempo.cz/v1/files/…",
      "download_expires_at": "2026-11-11T10:05:00+01:00"
    }
  ]
}

Přidat přílohu

Připravujeme
POST/companies/{company_id}/documents/{document_id}/attachments

Nahraje soubor k dokladu (multipart/form-data, nejvýš 20 MB). Platí pravidla panelu dokladu (koncept / zařazený / zaúčtovaný).

Rozsah tokenu: documents:write

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

document_iduuidpovinný

Doklad.

Hlavičky

Idempotency-Keystringpovinný

Jedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.

Příklad: objednavka-2026-004512

Tělo požadavku multipart/form-data

filebinarypovinné

Soubor (PDF, ISDOC, obrázek…).

descriptionstring

Popis přílohy.

Odpovědi

  • 201 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 404 not_found – Záznam neexistuje, nebo k němu nemáte přístup.
  • 413 payload_too_large – Soubor je větší než 20 MB.
  • 422 validation_failed – Údaje neprošly kontrolou – podrobnosti v errors.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…/attachments" \
  -H "Authorization: Bearer $TEMPO_TOKEN" \
  -H "Idempotency-Key: objednavka-2026-004512" \
  -F "file=@soubor.pdf" \
  -F "description=…"
Odpověď 201
{
  "id": "a2…",
  "file_name": "objednavka.pdf",
  "size": 51200
}

Přidat poznámku

Připravujeme
POST/companies/{company_id}/documents/{document_id}/notes

Přidá poznámku do panelu dokladu.

Rozsah tokenu: documents:write

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

document_iduuidpovinný

Doklad.

Hlavičky

Idempotency-Keystringpovinný

Jedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.

Příklad: objednavka-2026-004512

Tělo požadavku application/json

textstringpovinné

Text poznámky (nejvýš 4 000 znaků).

Odpovědi

  • 201 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 404 not_found – Záznam neexistuje, nebo k němu nemáte přístup.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/documents/…/notes" \
  -H "Authorization: Bearer $TEMPO_TOKEN" \
  -H "Idempotency-Key: objednavka-2026-004512" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Zákazník žádá splatnost 30 dní."
  }'
Odpověď 201
{
  "id": "n1…",
  "text": "Zákazník žádá splatnost 30 dní.",
  "created_at": "2026-11-11T10:00:00+01:00"
}

Saldo a peníze

Neuhrazené pohledávky a závazky a zůstatky peněz napříč firmami.

Neuhrazené pohledávky a závazky

Beta
GET/companies/{company_id}/open-items

Otevřené položky salda – faktury a zálohové listy, které nejsou plně uhrazené, k datu.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Parametry dotazu

sideenumpovinný

receivable (pohledávky) nebo payable (závazky).

Příklad: receivable

overdueboolean

Jen po splatnosti.

as_ofdate

Stav k datu; výchozí dnes.

partner_iduuid

Jen jeden partner.

limitintegervýchozí 100

Počet záznamů na stránku, 1–500.

Příklad: 100

cursorstring

Hodnota next_cursor z předchozí odpovědi.

Příklad: eyJpZCI6Ijk…

Odpovědi

  • 200 Úspěch – objekt OpenItem
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/open-items?side=receivable" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "document_id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
      "document_type": "FV",
      "number": "FV2026-0142",
      "partner": {
        "id": "c0d4a7b2-1e3f-4a5b-8c9d-0e1f2a3b4c5d",
        "name": "Odběratel a.s."
      },
      "variable_symbol": "20260142",
      "due_date": "2026-10-31",
      "days_overdue": 11,
      "currency": "CZK",
      "amount": "12100.00",
      "remaining": "12100.00"
    }
  ],
  "next_cursor": null
}

Zůstatky peněz napříč firmami

Beta
GET/cash-balances

Zůstatky pokladen a bankovních účtů všech firem v rozsahu tokenu k datu a součet přepočtený na CZK kurzem ČNB.

Rozsah tokenu: read

Parametry dotazu

datedate

Datum; výchozí dnes.

company_iduuid

Jen vybrané firmy (parametr lze opakovat).

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/cash-balances" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "date": "2026-11-11",
  "total_czk": "1284530.20",
  "items": [
    {
      "company_id": "9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04",
      "company": "Vzor s.r.o.",
      "kind": "bank",
      "name": "Fio – běžný",
      "currency": "CZK",
      "balance": "842100.50",
      "balance_czk": "842100.50"
    }
  ]
}

Banka

Bankovní účty, výpisy, pohyby a import výpisu ze souboru.

Bankovní účty firmy

Beta
GET/companies/{company_id}/bank-accounts

Bankovní účty (knihy banky) firmy a stav napojení na banku.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/bank-accounts" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "id": "ba1…",
      "name": "Fio – běžný",
      "account_number": "2900123456/2010",
      "currency": "CZK",
      "connection": "fio_api",
      "last_statement_date": "2026-11-10"
    }
  ]
}

Bankovní výpisy

Beta
GET/companies/{company_id}/bank-statements

Výpisy s počátečním a konečným zůstatkem.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Parametry dotazu

bank_account_iduuid

Bankovní účet.

date_fromdate

Od data.

date_todate

Do data.

limitintegervýchozí 100

Počet záznamů na stránku, 1–500.

Příklad: 100

cursorstring

Hodnota next_cursor z předchozí odpovědi.

Příklad: eyJpZCI6Ijk…

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/bank-statements" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "id": "bs1…",
      "bank_account_id": "ba1…",
      "number": "2026/215",
      "date_from": "2026-11-10",
      "date_to": "2026-11-10",
      "opening_balance": "830000.00",
      "closing_balance": "842100.50",
      "movements": 4
    }
  ],
  "next_cursor": null
}

Pohyby na účtu

Beta
GET/companies/{company_id}/bank-movements

Pohyby bankovních účtů. Filtr matched=false vrátí pohyby, které ještě nejsou spárované.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Parametry dotazu

bank_account_iduuid

Bankovní účet.

matchedboolean

Jen spárované / nespárované.

date_fromdate

Od data.

date_todate

Do data.

limitintegervýchozí 100

Počet záznamů na stránku, 1–500.

Příklad: 100

cursorstring

Hodnota next_cursor z předchozí odpovědi.

Příklad: eyJpZCI6Ijk…

Odpovědi

  • 200 Úspěch – objekt BankMovement
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/bank-movements" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "id": "bm1…",
      "bank_account_id": "ba1…",
      "date": "2026-11-10",
      "amount": "12100.00",
      "currency": "CZK",
      "counter_account": "123456789/0100",
      "variable_symbol": "20260142",
      "message": "FV2026-0142",
      "matched": false,
      "document_id": null
    }
  ],
  "next_cursor": "eyJpZCI6Ijk…"
}

Import výpisu ze souboru

Připravujeme
POST/companies/{company_id}/bank-statements/import

Nahraje výpis ve formátu GPC (ABO) nebo camt.053 (XML). Překrývající se výpis TEMPO odmítne; párování dělá člověk v aplikaci.

Rozsah tokenu: bank:import

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Hlavičky

Idempotency-Keystringpovinný

Jedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.

Příklad: objednavka-2026-004512

Tělo požadavku multipart/form-data

bank_account_iduuidpovinné

Bankovní účet.

filebinarypovinné

Soubor výpisu (nejvýš 20 MB).

Odpovědi

  • 201 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 409 version_conflict / idempotency_conflict – Souběžná změna, opakovaný klíč s jiným obsahem, uzavřené období.
  • 413 payload_too_large – Soubor je větší než 20 MB.
  • 422 validation_failed – Údaje neprošly kontrolou – podrobnosti v errors.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/bank-statements/import" \
  -H "Authorization: Bearer $TEMPO_TOKEN" \
  -H "Idempotency-Key: objednavka-2026-004512" \
  -F "bank_account_id=…" \
  -F "file=@soubor.pdf"
Odpověď 201
{
  "batch_id": "ib1…",
  "statements": 1,
  "movements": 4,
  "duplicates_skipped": 0
}

Účetnictví a výkazy

Deník, obraty účtů, rozvaha, výsledovka a přehled DPH – jen čtení.

Účetní deník

Verze 1
GET/companies/{company_id}/journal

Řádky deníku za období (jen firmy s účetnictvím).

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Parametry dotazu

period_iduuidpovinný

Účetní období; bez zadání aktuální období podle dnešního data.

accountstring

Jen účet (i syntetika, např. 311).

date_fromdate

Od data.

date_todate

Do data.

limitintegervýchozí 100

Počet záznamů na stránku, 1–500.

Příklad: 100

cursorstring

Hodnota next_cursor z předchozí odpovědi.

Příklad: eyJpZCI6Ijk…

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/journal" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "date": "2026-10-17",
      "document_id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
      "document_number": "FV2026-0142",
      "description": "Vedení účetnictví 10/2026",
      "account_debit": "311000",
      "account_credit": "602100",
      "amount": "10000.00"
    }
  ],
  "next_cursor": "eyJpZCI6Ijk…"
}

Obraty a zůstatky účtů

Verze 1
GET/companies/{company_id}/account-balances

Počáteční stav, obraty MD / DAL a konečný zůstatek účtů za období (u daňové evidence položky).

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Parametry dotazu

period_iduuidpovinný

Účetní období; bez zadání aktuální období podle dnešního data.

date_todate

Zůstatky k datu uvnitř období.

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/account-balances" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "account": "221001",
      "name": "Fio – běžný",
      "opening": "512000.00",
      "debit": "1420000.00",
      "credit": "1089899.50",
      "closing": "842100.50"
    }
  ]
}

Rozvaha a výsledovka

Verze 1
GET/companies/{company_id}/reports/{report}

Výkaz podle šablony firmy. Těžká sestava – má vlastní nižší limit (30 za hodinu).

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

reportenumpovinný

balance-sheet (rozvaha) nebo profit-and-loss (výsledovka).

Parametry dotazu

period_iduuid

Účetní období; bez zadání aktuální období podle dnešního data.

date_todate

Výkaz k datu.

compare_period_iduuid

Srovnávací období (sloupec minulé období).

scopeenumvýchozí short

full (plný) nebo short (zkrácený).

Odpovědi

  • 200 Úspěch
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 404 not_found – Záznam neexistuje, nebo k němu nemáte přístup.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/reports/…" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "report": "profit-and-loss",
  "date_to": "2026-09-30",
  "rows": [
    {
      "line": "I.",
      "name": "Tržby z prodeje výrobků a služeb",
      "current": "1250000.00",
      "previous": "1104000.00"
    }
  ]
}

Přehled DPH a KH

Verze 1
GET/companies/{company_id}/vat-summary

Řádky přiznání k DPH a oddíly kontrolního hlášení za měsíc nebo čtvrtletí. Jen čtení – podání a XML jen v aplikaci.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Parametry dotazu

periodstringpovinný

Měsíc YYYY-MM nebo čtvrtletí YYYY-Qn.

Příklad: 2026-10

Odpovědi

  • 200 Úspěch
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 404 not_found – Záznam neexistuje, nebo k němu nemáte přístup.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/vat-summary?period=2026-10" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "period": "2026-10",
  "lines": [
    {
      "line": "1",
      "base": "250000.00",
      "vat": "52500.00"
    }
  ],
  "kh": [
    {
      "section": "A.4",
      "documents": 12
    }
  ]
}

Pošta

Přijatá a odeslaná pošta.

Seznam zásilek

Verze 1
GET/companies/{company_id}/mail-items

Přijatá a odeslaná pošta firmy. Osobní zásilky vidí jen přidělený uživatel, vlastník a správce.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Parametry dotazu

directionenum

incoming nebo outgoing.

statusstring

Stav (např. to_process, done).

limitintegervýchozí 100

Počet záznamů na stránku, 1–500.

Příklad: 100

cursorstring

Hodnota next_cursor z předchozí odpovědi.

Příklad: eyJpZCI6Ijk…

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/mail-items" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "id": "m1…",
      "number": "P2026/0451",
      "direction": "incoming",
      "received_date": "2026-11-10",
      "sender": "Dodavatel s.r.o.",
      "description": "Faktura 2026118",
      "status": "to_process",
      "assigned_to": "Jana Nováková"
    }
  ],
  "next_cursor": "eyJpZCI6Ijk…"
}

Založit přijatou zásilku

Připravujeme
POST/companies/{company_id}/mail-items

Zaeviduje přijatou zásilku se skenem (multipart/form-data). Číslo přidělí TEMPO z řady organizace.

Rozsah tokenu: mail:write

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Hlavičky

Idempotency-Keystringpovinný

Jedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.

Příklad: objednavka-2026-004512

Tělo požadavku multipart/form-data

received_datedatepovinné

Datum přijetí.

senderstringpovinné

Odesílatel.

descriptionstring

Popis.

creates_liabilityboolean

Vzniká závazek.

filebinary

Sken.

Odpovědi

  • 201 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 422 validation_failed – Údaje neprošly kontrolou – podrobnosti v errors.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/mail-items" \
  -H "Authorization: Bearer $TEMPO_TOKEN" \
  -H "Idempotency-Key: objednavka-2026-004512" \
  -F "received_date=…" \
  -F "sender=…" \
  -F "description=…" \
  -F "creates_liability=…" \
  -F "file=@soubor.pdf"
Odpověď 201
{
  "id": "m2…",
  "number": "P2026/0452",
  "status": "registered"
}

Vytěžování

Nahrání dokladu k vytěžení a stav úlohy.

Nahrát doklad k vytěžení

Připravujeme
POST/companies/{company_id}/extractions

Nahraje soubor k vytěžení. Výsledek je návrh konceptu – uloží ho člověk v aplikaci. Platí limity vytěžování firmy.

Rozsah tokenu: extraction:write

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

Hlavičky

Idempotency-Keystringpovinný

Jedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.

Příklad: objednavka-2026-004512

Tělo požadavku multipart/form-data

filebinarypovinné

PDF, ISDOC nebo obrázek (nejvýš 20 MB).

document_typestring

Očekávaný druh (FP, PO…).

Odpovědi

  • 202 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 413 payload_too_large – Soubor je větší než 20 MB.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X POST "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/extractions" \
  -H "Authorization: Bearer $TEMPO_TOKEN" \
  -H "Idempotency-Key: objednavka-2026-004512" \
  -F "file=@soubor.pdf" \
  -F "document_type=…"
Odpověď 202
{
  "id": "x1…",
  "status": "queued"
}

Stav vytěžení

Verze 1
GET/companies/{company_id}/extractions/{extraction_id}

Stav úlohy (queued, processing, done, failed) a odkaz na návrh v aplikaci.

Rozsah tokenu: read

Parametry cesty

company_iduuidpovinný

Identifikátor firmy (z GET /companies).

Příklad: 9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04

extraction_iduuidpovinný

Úloha vytěžení.

Odpovědi

  • 200 Úspěch
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 404 not_found – Záznam neexistuje, nebo k němu nemáte přístup.
curl -X GET "https://api.mytempo.cz/v1/companies/9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04/extractions/…" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "id": "x1…",
  "status": "done",
  "app_url": "https://app.mytempo.cz/vytezovani/x1…"
}

Události

Kanál změn a webhooky.

Kanál změn

Připravujeme
GET/events

Události od posledního kurzoru (vznik, zařazení, úhrada dokladu, nová pošta…). Uchovávají se 30 dní; nic se neztratí ani při výpadku příjemce.

Rozsah tokenu: read

Parametry dotazu

afterstring

Kurzor poslední zpracované události.

typesstring

Typy událostí čárkou.

Příklad: invoice.paid,mail.received

limitintegervýchozí 100

Počet záznamů na stránku, 1–500.

Příklad: 100

Odpovědi

  • 200 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 429 rate_limited – Překročený limit – počkejte podle Retry-After.
curl -X GET "https://api.mytempo.cz/v1/events" \
  -H "Authorization: Bearer $TEMPO_TOKEN"
Odpověď 200
{
  "data": [
    {
      "id": "ev_10452",
      "type": "invoice.paid",
      "occurred_at": "2026-11-11T09:12:00+01:00",
      "company_id": "9d42c1e0-5b7a-4f1e-9c3d-2a8b7e6f1d04",
      "object": {
        "kind": "document",
        "id": "e71a3b2c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
        "number": "FV2026-0142"
      }
    }
  ],
  "next_cursor": "ev_10452"
}

Založit webhook

Připravujeme
POST/webhooks

Zaregistruje adresu https://, na kterou TEMPO posílá vybrané události podepsané HMAC-SHA256 (Standard Webhooks). Tajemství se zobrazí jen jednou.

Rozsah tokenu: webhooks:manage

Hlavičky

Idempotency-Keystringpovinný

Jedinečný klíč požadavku (UUID, číslo objednávky). Opakování se stejným klíčem nic nezaloží podruhé.

Příklad: objednavka-2026-004512

Tělo požadavku application/json

urlstringpovinné

Adresa příjemce (jen https).

eventsarray of stringpovinné

Typy událostí.

company_idsarray of uuid

Jen vybrané firmy.

Odpovědi

  • 201 Úspěch
  • 400 bad_request – Chybný požadavek – formát, neznámý parametr.
  • 401 unauthorized – Chybí, vypršel nebo byl zrušen token.
  • 403 insufficient_scope / forbidden – Token nemá rozsah, nebo uživatel nemá oprávnění.
  • 422 validation_failed – Údaje neprošly kontrolou – podrobnosti v errors.
curl -X POST "https://api.mytempo.cz/v1/webhooks" \
  -H "Authorization: Bearer $TEMPO_TOKEN" \
  -H "Idempotency-Key: objednavka-2026-004512" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://hooks.example/tempo",
    "events": [
      "invoice.paid"
    ]
  }'
Odpověď 201
{
  "id": "wh1…",
  "url": "https://hooks.example/tempo",
  "events": [
    "invoice.paid"
  ],
  "secret": "whsec_… (jen jednou)"
}

Datové objekty

Pole objektů, které vrací reference. Částky jsou desetinná čísla v textu, data ve formátu YYYY-MM-DD.

Company

PoleTypPopis
iduuidIdentifikátor firmy.
namestringNázev firmy.
icostringIČO.
dicstring | nullDIČ.
organization_iduuidOrganizace, do které firma patří.
methodenumaccounting (účetnictví) nebo tax_records (daňová evidence).
vat_payerbooleanJe ke dnešnímu dni plátce DPH.
vat_periodenum | nullmonth nebo quarter – periodicita DPH.
currencystringMěna účetnictví (ISO 4217).

Period

PoleTypPopis
iduuidIdentifikátor období.
namestringNázev, např. 2026.
date_fromdatePrvní den období.
date_todatePoslední den období.
statusenumopen, closed (uzavřené) nebo locked (uzamčené).

Partner

PoleTypPopis
iduuidIdentifikátor partnera.
kindenumcompany (firma) nebo person (osoba).
namestringNázev nebo jméno a příjmení.
icostring | nullIČO.
dicstring | nullDIČ.
addressAddressSídlo: street, city, zip, country (ISO 3166-1 alpha-2).
emailstring | nullE-mail pro doklady.
bank_accountsarrayBankovní účty: account_number, bank_code, iban, bic, currency.
tagsarray of stringŠtítky.
versionintegerVerze záznamu pro If-Match.
updated_atdate-timeČas poslední změny.

Document

PoleTypPopis
iduuidIdentifikátor dokladu.
document_typestringDruh dokladu: FV, FP, ZFV, ZFP, DDPZ, DDPOZ, ID, PO, BA…
statusenumdraft · registered · booked · locked · cancelled.
numberstring | nullČíslo dokladu (koncept ho nemá – přidělí ho zařazení).
bookobjectKniha: id, code, name.
partnerobject | nullPartner: id, name, ico.
issue_datedateDatum vystavení.
accounting_datedateDatum účetního případu.
taxable_supply_datedate | nullDUZP.
due_datedate | nullSplatnost.
variable_symbolstring | nullVariabilní symbol.
currencystringMěna dokladu.
exchange_ratedecimal (text) | nullKurz (jen u cizí měny).
amount_basedecimal (text)Základ celkem.
amount_vatdecimal (text)DPH celkem.
amount_totaldecimal (text)Celkem k úhradě.
remainingdecimal (text) | nullZbývá uhradit (jen FV, FP, ZFV, ZFP).
linesarray of DocumentLineŘádky – jen v detailu dokladu.
vat_summaryarrayRekapitulace DPH po sazbách – jen v detailu.
sourceenumOdkud doklad vznikl: app, api, ai, extraction, recurring, bank_import.
versionintegerVerze pro If-Match.
updated_atdate-timeČas poslední změny.
app_urlstringOdkaz na doklad v aplikaci.

DocumentLine

PoleTypPopis
iduuidIdentifikátor řádku.
descriptionstringPopis.
quantitydecimal (text)Množství.
unitstring | nullJednotka.
unit_pricedecimal (text)Cena za jednotku.
vat_codestring | nullKód DPH z číselníku firmy.
vat_ratedecimal (text) | nullSazba DPH v %.
amount_basedecimal (text)Základ řádku.
amount_vatdecimal (text)DPH řádku.
accountstring | nullÚčet (u účetnictví) – jen čtení.
tax_categorystring | nullPoložka daňové evidence – jen čtení.
dimensionsobjectDimenze řádku (středisko, zakázka…) – kód typu → kód hodnoty.

OpenItem

PoleTypPopis
document_iduuidDoklad.
document_typestringDruh dokladu.
numberstringČíslo dokladu.
partnerobjectPartner: id, name.
variable_symbolstring | nullVariabilní symbol.
due_datedateSplatnost.
days_overdueintegerPočet dní po splatnosti (0 = ve splatnosti).
currencystringMěna.
amountdecimal (text)Částka dokladu.
remainingdecimal (text)Zbývá uhradit.

BankMovement

PoleTypPopis
iduuidIdentifikátor pohybu.
bank_account_iduuidBankovní účet firmy.
datedateDatum pohybu.
amountdecimal (text)Částka (příjem kladně, výdaj záporně).
currencystringMěna.
counter_accountstring | nullProtiúčet.
variable_symbolstring | nullVS.
messagestring | nullZpráva pro příjemce.
matchedbooleanJe pohyb spárovaný s dokladem.
document_iduuid | nullDoklad banky, který pohyb zaúčtoval.

Problem

PoleTypPopis
typestringOdkaz na popis chyby.
titlestringKrátký název chyby (česky).
statusintegerStav HTTP.
codestringStabilní kód chyby – podle něj se řiďte v programu.
detailstringVysvětlení pro člověka (česky).
errorsarray | nullChyby po polích: field, code, message.

Chybové kódy

Každá chyba má tvar application/problem+json s poli type, title, status, code, detail a případně errors.

StavKódVýznam
400bad_requestChybný požadavek – formát, neznámý parametr.
401unauthorizedChybí, vypršel nebo byl zrušen token.
403insufficient_scope / forbiddenToken nemá rozsah, nebo uživatel nemá oprávnění.
404not_foundZáznam neexistuje, nebo k němu nemáte přístup.
409version_conflict / idempotency_conflictSouběžná změna, opakovaný klíč s jiným obsahem, uzavřené období.
413payload_too_largeSoubor je větší než 20 MB.
422validation_failedÚdaje neprošly kontrolou – podrobnosti v errors.
429rate_limitedPřekročený limit – počkejte podle Retry-After.