Pertanyaan

FAQ Pain001 untuk Tresuri, Operasi, Teknik, dan Audit

Jawaban lugas untuk manajer tresuri, operasi pembayaran, insinyur, dan auditor, dirumuskan sebagaimana orang benar-benar bertanya.

Jawaban lugas untuk manajer tresuri, operasi pembayaran, insinyur, dan auditor. Pertanyaannya dirumuskan sebagaimana orang benar-benar menanyakannya. Untuk detail teknis yang lebih mendalam, lihat Referensi Teknis.


Untuk pemimpin tresuri dan keuangan#

pain.001 adalah pesan ISO 20022 yang dikirim nasabah kepada banknya untuk memulai transfer kredit. Ini adalah penerus XML dari format seperti SWIFT MT101 dan berkas datar domestik. Bank Anda memvalidasinya terhadap sebuah skema dan rulebook skema sebelum menerimanya. Pain001 (perangkat lunaknya) menghasilkan berkas tersebut dari data yang sudah Anda miliki dan membuktikan bahwa berkas itu valid sebelum Anda mengirimkannya.

Arah aliran dananya. pain.001 memulai transfer kredit: Anda mendorong uang keluar. pain.008 memulai debit langsung: Anda menagih uang yang terutang kepada Anda berdasarkan sebuah mandat. Pain001 menghasilkan keduanya: sepuluh versi pain.001 (.001.03 hingga .001.12) dan pain.008.001.02.

Mendesak. SWIFT menghentikan pesan MT kategori 1, 2, dan 9 untuk instruksi pembayaran antarbank lintas negara pada November 2025; kanal korporat yang masih menerima MT melakukannya atas kebijakan masing-masing bank dan hanya untuk sementara waktu. Loader MT101 mengonversi alur MT101 yang ada menjadi pain.001 tervalidasi tanpa perlu mengetik ulang apa pun.

Swift semula berencana berhenti menerima alamat pos yang sepenuhnya tidak terstruktur dalam pembayaran lintas negara CBPR+ pada November 2026. Pada Agustus 2026 Swift menunda tanggal itu dan akan mengumumkan tanggal baru paling lambat Desember 2026, tetapi aturannya tidak berubah: alamat harus terstruktur atau hibrida, menggunakan elemen terpisah seperti kota (<TwnNm>) dan negara (<Ctry>) alih-alih baris teks bebas. Jika data induk Anda menyimpan alamat sebagai gumpalan teks, pekerjaannya ada pada data Anda, bukan pada koneksi bank Anda. Mulailah dari sana. Ringkasan 2026 membahas linimasanya secara terperinci.

Tidak ada. Bagian intinya berlisensi ganda Apache-2.0 / MIT; paket pendampingnya berlisensi Apache-2.0. Penggunaan komersial, modifikasi, dan redistribusi semuanya diizinkan. Sebagai pembanding skala, SDK terjemahan milik SWIFT saja dibanderol €10,000–30,000 per tahun.


Untuk operasi pembayaran#

Empat penyebab yang berulang: pelanggaran skema (elemen keliru, versi keliru, namespace keliru), pengidentifikasi yang salah (kegagalan checksum IBAN, BIC yang cacat bentuk), total kendali yang rusak (NbOfTxs / CtrlSum tidak cocok dengan transaksinya), dan karakter di luar set Latin ISO 20022. Pain001 memeriksa keempatnya bahkan sebelum berkasnya ada: validasi JSON Schema per rekaman, pemeriksaan IBAN mod-97 dan BIC ISO 9362, total kendali yang dihitung ulang, transliterasi set karakter, dan validasi XSD akhir atas XML yang telah dirender.

Bisa. Gunakan pain001 --dry-run (atau subperintah validate, atau POST /api/v1/validate). Kode keluar 0 berarti valid; 1 berarti validasi gagal disertai kesalahan pada tingkat bidang. Sambungkan ke CI atau ke daftar periksa prapengiriman.

