ISO 20022 förklarat

Vad är pain.001? Initiering av överföringar i ISO 20022

ISO 20022-meddelandet som ett företag skickar till sin bank för att beordra överföringar: vad det är, hur det är uppbyggt, vilken version du ska använda och ett komplett exempel som validerar mot det officiella schemat.

pain.001 är ISO 20022-meddelandet som ett företag skickar till sin bank för att beordra en eller flera överföringar. Det fullständiga namnet är Customer Credit Transfer Initiation: "pain" är meddelandefamiljen för betalningsinitiering, .001 är meddelandenumret och suffixet, till exempel pain.001.001.09, är versionen. Det är XML, det valideras mot ett officiellt schema (XSD) och det ersätter bankspecifika CSV-format och textmeddelandet SWIFT MT101.

pain.001 på en minut#

  • Vem skickar det: ett företag (betalaren, eller ett ombud för betalaren) skickar det till sin egen bank (betalarens bank).
  • Vad det innehåller: en eller flera batcher med överföringar, var och en med ett betalarkonto, ett önskat genomförandedatum och valfritt antal betalningar till mottagare.
  • Vad som kommer tillbaka: banken svarar med pain.002, Customer Payment Status Report, som godkänner eller avvisar filen eller enskilda transaktioner med ISO-orsakskoder.
  • Vad som händer sedan: när uppdraget har godkänts omvandlar banken varje instruktion till interbankmeddelanden som pacs.008, som företaget aldrig ser.
  • Var det används: SEPA-överföringar enligt EPC:s regelverk, gränsöverskridande betalningar via Swift under CBPR+ (pain.001.001.09) och många inhemska system. Pain001:s exempelkorpus omfattar 42 scenarier på 17 marknader.

Så är ett pain.001-meddelande uppbyggt#

Alla versioner delar samma skelett i tre nivåer inuti ett <CstmrCdtTrfInitn>-element.

Nivå Element Vad det innehåller
1 <GrpHdr> Group Header (grupphuvud) Meddelande-ID, tidpunkt för skapande, antal transaktioner (NbOfTxs), kontrollsumma (CtrlSum), initierande part
2 <PmtInf> Payment Information (betalningsinformation) En batch: betalningsmetod, önskat genomförandedatum, betalare, betalarens konto och bank, kostnadsfördelning
3 <CdtTrfTxInf> Credit Transfer Transaction (överföringstransaktion) En betalning: end-to-end-referens, belopp och valuta, mottagare, mottagarens konto och bank, betalningsinformation

En fil kan innehålla flera <PmtInf>-batcher och varje batch många <CdtTrfTxInf>-betalningar. NbOfTxs och CtrlSum finns både på fil- och batchnivå och måste stämma med betalningarna de räknar, vilket är en av de vanligaste orsakerna till att en bank avvisar en fil.

Ett komplett pain.001-exempel#

Det här är en enskild SEPA-överföring i pain.001.001.09, hämtad oförändrad från Pain001:s exempelkorpus. Den validerar mot den officiella ISO 20022-XSD:n. Parterna, IBAN-numren och BIC-koderna är fiktiva.

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

Prova dina egna data i webbläsardemon: den bygger en pain.001-fil från en CSV och validerar den mot det officiella schemat utan att data lämnar din dator.

pain.001-versioner#

ISO publicerar en ny version när meddelandemodellen ändras. Banker och system godtar var för sig vissa versioner, så den version du skickar är den som bankens kanaldokumentation anger.

Version Anmärkningar
pain.001.001.03 Den beprövade arbetshästen för SEPA och CGI; identifierar banker med <BIC>
.04, .05, .06, .07, .08 Underhållsversioner som används av vissa kanaler
pain.001.001.09 Versionen från 2019 som CBPR+ valde för Swift; identifierar banker med <BICFI> och lägger till stöd för LEI och UETR
.10, .11, .12 Förfiningar efter 2019
pain.001.001.13 Publicerad av ISO den 19 mars 2026; lägger till en valfri unik transaktionsidentifierare (UnqTxIdr)

Kompatibilitetsmatrisen visar vilka versioner Pain001 genererar, validerar och migrerar mellan.

Meddelande Riktning Syfte
pain.001 Företag till sin bank Beordrar överföringar (pengar går ut)
pain.002 Bank till företag Rapporterar status för en pain.001 eller pain.008: godkänd, delvis godkänd eller avvisad, med orsakskoder
pain.008 Företag till sin bank Beordrar autogireringar (drar in pengar enligt ett medgivande)
pacs.008 Bank till bank Den interbanköverföring som en pain.001-instruktion blir
MT101 Företag eller bank, via Swift Det äldre textmeddelandet "Request for Transfer" som pain.001 ersätter. Swift sköt i augusti 2026 upp avvecklingen av interbankreläet för MT101 (Swift); se MT101 till pain.001

Ordlistan förklarar resten av ISO 20022-terminologin på vanlig svenska.

Varför banker avvisar pain.001-filer#

En fil kan vara korrekt XML och ändå avvisas. Kontrollerna ligger i lager:

  1. Schema: filen måste validera mot den officiella XSD:n för sin version.
  2. Datakvalitet: IBAN-nummer klarar sina kontrollsiffror, BIC-koder är korrekt uppbyggda, datum och belopp är giltiga, och NbOfTxs och CtrlSum stämmer med betalningarna.
  3. Systemregler: SEPA, CBPR+ och inhemska system lägger till egna begränsningar, till exempel tillåten teckenuppsättning eller en strukturerad postadress.
  4. Din banks profil och kanal: varje bank publicerar egna användningsriktlinjer utöver systemets regler.

Pain001 kontrollerar de tre första lagren innan filen når banken och säger tydligt att det fjärde är bankens att bekräfta.

Så skapar du en pain.001-fil#

  • Från ett kalkylblad: Excel till pain.001 gör om en betalningslista i Excel eller CSV till en validerad fil.
  • I webbläsaren: demon genererar och validerar en fil lokalt, utan uppladdning.
  • Från kod eller kommandoraden: installera det öppna pain001-biblioteket och kör:
pain001 -t pain.001.001.09 -d payments.csv -o out/

Den tekniska referensen täcker varje alternativ, och vanliga frågor besvarar de frågor som treasury-, drift- och utvecklingsteam oftast ställer.

Källor#