Het SEPA pain.001-formaat begrijpen: een volledige gids
Het pain.001-bestand is het standaardformaat voor SEPA-overboekingen. In deze gids leggen we de XML-structuur, verplichte velden en veelvoorkomende fouten uit.
Wat is pain.001?
pain.001 (Payment Initiation) is het door de EPC (European Payments Council) gestandaardiseerde XML-bericht voor het initiëren van SEPA-overboekingen. Het wordt door bedrijven gebruikt om betalingsopdrachten naar hun bank te sturen.
Dit formaat is gebaseerd op de ISO 20022-norm en maakt deel uit van de Customer Credit Transfer Initiation-berichtenfamilie. Het wordt geaccepteerd door alle banken in de SEPA-zone, met 36 landen.
pain.001 heeft oudere nationale betalingsformaten grotendeels vervangen (zoals CFONB in Frankrijk, DTA in Duitsland en CLIEOP in Nederland). Een enkel pain.001-bestand kan duizenden afzonderlijke betalingstransacties bevatten, waardoor het de standaard is voor batchverwerking van salarisbetalingen, leveranciersbetalingen en treasury-operaties. Het bijbehorende formaat pain.008 verwerkt de omgekeerde stroom — SEPA-incasso's (SDD) voor het innen van gelden bij debiteuren.
XML-bestandsstructuur
Een pain.001-bestand is opgebouwd in drie niveaus: GroupHeader (algemene informatie), PaymentInformation (debiteurinformatie) en CreditTransferTransactionInformation (details van elke overboeking):
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>MSG-20260210-001</MsgId>
<CreDtTm>2026-02-10T10:00:00</CreDtTm>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>4500.00</CtrlSum>
<InitgPty><Nm>ACME SA</Nm></InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>PMT-001</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<ReqdExctnDt><Dt>2026-02-12</Dt></ReqdExctnDt>
<Dbtr><Nm>ACME SA</Nm></Dbtr>
<DbtrAcct>
<Id><IBAN>BE68539007547034</IBAN></Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId><BIC>GEBABEBB</BIC></FinInstnId>
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>INV-2026-001</EndToEndId>
</PmtId>
<Amt><InstdAmt Ccy="EUR">1500.00</InstdAmt></Amt>
<CdtrAgt>
<FinInstnId><BIC>ABNANL2A</BIC></FinInstnId>
</CdtrAgt>
<Cdtr><Nm>Supplier NV</Nm></Cdtr>
<CdtrAcct>
<Id><IBAN>NL91ABNA0417164300</IBAN></Id>
</CdtrAcct>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>Het rootelement moet de correcte XML-naamruimte (xmlns) bevatten die overeenkomt met de gebruikte versie. De GroupHeader verschijnt precies eenmaal en bevat de bericht-ID, het aanmaakverwerkingstijdstip, het transactieaantal en de controlesom. Elk PmtInf-blok groepeert transacties met hetzelfde debiteurkonto en uitvoeringsdatum. Binnen elk PmtInf beschrijven een of meer CdtTrfTxInf-elementen de afzonderlijke overboekingen.
Verplichte velden
Dit zijn de essentiële velden die vereist zijn in elk geldig pain.001-bestand:
- MsgId — Unieke berichtidentificatie (max. 35 tekens, uniek per indiening)
- CreDtTm — Aanmaakdatum en -tijd in ISO 8601-formaat (bijv. 2026-02-10T10:00:00)
- NbOfTxs — Totaal aantal transacties in het bestand
- CtrlSum — Controlegetal: som van alle overboekingsbedragen
- InitgPty / Nm — Naam van de initiërende partij — de entiteit die het bestand genereert. Maximaal 70 tekens. Moet overeenkomen met de naam die bij uw bank is geregistreerd.
- PmtInfId — Betalingsinformatie-identificatie — uniek binnen het bestand. Identificeert een groep transacties met dezelfde debiteur en uitvoeringsdatum. Gebruikt voor afstemming.
- PmtMtd — Betalingsmethode: 'TRF' voor overboeking. Dit veld vertelt de bank welk type SEPA-instructie moet worden uitgevoerd.
- ReqdExctnDt — Gewenste uitvoeringsdatum in JJJJ-MM-DD-formaat. Moet een toekomstige bankwerkdag zijn. Banken accepteren doorgaans datums tot 30 dagen in de toekomst.
- DbtrAcct / IBAN — IBAN van de debiteur — de te debiteren rekening. Moet de mod-97 controlesomvalidatie doorstaan en overeenkomen met een voor SEPA bij uw bank geregistreerde rekening.
- EndToEndId — End-to-end identificatie voor elke transactie (max. 35 tekens). Reist door de volledige betalingsketen en verschijnt op het bankafschrift van de crediteur. Essentieel voor afstemming.
Veelvoorkomende fouten in pain.001-bestanden
Deze fouten komen regelmatig voor bij validatie. Inzicht hierin helpt afwijzingen te voorkomen voordat u indient bij uw bank:
Onjuist controlegetal
Het controlegetal komt niet overeen met de som van de afzonderlijke bedragen. Controleer de afronding (max. 2 decimalen).
Ongeldig IBAN
Een onjuist geformatteerd IBAN of onjuiste controlecijfers. Gebruik een IBAN-validator voordat u de gegevens integreert.
Uitvoeringsdatum in het verleden
De ReqdExctnDt (gewenste uitvoeringsdatum) moet vandaag of een toekomstige bankwerkdag zijn. Weekenden en bankfeestdagen zijn geen geldige uitvoeringsdata. Controleer de feestdagenkalender van uw land.
Dubbele MsgId
Banken weigeren bestanden met een MsgId die ze al hebben verwerkt. Gebruik een combinatie van tijdstempel en uniek volgnummer. Hergebruik MsgIds nooit, ook niet over verschillende bankrelaties heen.
Verkeerde naamruimteversie
De XML-naamruimte moet overeenkomen met de versie die uw bank verwacht. Het gebruik van de pain.001.001.03-naamruimte met een pain.001.001.09-structuur veroorzaakt een schemavalidatiefout. Bevestig bij uw bank welke versies zij ondersteunen.
Speciale tekens in tekstvelden
SEPA staat in tekstvelden slechts een beperkte tekenset toe: a-z, A-Z, 0-9 en enkele speciale tekens (/ - ? : ( ) . , ' + spatie). Tekens zoals ä, ö, ü, é, ñ moeten worden getranslitereerd. Het euroteken (€) is niet toegestaan in tekstvelden.
pain.001-versies: welke versie moet u gebruiken?
Het pain.001-formaat heeft zich sinds de introductie door verschillende versies ontwikkeld. Elke versie voegt nieuwe velden en mogelijkheden toe met behoud van achterwaartse compatibiliteit. Uw bank kan een of meer versies ondersteunen — controleer altijd hun implementatiehandleiding.
| Versie | Naamruimte | Jaar | Belangrijkste wijzigingen |
|---|---|---|---|
| pain.001.001.03 | urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 | 2009 | Oorspronkelijke SEPA-versie, nog steeds breed ondersteund. Basisvelden voor overboekingen. |
| pain.001.001.09 | urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 | 2019 | Gestructureerde betalingskenmerkinformatie, regulatoire rapportage, doelcodes toegevoegd. Huidige EPC-aanbeveling. |
| pain.001.001.11 | urn:iso:std:iso:20022:tech:xsd:pain.001.001.11 | 2023 | Nieuwste ISO-versie. Uitgebreide LEI-ondersteuning, extra adresvelden. Adoptie varieert per bank. |
ValidateFin ondersteunt alle drie de hoofdversies. Voor nieuwe implementaties wordt pain.001.001.09 aanbevolen omdat het de beste balans biedt tussen functies en bankcompatibiliteit. Als uw bank nog .03 vereist, valideert ValidateFin tegen dat schema. Test altijd met uw bank voordat u van versie wisselt in productie.
Best practices voor het genereren van pain.001-bestanden
Volg deze bewezen richtlijnen om afwijzingen te minimaliseren en een soepele betalingsverwerking te garanderen:
- Valideer voor verzending — Valideer uw pain.001-bestand altijd tegen het XSD-schema voordat u het uploadt naar uw bank. ValidateFin detecteert 100% van de structurele fouten en de meeste overtredingen van bedrijfsregels in seconden.
- Gebruik unieke identificatoren consistent — MsgId, PmtInfId en EndToEndId moeten een voorspelbare naamgevingsconventie volgen (bijv. datumgebaseerde voorvoegsels). Dit vereenvoudigt de afstemming en probleemoplossing aanzienlijk.
- Groepeer transacties verstandig — Groepeer betalingen op uitvoeringsdatum en valuta in hetzelfde PmtInf-blok. Dit verlaagt bij sommige banken de verwerkingskosten en maakt de afstemming overzichtelijker.
- Verwerk tekencodering correct — Genereer bestanden altijd in UTF-8. Translitereer niet-SEPA-tekens (é→e, ß→ss, ü→ue) voordat u de XML opbouwt. Niet-getranslitereerde tekens veroorzaken stille afwijzingen bij sommige banken.
- Test eerst met kleine batches — Wanneer u een nieuwe pain.001-generator implementeert of van versie wisselt, begin dan met een bestand met 2-3 testtransacties. Controleer of de bank deze accepteert en correct verwerkt voordat u productievoluims verstuurt.
Overweeg voor hoogvolume betalingsoperaties om geautomatiseerde validatie te implementeren als onderdeel van uw betalingspijplijn. Genereer de XML, valideer met ValidateFin (of integreer schemavalidatie in uw code) en dien pas in bij de bank als de validatie slaagt. Dit voorkomt geweigerde bestanden en de handmatige tussenkomst die ze vereisen.
Uw pain.001-bestand valideren
Ons SEPA-validatietool controleert uw bestand aan de hand van het officiële EPC XSD-schema en toont de details van elke transactie. Er worden geen bestanden naar onze servers gestuurd.
Mijn SEPA-bestand validerenVeelgestelde vragen
Wat is een SEPA pain.001-bestand?
Een SEPA pain.001-bestand is een XML-document dat voldoet aan ISO 20022 en kredietoverboekingen initieert. Het bevat debiteurinformatie, crediteurgegevens, bedragen en betalingsreferenties. Banken gebruiken dit gestandaardiseerde formaat voor het verwerken van batchbetalingen in de 36-landen SEPA-zone. Een enkel bestand kan duizenden afzonderlijke overboekingen bevatten.
Wat zijn de verplichte velden in een pain.001-bestand?
De verplichte velden zijn: MsgId (berichtidentificatie, max. 35 tekens), CreDtTm (aanmaakverwerkingstijdstip), NbOfTxs (transactieaantal), CtrlSum (som van alle bedragen), InitgPty (initiërende partij), PmtInfId (betalingsinformatie-ID), PmtMtd (betalingsmethode — TRF), ReqdExctnDt (uitvoeringsdatum), Dbtr (debiteursnaam), DbtrAcct (debiteur-IBAN) en voor elke transactie: CdtrAcct (crediteur-IBAN), InstdAmt (bedrag met valuta) en EndToEndId (end-to-end referentie).
Hoe kan ik mijn SEPA pain.001-bestand online valideren?
Gebruik ValidateFins gratis SEPA Validator om uw pain.001-bestand te toetsen aan de officiële EPC XSD-schema's. Upload uw XML-bestand — alle validatie vindt lokaal in uw browser plaats zonder dat gegevens naar een server worden verzonden, waardoor volledige AVG-naleving wordt gewaarborgd. Het tool valideert structuur, IBANs, BICs, bedragen en controlesommen.
Wat is het verschil tussen pain.001 en pain.008?
Pain.001 (Customer Credit Transfer Initiation) is voor uitgaande bankoverschrijvingen — u stuurt geld naar crediteuren. Pain.008 (Customer Direct Debit Initiation) is voor het innen van geld bij debiteuren — u trekt geld van hun rekeningen via een ondertekend mandaat. Beide zijn ISO 20022 XML-formaten die worden verwerkt door banken in de SEPA-zone, maar ze hebben verschillende verplichte velden en bedrijfsregels.
Welke pain.001-versie moet ik gebruiken?
Voor nieuwe implementaties wordt pain.001.001.09 aanbevolen omdat het de huidige EPC-aanbeveling is en gestructureerde betalingskenmerkinformatie, doelcodes en regulatoire rapportagevelden biedt. Pain.001.001.03 wordt voor oudere systemen nog breed ondersteund. Pain.001.001.11 is de nieuwste ISO-versie maar bankondersteuning varieert. Controleer altijd bij uw bank welke versies zij accepteren.
Welke tekens zijn toegestaan in SEPA pain.001-tekstvelden?
SEPA-betalingsbestanden gebruiken een beperkte tekenset gedefinieerd door de EPC: a-z, A-Z, 0-9 en speciale tekens / - ? : ( ) . , ' + en spatie. Nationale tekens met accenten (é, ü, ñ, enz.) moeten worden getranslitereerd. Het euroteken (€) en andere valutasymbolen zijn niet toegestaan in tekstvelden — bedragen gebruiken in plaats daarvan het InstdAmt-element met het Ccy-attribuut.
Hoe werkt de CtrlSum (controlesom) in pain.001?
CtrlSum is een controlegetal dat exact gelijk moet zijn aan de som van alle afzonderlijke InstdAmt-waarden over alle transacties in het bestand, afgerond op 2 decimalen. Het dient als integriteitscontrole — als er zelfs een verschil van €0,01 bestaat tussen CtrlSum en de werkelijke som, wordt het gehele bestand afgewezen. Bereken het door vooraf afgeronde bedragen op te tellen, niet door de totale som achteraf af te ronden.
Kan een pain.001-bestand transacties in meerdere valuta bevatten?
Standaard SEPA-overboekingen (SCT) zijn alleen in EUR. Het pain.001-formaat zelf ondersteunt echter meerdere valuta via het Ccy-attribuut van InstdAmt. Sommige banken accepteren niet-EUR-transacties in pain.001 voor internationale betalingen, maar dit hangt af van de implementatie van uw bank. Gebruik voor zuivere SEPA-betalingen binnen de SEPA-zone altijd EUR.
Hoeveel transacties kan een enkel pain.001-bestand bevatten?
De ISO 20022-norm definieert geen maximum, maar praktische limieten hangen af van uw bank. De meeste banken accepteren bestanden met tot 100.000 transacties. Zeer grote bestanden (>50.000 transacties) kunnen langer duren om te verwerken en sommige banken adviseren ze op te splitsen. De bestandsgroottelimiet is doorgaans 20-50 MB afhankelijk van het uploadkanaal van de bank.
Wat gebeurt er als mijn bank een pain.001-bestand weigert?
Wanneer een bank een pain.001-bestand weigert, ontvangt u een pain.002 (Payment Status Report) met de reden van weigering. Veelvoorkomende weigeringscodes zijn: AC01 (onjuist rekeningnummer), AM05 (dubbele betaling), DT01 (ongeldige datum) en FF01 (ongeldig bestandsformaat). Valideer uw bestand altijd met ValidateFin voor indiening om afwijzingen te voorkomen — het tool detecteert structurele fouten, ongeldige IBANs en foute controlesommen.