Heldere antwoorden voor treasurers, betalingsoperaties, engineers en auditors. De vragen zijn geformuleerd zoals mensen ze werkelijk stellen. Voor meer technische diepgang raadpleegt u de technische referentie.
Voor treasury- en finance-leiders#
Wat is pain.001, in één alinea?
pain.001 is het ISO 20022-bericht dat een klant naar zijn bank stuurt om overboekingen te initiëren — de XML-opvolger van formaten als SWIFT MT101 en nationale platte bestanden. Uw bank valideert het tegen een schema en een scheme-rulebook voordat zij het accepteert. Pain001 (de software) maakt die bestanden uit de gegevens die u al hebt en bewijst dat ze geldig zijn voordat u ze indient.
Wat is het verschil tussen pain.001 en pain.008?
De richting van de geldstroom. pain.001 initieert overboekingen — u duwt geld naar buiten. pain.008 initieert incasso's — u int geld dat u onder een machtiging toekomt. Pain001 genereert beide: tien versies van pain.001 (.001.03 tot en met .001.12) en pain.008.001.02.
Wij versturen nog MT101-bestanden. Hoe urgent is migratie?
Urgent. SWIFT heeft de MT-berichten van categorie 1, 2 en 9 voor grensoverschrijdende interbancaire betaalopdrachten in november 2025 uitgefaseerd; zakelijke kanalen die MT nog accepteren, doen dat naar het inzicht van elke bank afzonderlijk en op geleende tijd. De MT101-loader zet bestaande MT101-stromen om naar gevalideerde pain.001 zonder dat u iets opnieuw hoeft in te typen.
Wat betekent de deadline van november 2026 voor gestructureerde adressen voor ons?
Vanaf eind november 2026 worden volledig ongestructureerde postadressen niet meer geaccepteerd in grensoverschrijdende CBPR+-betalingen; adressen moeten gestructureerd of hybride zijn — losse elementen zoals plaats () en land () in plaats van vrije tekstregels. Staan de adressen in uw stamgegevens als tekstblokken, dan zit het werk in uw data, niet in uw bankkoppeling. Begin daar. De briefing over 2026 behandelt de tijdlijn in detail.
Wat kost Pain001?
Niets. De kern is dubbel gelicentieerd onder Apache-2.0 / MIT; de aanvullende pakketten onder Apache-2.0. Commercieel gebruik, aanpassing en herdistributie zijn allemaal toegestaan. Ter vergelijking: alleen al de vertaal-SDK van SWIFT staat in de prijslijst voor €10,000–30,000 per jaar.
Voor betalingsoperaties#
Waarom wijzen banken betaalbestanden af?
Vier terugkerende oorzaken: schemaovertredingen (verkeerd element, verkeerde versie, verkeerde namespace), onjuiste identificatoren (mislukte IBAN-controlegetallen, ongeldige BIC's), niet-kloppende controletotalen (NbOfTxs / CtrlSum die niet bij de transacties passen) en tekens buiten de Latijnse ISO 20022-set. Pain001 controleert alle vier voordat er een bestand bestaat: JSON Schema-validatie per record, mod-97-controle op IBAN en ISO 9362-controle op BIC, herberekende controletotalen, transliteratie van de tekenset en tot slot XSD-validatie van de gerenderde XML.
Kunnen wij een bestand valideren zonder iets te genereren?
Ja — pain001 --dry-run (of het subcommando validate, of POST /api/v1/validate). Exitcode 0 betekent geldig; 1 betekent dat de validatie is mislukt met fouten op veldniveau. Neem het op in uw CI of in een checklist vóór indiening.
Welke SEPA-rulebooks worden gedekt?
Vijf scheme-rulebooks worden standaard meegeleverd: SEPA Credit Transfer (sepa-sct), SEPA Instant (sepa-inst), SEPA Direct Debit Core (sepa-sdd), SEPA B2B (sepa-b2b) en de grensoverschrijdende overboeking (xborder-ct). Gebruik --scheme om elke regel te zien die slaagde of faalde.
Onze gegevens staan in Excel. Waar zit het addertje?
Excel zet IBAN-achtige tekenreeksen stilzwijgend om in getallen. De Excel-loader leest .xlsx/.xlsm rechtstreeks en stopt onherroepelijk zodra IBAN-kolommen numerieke cellen bevatten — de corruptie wordt bij het inlezen opgemerkt, niet bij de bank.
Hoe gaat het om met een batch van 500,000 regels?
--streaming verwerkt de invoer in geheugenbegrensde chunks (standaard 1,000 transacties), die elk als eigen XML-bestand met correct herberekende controletotalen worden weggeschreven. De REST API biedt om dezelfde reden POST /api/v1/generate/async met taakpolling.
Voor engineers en architecten#
Hoe integreren wij het — bibliotheek, CLI of API?
Alle drie bestaan als volwaardige interfaces: een getypeerde Python-API, een CLI met CI-vriendelijke exitcodes en een FastAPI-microservice (pain001 serve) met endpoints voor synchrone generatie, asynchrone taken, health en Prometheus-metrieken. Eronder ligt dezelfde validatiepijplijn, zodat de resultaten tussen de interfaces nooit uiteenlopen.
Is de XML-generatie werkelijk bestand tegen afrondingsfouten met floats?
Bedragen zijn van begin tot eind decimal.Decimal in de generatie en de scheme-validatie — geparseerd als exacte decimalen, opgeteld als exacte decimalen, weergegeven zonder floatrepresentatie. Controletotalen worden herberekend uit gevalideerde records en nooit blind uit de invoer overgenomen.
Hoe zit het met de beveiliging?
Alle XML-parsing loopt via defusedxml (dat XXE- en entiteitsexpansieaanvallen blokkeert); er zit geen lxml in de afhankelijkhedenboom. Invoer passeert een validator tegen padtraversal. De Docker-image draait niet als root. Voor kernreleases wordt een CycloneDX-SBOM gegenereerd, en de detectie van plugins van derden kan volledig worden uitgeschakeld met PAIN001_DISABLE_PLUGINS=1.
Hoe wordt de kwaliteit afgedwongen?
100% regel- en branchdekking als harde CI-poort op de kern (verifieerbaar: 3,828 regels, 926 branches op 100%), strikte mypy, 100% docstringdekking, security-linting met Bandit en pip-audit, en CodeQL-scanning. De aanvullende pakketten hanteren dezelfde discipline van 100% dekking.
Kunnen wij het uitbreiden voor een eigen formaat?
Ja — er zijn vier entry-pointgroepen voor plugins (pain001.loaders, pain001.validators, pain001.schemes, pain001.writers). De Excel-loader is zelf een plugin die het publieke protocol gebruikt en dient daarmee meteen als referentie-implementatie.
Voor auditors en compliance#
Kunnen wij een bestand van vorig kwartaal reproduceren?
Ja. Zet de pakketversie vast, speel dezelfde invoer opnieuw af en de uitvoer is deterministisch. Doordat de toolchain open source is, loopt het auditspoor door tot in het codepad zelf — niet slechts tot een verklaring van een leverancier.
Verlaten betaalgegevens onze omgeving?
Nee. Elke component — CLI, bibliotheek, REST API, MCP-server, LSP — draait lokaal. Er is geen telemetrie, geen SaaS-callback, geen externe validatiedienst. De MCP-server spreekt uitsluitend stdio en alle 17 tools zijn geannoteerd als alleen-lezen en idempotent.
Wie onderhoudt Pain001?
Sebastien Rousseau, een in Londen gevestigde leider in fintech-engineering, samen met bijdragers uit de gemeenschap. De ontwikkeling verloopt in het openbaar op GitHub, releases verschijnen op PyPI en de changelog wordt bij elke release meegeversioneerd.