Přímé odpovědi pro treasury, platební provoz, inženýry a auditory. Otázky jsou formulovány tak, jak je lidé skutečně kladou. Podrobnější technické informace najdete v technické referenci.
Pro vedení treasury a financí#
Co je pain.001, v jednom odstavci?
pain.001 je zpráva ISO 20022, kterou klient posílá své bance, aby zadal úhrady — XML nástupce formátů, jako je SWIFT MT101 nebo tuzemské textové soubory. Vaše banka ji před přijetím ověří proti schématu a pravidlům schématu. Pain001 (software) tyto soubory vytvoří z dat, která už máte, a doloží jejich platnost dříve, než je odešlete.
Jaký je rozdíl mezi pain.001 a pain.008?
Směr toku peněz. pain.001 zadává úhrady — peníze posíláte ven. pain.008 zadává inkasa — vybíráte peníze, na které máte na základě mandátu nárok. Pain001 generuje obojí: deset verzí pain.001 (.001.03 až .001.12) a pain.008.001.02.
Stále posíláme soubory MT101. Jak naléhavá je migrace?
Naléhavá. SWIFT v listopadu 2025 ukončil zprávy MT kategorií 1, 2 a 9 pro přeshraniční mezibankovní platební příkazy; firemní kanály, které MT stále přijímají, tak činí podle uvážení každé banky a na vypůjčený čas. Loader MT101 převede stávající toky MT101 na ověřené pain.001, aniž byste cokoli přepisovali.
Co pro nás znamená listopadový termín roku 2026 pro strukturované adresy?
Od konce listopadu 2026 se v přeshraničních platbách CBPR+ již nepřijímají zcela nestrukturované poštovní adresy; adresy musí být strukturované nebo hybridní — samostatné prvky jako město () a země () namísto volných řádků textu. Pokud jsou ve vašich kmenových datech adresy uloženy jako souvislý text, práce čeká na vašich datech, nikoli na bankovním spojení. Začněte tam. Podrobný harmonogram popisuje přehled pro rok 2026.
Kolik Pain001 stojí?
Nic. Jádro je dvojlicencované pod Apache-2.0 / MIT; doprovodné balíčky pod Apache-2.0. Komerční užití, úpravy i další šíření jsou povoleny. Pro srovnání měřítka: samotné překladové SDK od SWIFT je v ceníku za €10,000–30,000 ročně.
Pro platební provoz#
Proč banky odmítají platební soubory?
Čtyři opakující se příčiny: porušení schématu (špatný prvek, špatná verze, špatný jmenný prostor), chybné identifikátory (neplatný kontrolní součet IBAN, vadné BIC), nesedící kontrolní součty (NbOfTxs / CtrlSum neodpovídající transakcím) a znaky mimo latinskou sadu ISO 20022. Pain001 všechny čtyři ověří dříve, než soubor vůbec vznikne: validace JSON Schema u každého záznamu, kontrola IBAN algoritmem mod-97 a BIC podle ISO 9362, přepočtené kontrolní součty, transliterace znakové sady a závěrečná validace vykresleného XML proti XSD.
Můžeme soubor ověřit, aniž bychom cokoli generovali?
Ano — pain001 --dry-run (nebo podpříkaz validate, případně POST /api/v1/validate). Návratový kód 0 znamená platný soubor; 1 znamená, že validace selhala s chybami na úrovni polí. Zapojte to do CI nebo do kontrolního seznamu před odesláním.
Která pravidla SEPA jsou pokryta?
Vestavěná jsou pravidla pěti schémat: SEPA Credit Transfer (sepa-sct), SEPA Instant (sepa-inst), SEPA Direct Debit Core (sepa-sdd), SEPA B2B (sepa-b2b) a přeshraniční úhrada (xborder-ct). Pomocí --scheme uvidíte každé pravidlo, které prošlo či selhalo.
Naše data jsou v Excelu. V čem je háček?
Excel tiše převádí řetězce podobné IBAN na čísla. Loader pro Excel čte .xlsx/.xlsm přímo a tvrdě se zastaví, pokud sloupce s IBAN obsahují číselné buňky — poškození se odhalí při načtení, nikoli až v bance.
Jak si poradí s dávkou o 500,000 řádcích?
--streaming zpracovává vstup po částech s omezenou spotřebou paměti (výchozí 1,000 transakcí) a každou z nich zapíše jako samostatný soubor XML se správně přepočtenými kontrolními součty. Ze stejného důvodu nabízí REST API POST /api/v1/generate/async s dotazováním na stav úlohy.
Pro inženýry a architekty#
Jak jej integrujeme — jako knihovnu, CLI, nebo API?
Všechna tři rozhraní jsou plnohodnotná: typované Python API, CLI s návratovými kódy vstřícnými k CI a mikroslužba na FastAPI (pain001 serve) s endpointy pro synchronní běh, asynchronní úlohy, kontrolu stavu a metriky pro Prometheus. Pod nimi běží tatáž validační pipeline, takže se výsledky mezi rozhraními nikdy nerozejdou.
Je generování XML skutečně odolné vůči zaokrouhlování s plovoucí řádovou čárkou?
Částky jsou při generování i validaci schématu od začátku do konce decimal.Decimal — načtené jako přesná desetinná čísla, sečtené jako přesná desetinná čísla, vypsané bez reprezentace s plovoucí řádovou čárkou. Kontrolní součty se přepočítávají z ověřených záznamů, nikdy se nepřebírají ze vstupu bez kontroly.
Jak je to s bezpečností?
Veškeré parsování XML prochází přes defusedxml (blokuje útoky XXE i expanzi entit); ve stromu závislostí není žádné lxml. Vstupy procházejí validátorem proti průchodu adresářovou cestou. Image pro Docker běží pod jiným účtem než root. Pro vydání jádra se generuje SBOM ve formátu CycloneDX a vyhledávání pluginů třetích stran lze zcela vypnout pomocí PAIN001_DISABLE_PLUGINS=1.
Jak je vynucována kvalita?
100% pokrytí řádků a větví jako tvrdá podmínka v CI pro jádro (ověřitelně: 3,828 řádků, 926 větví na 100%), přísné mypy, 100% pokrytí dokumentačními řetězci, bezpečnostní kontrola nástroji Bandit a pip-audit a skenování CodeQL. Doprovodné balíčky dodržují tutéž disciplínu 100% pokrytí.
Můžeme jej rozšířit o vlastní formát?
Ano — jsou k dispozici čtyři skupiny vstupních bodů pro pluginy (pain001.loaders, pain001.validators, pain001.schemes, pain001.writers). Loader pro Excel je sám pluginem využívajícím veřejný protokol, takže slouží zároveň jako referenční implementace.
Pro auditory a compliance#
Můžeme reprodukovat soubor vygenerovaný v minulém čtvrtletí?
Ano. Zafixujte verzi balíčku, přehrajte tentýž vstup a výstup bude deterministický. Protože je celý řetězec nástrojů otevřený, sahá auditní stopa až do samotné cesty kódem — nejen k prohlášení dodavatele.
Opouštějí platební data naše prostředí?
Ne. Každá součást — CLI, knihovna, REST API, server MCP i LSP — běží lokálně. Není zde žádná telemetrie, žádné volání do SaaS, žádná externí ověřovací služba. Server MCP komunikuje výhradně přes stdio a všech jeho 17 nástrojů je označeno jako pouze pro čtení a idempotentní.
Kdo Pain001 udržuje?
Sebastien Rousseau, vedoucí fintechový inženýr působící v Londýně, spolu s přispěvateli z komunity. Vývoj probíhá veřejně na GitHubu, vydání se publikují na PyPI a seznam změn je verzován s každým vydáním.