Otázky

Pain001 – časté dotazy pro treasury, provoz a audit

Přímé odpovědi pro treasury, platební provoz, inženýry a auditory, formulované tak, jak se lidé skutečně ptají.

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í#

pain.001 je zpráva ISO 20022, kterou klient posílá své bance, aby zadal úhrady. Je to 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.

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.

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.

Swift plánoval přestat v listopadu 2026 přijímat v přeshraničních platbách CBPR+ zcela nestrukturované poštovní adresy. V srpnu 2026 toto datum odložil a nové oznámí nejpozději v prosinci 2026, pravidlo se ale nemění: adresy musí být strukturované nebo hybridní, se samostatnými prvky jako město (<TwnNm>) a země (<Ctry>) 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.

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#

Č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.

Ano. Použijte 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.

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 <name> --explain uvidíte každé pravidlo, které prošlo či selhalo.

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, takže se poškození odhalí při načtení, nikoli až v bance.

--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#

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.

Částky jsou při generování i validaci schématu od začátku do konce decimal.Decimal. Načítají se jako přesná desetinná čísla, sčítají se jako přesná desetinná čísla a vypisují se 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.

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.

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í.

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#

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.

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í.

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.