Banka odmítla hromadný příkaz pain.001: co zkontrolovat
Banka většinou napíše jen „soubor se nepodařilo zpracovat“, bez detailu proč. Osm věcí níže pokrývá naprostou většinu odmítnutí a každou z nich zvládnete zkontrolovat sami, v obyčejném textovém editoru, bez znalosti programování. Jde o pravidla schématu SEPA a normy ISO 20022, která platí bez ohledu na to, u které banky máte účet.
Soubor pain.001 je XML, které váš účetní software (Pohoda, Money S3, vlastní export z ERP) vygeneruje z hromadného příkazu k úhradě. Banka ho před zpracováním validuje podle normy ISO 20022 a pravidel schématu SEPA, které vydává European Payments Council (EPC). Když soubor těmto pravidlům neodpovídá, banka ho odmítne, obvykle bez řádku, na kterém je chyba.
Body níže jsou seřazené podle toho, jak často se s nimi setkáváme. Otevřete soubor v obyčejném textovém editoru (Poznámkový blok, VS Code, Notepad++) a projděte je popořadě. Excel ani Word na to nepoužívejte, oba dokážou XML při uložení tiše pozměnit.
Osm nejčastějších příčin
1. Počet a součet plateb v hlavičce nesedí s obsahem
Hlavička souboru (element GrpHdr) obsahuje
NbOfTxs, tedy kolik plateb soubor obsahuje, a
CtrlSum, tedy součet všech částek. Obě hodnoty musí přesně
odpovídat skutečnému obsahu souboru. Nesoulad vznikne nejčastěji tak,
že někdo v XML ručně smaže nebo přidá jednu platbu a zapomene
přepočítat hlavičku.
Jak ověřit: v editoru přes Ctrl+F vyhledejte
NbOfTxs a přes „najít vše“ spočítejte, kolikrát se v
souboru vyskytuje <CdtTrfTxInf> (to je jedna
platba). Čísla se musí rovnat. Součet částek v InstdAmt
si přepište do tabulky a sečtěte, výsledek porovnejte s
CtrlSum.
2. Datum splatnosti je v minulosti nebo příliš daleko dopředu
Pole ReqdExctnDt je povinné a musí mít formát
RRRR-MM-DD. Zpětné datum banky obecně neakceptují. Jak daleko dopředu
lze zadat, schéma SEPA jednotně nestanovuje, každá banka si horní
hranici určuje sama ve svých obchodních podmínkách. Jako ilustraci, ne
jako pravidlo platné v Česku: slovenská Tatra banka má ve své vlastní
dokumentaci uvedeno maximálně 31 dní dopředu.
Jak ověřit: najděte ReqdExctnDt, zkontrolujte
formát a porovnejte s dnešním datem. Pokud je v mezích a banka přesto
odmítá, ověřte si horní limit přímo u své banky, protože tady se
banky mezi sebou liší.
3. Metoda platby není TRF
Element PmtInf/PmtMtd musí mít pro SEPA úhradu vždy
hodnotu TRF. Je to pevná hodnota daná schématem, ne
volitelný parametr.
Jak ověřit: najděte všechny výskyty <PmtMtd>
a zkontrolujte, že mezi značkami je přesně „TRF“, velkými písmeny, bez
mezery navíc.
4. Úroveň služby (SvcLvl) není SEPA
Element PmtTpInf/SvcLvl/Cd musí obsahovat hodnotu
SEPA. Bez ní banka neví, že jde o platbu v rámci schématu
SEPA, a může ji zpracovat jinak nebo ji odmítnout.
Jak ověřit: vyhledejte <SvcLvl> a uvnitř
<Cd>SEPA</Cd>. Pokud tam chybí celý blok
SvcLvl, je to stejná chyba jako špatná hodnota.
5. Nositel poplatků (ChrgBr) není SLEV
Element ChrgBr musí být SLEV, což
znamená, že každá strana platí poplatky své bance. Je to jediná
hodnota, kterou schéma SEPA pro úhrady připouští, jiné volby (třeba
„poplatky platí odesílatel“) do SEPA XML nepatří.
Jak ověřit: najděte <ChrgBr> a hodnotu
uvnitř. Pokud element chybí úplně, některé banky si SLEV doplní samy,
spoléhat se na to ale není bezpečné, doplňte ho radši rovnou v
účetním softwaru.
6. IBAN neprojde kontrolním součtem MOD-97
Poslední dvě číslice na začátku každého IBAN jsou kontrolní číslice. Spočítají se algoritmem MOD-97 ze zbytku čísla účtu. Když se IBAN přepisuje ručně z papíru nebo z jiného formátu, snadno se v něm překlepne jedna číslice, a takový IBAN kontrolní součet nesplní. Toto je přesně ta kontrola, kterou dělá i náš vlastní nástroj SEPA pain.001 Doctor, viz zdroje níže.
Jak ověřit: ručně počítat MOD-97 v textovém editoru nemá smysl, použijte libovolnou volně dostupnou IBAN kalkulačku nebo validátor. Rychlejší je ale prostě znovu zkontrolovat přepis čísla účtu proti originálnímu dokladu, číslice po číslici.
7. Jmenný prostor (xmlns) neodpovídá
Kořenový element <Document> musí mít nastavený
atribut xmlns s přesnou hodnotou verze pain.001, kterou
vaše banka pro import hromadných příkazů podporuje, nejběžněji
urn:iso:std:iso:20022:tech:xsd:pain.001.001.03. Norma
ISO 20022 existuje ve více verzích a ne každá banka je zatím
připravená přijímat všechny, proto se jmenný prostor musí shodovat s
tím, co banka očekává.
Jak ověřit: hned na začátku souboru najděte
<Document xmlns= a přepište si hodnotu. Pokud si
nejste jistí, kterou verzi vaše banka přijímá, zeptejte se přímo
technické podpory banky, veřejně dostupný seznam napříč všemi bankami
neexistuje.
8. Znaky mimo znakovou sadu SEPA
Pravidla EPC pro SEPA úhrady povolují jen omezenou znakovou sadu:
písmena a-z, A-Z bez diakritiky, číslice 0-9 a znaky
/ - ? : ( ) . , ' + a mezeru. Čeština běžně používá
diakritiku (á, č, ď, é, ě, í, ň, ó, ř, š, ť, ú, ů, ý, ž), která do
této sady nepatří. Co banka s diakritikou v souboru přesně udělá, se
liší banku od banky a obecně to nemáme ověřené. Podle dokumentace
slovenské ČSOB tato banka soubor s diakritikou do importu vůbec
nepřijme, tady jde ale jen o příklad chování jedné konkrétní slovenské
banky, ne o obecné pravidlo pro Česko.
Jak ověřit: v editoru projděte jména plátce, příjemců a
poznámky k platbě (Ustrd) a hledejte diakritiku. Pokud ji
tam najdete a banka soubor odmítá, zkuste export bez diakritiky přímo
z účetního softwaru, většina z nich to jako volbu nabízí.
Když chyba pořád není jasná
Pokud jste prošli všech osm bodů a banka soubor stále odmítá, pravidla se dál liší podle konkrétní banky: limit počtu transakcí v jednom bloku, povinnost uvádět BIC banky příjemce, přesný formát variabilního symbolu. Tahle vrstva není jednotná napříč Evropou a bez znalosti konkrétní banky ji neověříte. Nejrychlejší cesta je poslat bance přesné znění chybové hlášky a zeptat se, které pole jí vadí.
Tento text pokrývá jen formátovou stránku souboru. Neřeší účetní ani daňové otázky spojené s hromadnou platbou a není to právní ani účetní poradenství. Čistý formát navíc nezaručuje, že banka platbu přijme, protože si může nastavit vlastní dodatečné podmínky a ty kdykoliv změnit.
Co si z toho odnést
Většina odmítnutí pain.001 padá na pár stejných místech: hlavička nesedí s obsahem, datum je špatně, nebo je v souboru diakritika. Všechny se dají zkontrolovat pouhým okem v textovém editoru dřív, než soubor pošlete bance podruhé.
Bezplatná automatická kontrola podle těchto i dalších pravidel je na SEPA pain.001 Doctor. Základní kontrolu (přesně body výše) provede na jakémkoli pain.001 souboru bez ohledu na banku. Dodatečné, přísnější kontroly v nástroji jsou navázané na čtyři konkrétní slovenské banky a pro českou banku se nepoužijí.
Zdroje a ověření, 6. září 2026. Obecná pravidla schématu SEPA (PmtMtd=TRF, SvcLvl/Cd=SEPA, ChrgBr=SLEV, povolená znaková sada, EUR jako jediná měna) vycházejí z pravidel European Payments Council, SEPA Credit Transfer Rulebook a struktury zprávy ISO 20022 pain.001.001.03. Kontrola kontrolního součtu IBAN metodou MOD-97 a příklad limitu 31 dní dopředu u ReqdExctnDt pocházejí z technické dokumentace Tatra banky, slovenské banky, uvedené výslovně jen jako ilustrační příklad, ne jako pravidlo platné v Česku. Chování ČSOB Slovensko k diakritice vychází z dokumentace ČSOB BusinessBanking Lite a SEPA, rovněž slovenský zdroj uvedený jen jako příklad. Limity pro konkrétní české banky (počet transakcí v dávce, povinnost BIC, maximální datum dopředu) jsme neověřovali a v textu je proto neuvádíme jako obecné pravidlo. Pokud se některý zdroj mezitím změnil, napište nám a opravíme to.