ISO 20022 dijelaskan

Apa itu pain.001? Inisiasi Transfer Kredit ISO 20022

Pesan ISO 20022 yang dikirim perusahaan ke banknya untuk memerintahkan transfer kredit: apa itu, bagaimana strukturnya, versi mana yang digunakan, dan contoh lengkap yang lolos validasi skema resmi.

pain.001 adalah pesan ISO 20022 yang dikirim perusahaan ke banknya untuk memerintahkan satu atau beberapa transfer kredit. Nama lengkapnya Customer Credit Transfer Initiation: "pain" adalah keluarga pesan inisiasi pembayaran, .001 adalah nomor pesan, dan akhiran seperti pain.001.001.09 adalah versinya. Pesan ini berformat XML, divalidasi terhadap skema resmi (XSD), dan menggantikan format CSV khusus tiap bank serta pesan teks SWIFT MT101.

pain.001 dalam satu menit#

  • Siapa yang mengirim: perusahaan (debitur, atau agen yang bertindak atas namanya) mengirimkannya ke banknya sendiri (bank debitur).
  • Isinya: satu atau beberapa batch transfer kredit, masing-masing dengan rekening debitur, tanggal eksekusi yang diminta, dan sejumlah pembayaran kepada kreditur.
  • Balasannya: bank menjawab dengan pain.002, Customer Payment Status Report, yang menerima atau menolak file atau transaksi tertentu dengan kode alasan ISO.
  • Selanjutnya: setelah diterima, bank mengubah setiap instruksi menjadi pesan antarbank seperti pacs.008, yang tidak pernah dilihat perusahaan.
  • Tempat penggunaannya: transfer kredit SEPA berdasarkan rulebook EPC, pembayaran lintas negara di Swift berdasarkan CBPR+ (pain.001.001.09), dan banyak skema domestik. Korpus contoh Pain001 mencakup 42 skenario di 17 pasar.

Struktur pesan pain.001#

Setiap versi memiliki kerangka tiga tingkat yang sama di dalam elemen <CstmrCdtTrfInitn>.

Tingkat Elemen Isinya
1 <GrpHdr> Header Grup ID pesan, stempel waktu pembuatan, jumlah transaksi (NbOfTxs), jumlah kontrol (CtrlSum), pihak pemrakarsa
2 <PmtInf> Informasi Pembayaran Satu batch: metode pembayaran, tanggal eksekusi yang diminta, debitur, rekening dan bank debitur, penanggung biaya
3 <CdtTrfTxInf> Transaksi Transfer Kredit Satu pembayaran: referensi end-to-end, jumlah dan mata uang, kreditur, rekening dan bank kreditur, informasi remitansi

Satu file dapat memuat beberapa batch <PmtInf>, dan setiap batch memuat banyak pembayaran <CdtTrfTxInf>. NbOfTxs dan CtrlSum muncul di tingkat file maupun batch dan harus cocok dengan pembayaran yang dihitungnya; ini salah satu alasan paling umum bank menolak file.

Contoh lengkap pain.001#

Ini adalah satu transfer kredit SEPA dalam pain.001.001.09, diambil tanpa perubahan dari korpus contoh Pain001. File ini lolos validasi terhadap XSD resmi ISO 20022. Para pihak, IBAN, dan BIC bersifat fiktif.

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

Coba data Anda sendiri di demo browser: demo ini membuat file pain.001 dari CSV dan memvalidasinya terhadap skema resmi tanpa data meninggalkan komputer Anda.

Versi pain.001#

ISO menerbitkan versi baru saat model pesan berubah. Setiap bank dan skema menerima versi tertentu, jadi versi yang Anda kirim adalah versi yang disebutkan dalam dokumentasi kanal bank Anda.

Versi Catatan
pain.001.001.03 Andalan lama SEPA dan CGI; mengidentifikasi bank dengan <BIC>
.04, .05, .06, .07, .08 Versi pemeliharaan yang digunakan oleh kanal tertentu
pain.001.001.09 Versi 2019 yang dipilih CBPR+ untuk Swift; mengidentifikasi bank dengan <BICFI>, menambahkan dukungan LEI dan UETR
.10, .11, .12 Penyempurnaan setelah 2019
pain.001.001.13 Diterbitkan ISO pada 19 Maret 2026; menambahkan pengenal transaksi unik opsional (UnqTxIdr)

Matriks kompatibilitas menunjukkan versi mana yang dihasilkan, divalidasi, dan dimigrasikan oleh Pain001.

Pesan Arah Tujuan
pain.001 Perusahaan ke banknya Memerintahkan transfer kredit (mengirim dana keluar)
pain.002 Bank ke perusahaan Melaporkan status pain.001 atau pain.008: diterima, diterima sebagian, atau ditolak, dengan kode alasan
pain.008 Perusahaan ke banknya Memerintahkan debit langsung (menagih dana berdasarkan mandat)
pacs.008 Bank ke bank Transfer kredit antarbank yang menjadi wujud instruksi pain.001
MT101 Perusahaan atau bank, melalui Swift Pesan teks lama "Request for Transfer" yang digantikan pain.001. Swift menunda penghentian relai MT101 antarbank pada Agustus 2026 (Swift); lihat MT101 ke pain.001

Glosarium menjelaskan kosakata ISO 20022 lainnya dengan bahasa sederhana.

Mengapa bank menolak file pain.001#

Sebuah file bisa berupa XML yang valid secara format namun tetap ditolak. Pemeriksaannya bertumpuk dalam beberapa lapisan:

  1. Skema: file harus lolos validasi terhadap XSD resmi untuk versinya.
  2. Kualitas data: digit periksa IBAN valid, BIC berformat benar, tanggal dan jumlah valid, serta NbOfTxs dan CtrlSum cocok dengan pembayarannya.
  3. Aturan skema: SEPA, CBPR+, dan skema domestik menambahkan batasan sendiri, seperti set karakter yang diizinkan atau alamat pos terstruktur.
  4. Profil dan kanal bank Anda: setiap bank menerbitkan panduan penggunaannya sendiri di atas skema.

Pain001 memeriksa tiga lapisan pertama sebelum file sampai ke bank dan menyatakan dengan jelas bahwa lapisan keempat harus dikonfirmasi oleh bank.

Cara membuat file pain.001#

  • Dari spreadsheet: Excel ke pain.001 mengubah daftar pembayaran Excel atau CSV menjadi file yang tervalidasi.
  • Di browser: demo membuat dan memvalidasi file secara lokal, tanpa unggahan.
  • Dari kode atau baris perintah: pasang pustaka pain001 sumber terbuka dan jalankan:
pain001 -t pain.001.001.09 -d payments.csv -o out/

Referensi teknis mencakup setiap opsi, dan FAQ menjawab pertanyaan yang paling sering diajukan tim treasury, operasional, dan engineering.

Sumber#