ISO 20022 uitgelegd

Wat is pain.001? ISO 20022-initiatie van overboekingen

Het ISO 20022-bericht waarmee een bedrijf zijn bank opdracht geeft tot overboekingen: wat het is, hoe het is opgebouwd, welke versie u gebruikt en een volledig voorbeeld dat valideert tegen het officiële schema.

pain.001 is het ISO 20022-bericht waarmee een bedrijf zijn bank opdracht geeft tot een of meer overboekingen. De volledige naam is Customer Credit Transfer Initiation: "pain" is de berichtenfamilie voor betaalinitiatie, .001 is het berichtnummer en het achtervoegsel, zoals pain.001.001.09, is de versie. Het is XML, het wordt gevalideerd tegen een officieel schema (XSD) en het vervangt bankspecifieke CSV-formaten en het tekstbericht SWIFT MT101.

pain.001 in één minuut#

  • Wie verstuurt het: een bedrijf (de debiteur, of een partij die namens hem optreedt) stuurt het naar de eigen bank (de bank van de debiteur).
  • Wat het bevat: een of meer batches overboekingen, elk met een debiteurrekening, een gewenste uitvoeringsdatum en een willekeurig aantal betalingen aan crediteuren.
  • Wat er terugkomt: de bank antwoordt met pain.002, het Customer Payment Status Report, dat het bestand of afzonderlijke transacties accepteert of weigert met ISO-redencodes.
  • Wat er daarna gebeurt: na acceptatie zet de bank elke opdracht om in interbancaire berichten zoals pacs.008, die het bedrijf nooit ziet.
  • Waar het wordt gebruikt: SEPA-overboekingen volgens de EPC-rulebooks, grensoverschrijdende betalingen via Swift onder CBPR+ (pain.001.001.09) en veel binnenlandse schema's. Het voorbeeldcorpus van Pain001 omvat 42 scenario's in 17 markten.

Hoe een pain.001-bericht is opgebouwd#

Elke versie deelt hetzelfde skelet van drie niveaus binnen een <CstmrCdtTrfInitn>-element.

Niveau Element Wat het bevat
1 <GrpHdr> Group Header (groepskop) Bericht-ID, aanmaaktijdstip, aantal transacties (NbOfTxs), controletotaal (CtrlSum), initiërende partij
2 <PmtInf> Payment Information (betaalinformatie) Eén batch: betaalmethode, gewenste uitvoeringsdatum, debiteur, rekening en bank van de debiteur, kostenverdeling
3 <CdtTrfTxInf> Credit Transfer Transaction (overboekingstransactie) Eén betaling: end-to-end-referentie, bedrag en valuta, crediteur, rekening en bank van de crediteur, betalingskenmerk

Een bestand kan meerdere <PmtInf>-batches bevatten, en elke batch veel <CdtTrfTxInf>-betalingen. NbOfTxs en CtrlSum staan zowel op bestands- als op batchniveau en moeten overeenkomen met de betalingen die ze tellen; dat is een van de meest voorkomende redenen waarom een bank een bestand weigert.

Een volledig pain.001-voorbeeld#

Dit is één SEPA-overboeking in pain.001.001.09, ongewijzigd overgenomen uit het voorbeeldcorpus van Pain001. Het valideert tegen de officiële ISO 20022-XSD. De partijen, IBAN's en BIC's zijn fictief.

<?xml version='1.0' encoding='UTF-8'?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
  <CstmrCdtTrfInitn>
    <GrpHdr>
      <MsgId>OML-SCT-20260921</MsgId>
      <CreDtTm>2026-09-21T12:00:00</CreDtTm>
      <NbOfTxs>1</NbOfTxs>
      <CtrlSum>2200.00</CtrlSum>
      <InitgPty>
        <Nm>Officine Meccaniche Lombarde SpA</Nm>
        <PstlAdr>
          <PstCd>20123</PstCd>
          <TwnNm>Milano</TwnNm>
          <Ctry>IT</Ctry>
          <AdrLine>Via Torino 15</AdrLine>
        </PstlAdr>
      </InitgPty>
    </GrpHdr>
    <PmtInf>
      <PmtInfId>SCT-20260921-IT-01</PmtInfId>
      <PmtMtd>TRF</PmtMtd>
      <BtchBookg>false</BtchBookg>
      <NbOfTxs>1</NbOfTxs>
      <CtrlSum>2200.00</CtrlSum>
      <PmtTpInf>
        <SvcLvl>
          <Cd>SEPA</Cd>
        </SvcLvl>
      </PmtTpInf>
      <ReqdExctnDt>
        <Dt>2026-09-22</Dt>
      </ReqdExctnDt>
      <Dbtr>
        <Nm>Officine Meccaniche Lombarde SpA</Nm>
        <PstlAdr>
          <PstCd>20123</PstCd>
          <TwnNm>Milano</TwnNm>
          <Ctry>IT</Ctry>
          <AdrLine>Via Torino 15</AdrLine>
        </PstlAdr>
      </Dbtr>
      <DbtrAcct>
        <Id>
          <IBAN>IT48T78971134594OGDKY5VXE41</IBAN>
        </Id>
      </DbtrAcct>
      <DbtrAgt>
        <FinInstnId>
          <BICFI>TLAOIT60</BICFI>
        </FinInstnId>
      </DbtrAgt>
      <ChrgBr>SLEV</ChrgBr>
      <CdtTrfTxInf>
        <PmtId>
          <EndToEndId>OML-2026-0921-01</EndToEndId>
        </PmtId>
        <Amt>
          <InstdAmt Ccy="EUR">2200.00</InstdAmt>
        </Amt>
        <CdtrAgt>
          <FinInstnId>
            <BICFI>MHXHITI0</BICFI>
          </FinInstnId>
        </CdtrAgt>
        <Cdtr>
          <Nm>Fonderia Bresciana Srl</Nm>
          <PstlAdr>
            <PstCd>25121</PstCd>
            <TwnNm>Brescia</TwnNm>
            <Ctry>IT</Ctry>
          </PstlAdr>
        </Cdtr>
        <CdtrAcct>
          <Id>
            <IBAN>IT23J14887404856NF3794IGWXN</IBAN>
          </Id>
        </CdtrAcct>
        <RmtInf>
          <Ustrd>Fattura 117/2026</Ustrd>
        </RmtInf>
      </CdtTrfTxInf>
    </PmtInf>
  </CstmrCdtTrfInitn>
