Răspunsuri directe pentru trezorieri, operațiuni de plăți, ingineri și auditori. Întrebările sunt formulate așa cum le pun oamenii în realitate. Pentru detalii tehnice suplimentare, consultați Referința tehnică.
Pentru conducerea de trezorerie și finanțe#
Ce este pain.001, într-un singur paragraf?
pain.001 este mesajul ISO 20022 pe care un client îl trimite băncii sale pentru a iniția transferuri credit — succesorul XML al unor formate precum SWIFT MT101 și fișierele plate naționale. Banca dumneavoastră îl validează față de o schemă și de un regulament de schemă înainte de a-l accepta. Pain001 (programul) produce aceste fișiere din datele pe care le aveți deja și dovedește că sunt valide înainte să le transmiteți.
Care este diferența dintre pain.001 și pain.008?
Sensul fluxului de bani. pain.001 inițiază transferuri credit — trimiteți bani în afară. pain.008 inițiază debitări directe — încasați sume care vi se cuvin în baza unui mandat. Pain001 le generează pe amândouă: zece versiuni de pain.001 (de la .001.03 la .001.12) și pain.008.001.02.
Încă trimitem fișiere MT101. Cât de urgentă este migrarea?
Urgentă. SWIFT a retras mesajele MT din categoriile 1, 2 și 9 pentru instrucțiunile de plată interbancare transfrontaliere în noiembrie 2025; canalele corporative care încă acceptă MT o fac la discreția fiecărei bănci și pe timp împrumutat. Loaderul MT101 convertește fluxurile MT101 existente în pain.001 validat, fără reintroducerea vreunei date.
Ce înseamnă pentru noi termenul din noiembrie 2026 privind adresele structurate?
De la sfârșitul lunii noiembrie 2026, adresele poștale complet nestructurate nu mai sunt acceptate în plățile transfrontaliere CBPR+; adresele trebuie să fie structurate sau hibride — elemente distincte precum localitatea () și țara (), în locul liniilor de text liber. Dacă datele dumneavoastră de referință păstrează adresele ca blocuri de text, efortul este în date, nu în conexiunea cu banca. Începeți de acolo. Analiza pentru 2026 prezintă calendarul în detaliu.
Cât costă Pain001?
Nimic. Nucleul are licențiere duală Apache-2.0 / MIT, iar pachetele însoțitoare sunt Apache-2.0. Utilizarea comercială, modificarea și redistribuirea sunt toate permise. Ca reper de scară, doar SDK-ul de traducere al SWIFT este listat la €10,000–30,000 pe an.
Pentru operațiunile de plăți#
De ce resping băncile fișierele de plată?
Patru cauze recurente: încălcări de schemă (element greșit, versiune greșită, spațiu de nume greșit), identificatori invalizi (sume de control IBAN eșuate, coduri BIC malformate), totaluri de control eronate (NbOfTxs / CtrlSum care nu corespund tranzacțiilor) și caractere din afara setului latin ISO 20022. Pain001 le verifică pe toate patru înainte ca fișierul să existe: validare JSON Schema pentru fiecare înregistrare, verificări IBAN mod-97 și BIC ISO 9362, totaluri de control recalculate, transliterarea setului de caractere și validarea XSD finală a XML-ului generat.
Putem valida un fișier fără a genera nimic?
Da — pain001 --dry-run (sau subcomanda validate, ori POST /api/v1/validate). Codul de ieșire 0 înseamnă că fișierul este valid; 1 înseamnă că validarea a eșuat, cu erori la nivel de câmp. Integrați-l în CI sau într-o listă de verificare dinaintea transmiterii.
Ce regulamente SEPA sunt acoperite?
Cinci regulamente de schemă sunt incluse din start: SEPA Credit Transfer (sepa-sct), SEPA Instant (sepa-inst), SEPA Direct Debit Core (sepa-sdd), SEPA B2B (sepa-b2b) și transfer credit transfrontalier (xborder-ct). Folosiți --scheme pentru a vedea fiecare regulă trecută sau eșuată.
Datele noastre sunt în Excel. Unde este capcana?
Excel convertește în tăcere în numere șirurile care seamănă cu un IBAN. Loaderul Excel citește direct .xlsx/.xlsm și se oprește imediat dacă în coloanele IBAN apar celule numerice — coruperea este depistată la încărcare, nu la bancă.
Cum gestionează un lot de 500,000 de rânduri?
--streaming procesează datele de intrare în fragmente cu memorie limitată (implicit 1,000 de tranzacții), fiecare emis ca fișier XML propriu, cu totaluri de control recalculate corect. API-ul REST oferă, din același motiv, POST /api/v1/generate/async cu interogarea stării sarcinii.
Pentru ingineri și arhitecți#
Cum îl integrăm — ca bibliotecă, CLI sau API?
Toate trei există ca interfețe de prim rang: un API Python tipizat, un CLI cu coduri de ieșire potrivite pentru CI și un microserviciu FastAPI (pain001 serve) cu endpointuri sincrone, de sarcini asincrone, de stare de sănătate și de metrici Prometheus. Dedesubt se află același flux de validare, așa că rezultatele nu diferă niciodată de la o interfață la alta.
Este generarea XML cu adevărat ferită de rotunjirile în virgulă mobilă?
Sumele sunt decimal.Decimal de la un capăt la altul, atât în generare, cât și în validarea de schemă — interpretate ca zecimale exacte, însumate ca zecimale exacte, redate fără reprezentare în virgulă mobilă. Totalurile de control sunt recalculate din înregistrările validate, nu preluate pe încredere din datele de intrare.
Care este postura de securitate?
Toată analiza XML trece prin defusedxml (blocând atacurile XXE și expansiunea de entități); în arborele de dependențe nu există lxml. Datele de intrare trec printr-un validator împotriva traversării de căi. Imaginea Docker rulează fără drepturi de root. Pentru lansările nucleului se generează un SBOM CycloneDX, iar detectarea plugin-urilor terțe poate fi dezactivată complet cu PAIN001_DISABLE_PLUGINS=1.
Cum este impusă calitatea?
Acoperire 100% pe linii și pe ramuri, ca prag obligatoriu în CI pentru nucleu (verificabil: 3,828 de linii, 926 de ramuri la 100%), mypy strict, acoperire 100% a docstring-urilor, analiză de securitate Bandit și pip-audit, plus scanare CodeQL. Pachetele însoțitoare respectă aceeași disciplină de acoperire 100%.
Îl putem extinde pentru un format proprietar?
Da — patru grupuri de puncte de intrare pentru plugin-uri (pain001.loaders, pain001.validators, pain001.schemes, pain001.writers). Loaderul Excel este el însuși un plugin care folosește protocolul public, deci servește și ca implementare de referință.
Pentru auditori și conformitate#
Putem reproduce un fișier generat trimestrul trecut?
Da. Fixați versiunea pachetului, reluați aceleași date de intrare, iar rezultatul este determinist. Deoarece lanțul de instrumente este open source, pista de audit se extinde până în calea de execuție a codului — nu se oprește la o atestare a furnizorului.
Datele de plată părăsesc mediul nostru?
Nu. Fiecare componentă — CLI, bibliotecă, API REST, server MCP, LSP — se execută local. Nu există telemetrie, niciun apel către un serviciu SaaS, niciun serviciu extern de validare. Serverul MCP comunică exclusiv prin stdio, iar toate cele 17 instrumente ale sale sunt marcate ca fiind doar de citire și idempotente.
Cine întreține Pain001?
Sebastien Rousseau, lider de inginerie fintech cu sediul la Londra, împreună cu contribuitori din comunitate. Dezvoltarea este publică pe GitHub, versiunile sunt publicate pe PyPI, iar jurnalul de modificări este versionat la fiecare lansare.