Držíte data cizích firem. Podle toho to musí být postavené.
Účetní kancelář nespravuje jen svoje účetnictví — ručí za data desítek klientů. Proto si sami vybíráte, kde systém poběží, a proto řešíme bezpečnost ve dvou rovinách: kdo se dostane dovnitř a co se uvnitř může stát s účetnictvím.
| Čas | Uživatel | Akce | Kontext | Stav |
|---|---|---|---|---|
| 14:31 | j.svobodova | Zaúčtování FP 2026-0092 | Nováková s.r.o. | v pořádku |
| 14:12 | automat | Spárována platba 96 800 Kč | Nováková s.r.o. | v pořádku |
| 11:47 | m.dvorak | Storno FV 2026-0177 | Havlík Trade a.s. | storno |
| 09:03 | j.svobodova | Přihlášení · 2FA ověřeno | IP 89.***.***.14 | v pořádku |
| 08:58 | neznámý | Neúspěšné přihlášení (3×) | IP 45.***.***.201 | zablokováno |
Log neukládá hesla ani obsah tajemství; IP adresy jsou maskované.
Vy rozhodujete, kde data poběží
Tři rovnocenné cesty — a v žádné z nich neztrácíte funkce. Liší se jen tím, kdo se stará o infrastrukturu a kdo za ni odpovídá.
Cloud na Azure
Provoz na infrastruktuře Microsoft Azure v evropských regionech. Výkon, dostupnost i zálohování řešíme my, vy se staráte jen o účetnictví.
Odpovědnost: infrastrukturu, zálohy a aktualizace zajišťujeme my. Konkrétní region, rozsah záloh a zpracovatelskou smlouvu sjednáváme individuálně.
Docker u vás
Hotový multiplatformní image, instalace jedním kliknutím přes Portainer. Instalátor si vygeneruje hesla, připraví databázi a spustí migrace.
Odpovědnost: infrastruktura je vaše, aktualizace spouštíte jedním příkazem. Konfigurace i úložiště zůstávají při aktualizaci zachované.
Nativně na vašem serveru
IIS i Apache, PHP 8.5, MariaDB 11.8 a volitelně Redis. Bez povinného zahraničního backendu, bez odesílání telemetrie.
Odpovědnost: aplikace, databáze, dokumenty i zálohy jsou u vás. Umístění dat určujete vy — včetně toho, že server nemusí být připojený k internetu zvenčí.
Nasazení má popsaný postup, ne jen instalátor
Po instalaci vás provede tříkrokový průvodce: založení administrátora, založení dodavatele s dotažením údajů z ARES podle IČO a první bankovní účet. Volitelně nasype vzorková data, ať je co zkoušet. Průvodce je jednorázový — po založení prvního správce zmizí.
- CLI nástroje pro migrace databáze, setup, vzorková data i reset instalace
- Cron úlohy pro zálohování, párování plateb, odesílání upomínek a AI zpracování
- Kontrola, že úlohy skutečně běží — ne jen že jsou nastavené
- Zálohy volitelně šifrované AES‑256
- Denní kontrola dostupné verze s poznámkami k vydání
- Provozní FAQ v manuálu — lockout, reset hesla z CLI, chyby CSRF, e‑maily, banka, výkon
| Úloha | Poslední běh | Trvání | Stav |
|---|---|---|---|
| Import bankovních výpisů | dnes 6:00 | 4,2 s | v pořádku |
| Generování pravidelných faktur | dnes 6:05 | 1,8 s | v pořádku |
| Upomínky po splatnosti | dnes 7:00 | 0,9 s | v pořádku |
| Žádosti o chybějící doklady | dnes 7:05 | 0,6 s | v pořádku |
| Kontrola integrity deníku | dnes 3:00 | 12,4 s | v pořádku |
| Záloha databáze a dokumentů | dnes 2:00 | 48,1 s | v pořádku |
Kdo se dostane dovnitř
Přihlášení a hesla
- Dvoufaktorové ověření (TOTP) — správce ho může vynutit pro všechny uživatele instalace, ne jen doporučit
- Ověření e‑mailem jako druhý faktor pro uživatele bez authenticator aplikace
- Hesla — bcrypt s pepperem uloženým mimo databázi, minimálně 12 znaků, bez horního limitu
- Reset hesla odkazem s platností jedné hodiny
- Ochrana proti hádání hesel a omezení opakovaných pokusů
Role, oprávnění a síť
- Kolem devadesáti granulárních práv v devatenácti skupinách, nastavitelných zvlášť pro každou firmu
- IP allowlist pro IPv4, IPv6 i rozsahy — funguje správně i za reverse proxy
- Ochrana proti CSRF a kontrola původu požadavku
- Šifrování uložených integračních tajemství
- Podpis odchozích e‑mailů přes DKIM
Elektronické podpisy
Pro kanceláře, které podepisují doklady za klienty, je podstatné, v jaké úrovni. MyÚčto podepisuje PDF v úrovni PAdES‑B a PAdES‑T a odchozí e‑maily přes S/MIME.
- Certifikáty ve formátu P12 / PFX
- Volitelné časové razítko (TSA)
- Podpisové profily zvlášť pro dodavatele i pro jednotlivé uživatele
- Politika hesla k certifikátu a ověření podpisu
| Datum | Částka | VS | Protistrana | Párování |
|---|---|---|---|---|
| 12. 7. | 96 800,00 | 2026018 | Nováková s.r.o. | spárováno FV 2026-0179 |
| 12. 7. | 43 560,00 | 2026021 | Havlík Trade | spárováno FV 2026-0181 |
| 11. 7. | -12 400,00 | 884120 | Nováková s.r.o. | spárováno šablona: Hosting |
| 11. 7. | 18 150,00 | — | Bečvář stavby | k dořešení chybí VS |
| 10. 7. | -2 890,00 | — | Energie Morava a.s. | spárováno pravidlo: Energie |
Co se uvnitř může stát s účetnictvím
Tohle je vrstva, kterou běžné „zabezpečení aplikace“ neřeší, a přitom se na ni ptá auditor i finanční úřad: účetnictví musí být nezpochybnitelné.
- Deník je žurnál — zápisy se neztrácejí ani nepřepisují potichu
- Storno místo mazání, takže auditní stopa zůstává celá
- Doklad se zaúčtovaným zápisem nelze smazat — systém to odmítne a srozumitelně vysvětlí proč
- Uzavřené období nelze měnit; znovu ho otevřít smí výhradně administrátor
- Doklady z navázané agendy mají uzamčený popis — edituje se u zdroje, ne v deníku
- Kontrola integrity deníku běží automaticky a hlídá, že strana MD odpovídá straně D
- Log činnosti se zamaskováním citlivých hodnot — hesla ani tajemství se do něj nedostanou
- Archiv podání s otiskem SHA‑256 — doložitelné, co přesně odešlo
- Automatické zálohy databáze, dokladů i dokumentů, volitelně šifrované
- ✓Úplnost číselných řadVydané i přijaté doklady — bez mezer
- ✓Banka spárovánaVšech 68 transakcí přiřazeno
- !Saldokonto — 2 položky po splatnostiNováková s.r.o. 218 400 Kč · 47 dní
- !Audit kurzů ČNB1 doklad použil kurz mimo denní sazbu
- ✓Integrita deníkuMD = D u všech zápisů období
- •Inventarizace účtůDoložení zůstatků — čeká na uzávěrku
Kde přesně vede hranice mezi klienty
Kancelář vede desítky účetních jednotek v jedné instalaci. Následující rozdělení je proto dobré znát dřív, než systém nasadíte.
Oddělené pro každou firmu
- Klienti, doklady a účetnictví
- Měny a bankovní účty
- Číselné řady
- Šablony faktur i e‑mailů
- Režim účtování a účtový rozvrh
- Oprávnění uživatelů
Izolace je vynucená v API, sestavách, plánovaných úlohách i cestách k souborům — ne jen filtrem v rozhraní.
Otevřené pro integrace
Systém je navržený tak, aby v něm data nezůstala uvězněná — ať už je posíláte ven, nebo dovnitř.
- REST API — 531 cest, OpenAPI 3.1, tokeny s omezeným rozsahem
- Výběr firmy hlavičkou
X-Supplier-Id - Tři prohlížeče dokumentace — Swagger UI, Redoc i Scalar
- Exporty do Pohody, Money S3, Stereo a ISDOC
- Napojení na Make, Zapier, e‑shop, CRM i BI nástroje
Token není generální klíč
Jakmile systém otevřete integracím — e‑shopu, BI nástroji nebo AI asistentovi přes MCP — stává se osobní přístupový token nejcitlivějším údajem v systému. Proto se v MyÚčtu vydává s co nejmenším rozsahem, dá se přišpendlit k síti a každé jeho použití je vidět.
Rozsah: jen čtení, nebo čtení i zápis
Rozsah se volí při vydání tokenu a později se nemění — potřebujete‑li jiný, vydáte nový.
- Čtení — projdou jen dotazy typu GET. Token nic nezaloží, nezmění ani nesmaže. Výchozí volba při zakládání
- Čtení i zápis — povolí i zápisové operace; pokus o zápis s tokenem pro čtení skončí chybou
403 insufficient_scope - Účetnictví, daně a sestavy jsou jen ke čtení vždy — i s tokenem pro zápis. Zaúčtování, uzávěrka a podání na EPO jdou pouze z webového rozhraní
- Token se nedostane mimo veřejné API — správa tokenů, přihlašování, změna hesla ani podpisové certifikáty pro něj neexistují
Token také nemůže vydat další token. Nové tokeny se zakládají jen z přihlášené relace, po ověření heslem a případně druhým faktorem.
Omezení na IP adresy
Ke každému tokenu lze připsat seznam adres, ze kterých smí být použit. Odjinud neprojde, i kdyby byl platný.
- Jednotlivé adresy i celé rozsahy zápisem CIDR —
203.0.113.7stejně jako203.0.113.0/24 - IPv4 i IPv6, u každého pravidla vlastní poznámka, k čemu patří
- Nepovinné — prázdný seznam znamená bez omezení. Pro token vydaný na notebook účetní ho ale doporučujeme vždy
- Pokus odjinud skončí chybou
403 token_ip_forbidden— a zapíše se do logu, takže o zneužitém tokenu víte
Token se zobrazí jednou při vydání; v databázi z něj zůstane jen otisk, ze kterého ho nelze zpětně složit. Má nastavenou platnost, jde kdykoliv zneplatnit a u každého je vidět, kdy a odkud byl naposledy použit.
Limit volání
Integrace, která se zacyklí, nesmí položit instanci ostatním klientům. Každý token má proto vlastní strop 600 volání za minutu — počítá se zvlášť pro každý token, takže se dvě integrace navzájem neomezují.
- Po překročení vrací API
429spolu s hlavičkouRetry‑After, takže slušně napsaný klient sám počká - V každé odpovědi jsou hlavičky Limit, Remaining a Reset — integrace tak vidí, kolik jí zbývá, ještě než na limit narazí
- MCP server se navíc brzdí sám na straně klienta, aby se ke stropu vůbec nedostal
Log volání a audit
Každé volání přes token se zapisuje — včetně těch odmítnutých. Log je tak použitelný nejen pro ladění integrace, ale i jako důkaz, že se něco nestalo.
- Co se zaznamenává — čas s přesností na milisekundy, token, uživatel, firma, IP adresa, metoda, cesta, návratový kód, doba zpracování a kód chyby
- U volání z AI asistenta i název nástroje a verze klienta — v logu je tedy vidět
issue_invoice, ne jen anonymní POST - Odmítnutá volání taky — chybějící rozsah, zákaz zápisu do účetnictví, cizí IP i překročený limit, každé s vlastním kódem
- Filtrování podle tokenu, metody, cesty, zdroje (jen MCP) a přepínač „jen chyby“
- Obsah dokladů se neukládá — log ví, že se faktura vystavila, ne co v ní bylo
- Log nepřečte token, jen přihlášený člověk — integrace si tedy nemůže zamést vlastní stopu
Tenhle log je provozní a drží se 90 dní. Auditní stopa účetnictví je něco jiného — žurnál účetních zápisů podle § 33a se neuklízí vůbec a popisuje ho sekce výše.
| Čas | Klient | Nástroj | Cesta | Kód | Stav |
|---|---|---|---|---|---|
| 14:31:08 | Claude | send_invoice | POST /invoices/187/send | 200 | v pořádku |
| 14:31:02 | Claude | issue_invoice | POST /invoices/187/issue | 200 | v pořádku |
| 14:30:55 | Claude | add_work_report_entry | POST /work-reports/187 | 201 | v pořádku |
| 14:30:49 | Claude | create_invoice | POST /invoices | 201 | v pořádku |
| 11:12:40 | Codex CLI | trial_balance | GET /accounting/balance | 200 | v pořádku |
| 09:47:16 | Codex CLI | post_journal_entry | POST /accounting/journal | 403 | zamítnuto |
Poslední řádek je pokus zaúčtovat přes API. Vrátil 403 — zaúčtování přes token nejde bez ohledu na to, kdo o něj požádal.
Proč je to na téhle stránce
Tokeny jsou dnes hlavní cesta, kterou se k účetním datům dostane něco jiného než člověk v prohlížeči — e‑shop, automatizace nebo AI asistent přes MCP server. Bezpečnost systému se proto neposuzuje jen podle přihlašování, ale hlavně podle toho, co token nesmí a co po něm zůstane v logu.
Probereme to s vaším IT
Na on‑premise nasazení nabízíme technickou konzultaci — projdeme požadavky na server, zálohování, přístupy i napojení na vaše stávající nástroje. Bez závazku.