</Document>

Probeer uw eigen gegevens in de browserdemo: die bouwt een pain.001-bestand uit een CSV en valideert het tegen het officiële schema zonder dat de gegevens uw computer verlaten.

pain.001-versies#

ISO publiceert een nieuwe versie wanneer het berichtmodel verandert. Banken en schema's accepteren elk bepaalde versies, dus u verstuurt de versie die in de kanaaldocumentatie van uw bank staat.

Versie Opmerkingen
pain.001.001.03 Het vertrouwde werkpaard voor SEPA en CGI; identificeert banken met <BIC>
.04, .05, .06, .07, .08 Onderhoudsversies die door specifieke kanalen worden gebruikt
pain.001.001.09 De versie uit 2019 die CBPR+ voor Swift heeft gekozen; identificeert banken met <BICFI> en voegt ondersteuning voor LEI en UETR toe
.10, .11, .12 Verfijningen na 2019
pain.001.001.13 Door ISO gepubliceerd op 19 maart 2026; voegt een optionele unieke transactie-identificatie toe (UnqTxIdr)

De compatibiliteitsmatrix laat zien welke versies Pain001 genereert, valideert en tussen welke het migreert.

Bericht Richting Doel
pain.001 Bedrijf naar zijn bank Geeft opdracht tot overboekingen (geld gaat naar buiten)
pain.002 Bank naar bedrijf Meldt de status van een pain.001 of pain.008: geaccepteerd, deels geaccepteerd of geweigerd, met redencodes
pain.008 Bedrijf naar zijn bank Geeft opdracht tot incasso's (int geld op basis van een machtiging)
pacs.008 Bank naar bank De interbancaire overboeking waarin een pain.001-opdracht wordt omgezet
MT101 Bedrijf of bank, via Swift Het oude tekstbericht "Request for Transfer" dat pain.001 vervangt. Swift heeft in augustus 2026 de uitfasering van de interbancaire MT101-relay uitgesteld (Swift); zie MT101 naar pain.001

De woordenlijst legt de rest van de ISO 20022-terminologie in gewone taal uit.

Waarom banken pain.001-bestanden weigeren#

Een bestand kan correcte XML zijn en toch worden geweigerd. De controles stapelen zich in lagen op:

  1. Schema: het bestand moet valideren tegen de officiële XSD van zijn versie.
  2. Datakwaliteit: IBAN's doorstaan hun controlegetallen, BIC's zijn correct opgebouwd, datums en bedragen zijn geldig, en NbOfTxs en CtrlSum komen overeen met de betalingen.
  3. Schemaregels: SEPA, CBPR+ en binnenlandse schema's voegen eigen beperkingen toe, zoals de toegestane tekenset of een gestructureerd postadres.
  4. Profiel en kanaal van uw bank: elke bank publiceert bovenop het schema eigen gebruiksrichtlijnen.

Pain001 controleert de eerste drie lagen voordat het bestand de bank bereikt, en zegt duidelijk dat de vierde door de bank moet worden bevestigd.

Zo maakt u een pain.001-bestand#

  • Vanuit een spreadsheet: Excel naar pain.001 zet een Excel- of CSV-betaallijst om in een gevalideerd bestand.
  • In de browser: de demo genereert en valideert een bestand lokaal, zonder upload.
  • Vanuit code of de opdrachtregel: installeer de opensource-pain001-bibliotheek en voer uit:
pain001 -t pain.001.001.09 -d payments.csv -o out/

De technische referentie behandelt elke optie, en de veelgestelde vragen beantwoorden de vragen die treasury-, operations- en engineeringteams het vaakst stellen.

Bronnen#