Lima rulebook skema tersedia secara bawaan: SEPA Credit Transfer (sepa-sct), SEPA Instant (sepa-inst), SEPA Direct Debit Core (sepa-sdd), SEPA B2B (sepa-b2b), dan transfer kredit lintas negara (xborder-ct). Gunakan --scheme <name> --explain untuk melihat setiap aturan yang lolos atau gagal.

Excel diam-diam mengubah string mirip IBAN menjadi angka. Loader Excel membaca .xlsx/.xlsm secara langsung dan berhenti total jika kolom IBAN berisi sel numerik, sehingga kerusakannya tertangkap saat pemuatan, bukan di bank.

--streaming memproses input dalam bagian-bagian dengan batas memori (bawaan 1,000 transaksi), masing-masing dikeluarkan sebagai berkas XML tersendiri dengan total kendali yang dihitung ulang secara benar. REST API menyediakan POST /api/v1/generate/async dengan pemantauan pekerjaan untuk alasan yang sama.


Untuk insinyur dan arsitek#

Ketiganya tersedia sebagai permukaan kelas satu: Python API bertipe, CLI dengan kode keluar yang ramah CI, dan layanan mikro FastAPI (pain001 serve) dengan endpoint sinkron, pekerjaan asinkron, kesehatan, serta metrik Prometheus. Alur validasi yang sama berada di baliknya, sehingga hasilnya tidak pernah berbeda antarpermukaan.

Nominal ditangani sebagai decimal.Decimal dari ujung ke ujung dalam pembuatan dan validasi skema. Nilainya diurai sebagai desimal eksak, dijumlahkan sebagai desimal eksak, dan dirender tanpa representasi float. Total kendali dihitung ulang dari rekaman yang tervalidasi, tidak pernah dipercaya begitu saja dari input.

Seluruh penguraian XML dialirkan melalui defusedxml (memblokir serangan XXE dan pemekaran entitas); tidak ada lxml dalam pohon dependensinya. Input melewati validator path traversal. Image Docker berjalan sebagai non-root. SBOM CycloneDX dihasilkan untuk rilis inti, dan penemuan plugin pihak ketiga dapat dimatikan sepenuhnya dengan PAIN001_DISABLE_PLUGINS=1.

Cakupan baris dan cabang 100% sebagai gerbang CI yang keras pada bagian inti (dapat diverifikasi: 3,828 baris, 926 cabang pada 100%), mypy ketat, cakupan docstring 100%, linting keamanan Bandit dan pip-audit, serta pemindaian CodeQL. Paket pendampingnya menerapkan disiplin cakupan 100% yang sama.

Bisa, melalui empat grup entry point plugin (pain001.loaders, pain001.validators, pain001.schemes, pain001.writers). Loader Excel itu sendiri adalah plugin yang menggunakan protokol publik tersebut, sehingga sekaligus berfungsi sebagai implementasi rujukan.


Untuk auditor dan kepatuhan#

Bisa. Kunci versi paketnya, jalankan ulang input yang sama, dan keluarannya bersifat deterministik. Karena rantai perkakasnya bersumber terbuka, jejak auditnya meluas hingga ke jalur kodenya sendiri, bukan sekadar atestasi vendor.

Tidak. Setiap komponen (CLI, pustaka, REST API, server MCP, LSP) berjalan secara lokal. Tidak ada telemetri, tidak ada callback SaaS, tidak ada layanan validasi eksternal. Server MCP hanya berkomunikasi melalui stdio dan seluruh 17 alatnya dianotasi sebagai read-only dan idempoten.

Sebastien Rousseau, seorang pemimpin rekayasa fintech yang berbasis di London, bersama para kontributor komunitas. Pengembangannya terbuka untuk umum di GitHub, rilisnya dipublikasikan ke PyPI, dan changelog-nya diberi versi pada setiap rilis.