Pain001

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#

Apa itu pain.001, dalam satu paragraf?

pain.001 adalah pesan ISO 20022 yang dikirim nasabah kepada banknya untuk memulai transfer kredit — 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.

Apa perbedaan antara pain.001 dan pain.008?

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.

Kami masih mengirim berkas MT101. Seberapa mendesak migrasinya?

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.

Apa arti tenggat alamat terstruktur November 2026 bagi kami?

Mulai akhir November 2026, alamat pos yang sepenuhnya tidak terstruktur tidak lagi diterima dalam pembayaran lintas negara CBPR+; alamat harus terstruktur atau hibrida — elemen terpisah seperti kota () dan negara () 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.

Berapa biaya Pain001?

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#

Mengapa bank menolak berkas 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.

Bisakah kami memvalidasi berkas tanpa menghasilkan apa pun?

Bisa — 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.

Rulebook SEPA mana saja yang dicakup?

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 --explain untuk melihat setiap aturan yang lolos atau gagal.

Data kami tersimpan di Excel. Apa risikonya?

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 — kerusakannya tertangkap saat pemuatan, bukan di bank.

Bagaimana penanganannya untuk batch berisi 500,000 baris?

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

Bagaimana cara kami mengintegrasikannya — pustaka, CLI, atau API?

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.

Apakah pembuatan XML benar-benar aman dari pembulatan float?

Nominal ditangani sebagai decimal.Decimal dari ujung ke ujung dalam pembuatan dan validasi skema — 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.

Bagaimana postur keamanannya?

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.

Bagaimana kualitas ditegakkan?

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.

Bisakah kami memperluasnya untuk format berpemilik?

Bisa — 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#

Bisakah kami mereproduksi berkas yang dihasilkan kuartal lalu?

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.

Apakah data pembayaran keluar dari lingkungan kami?

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.

Siapa yang memelihara Pain001?

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.