Jawapan yang jelas untuk pegawai perbendaharaan, operasi pembayaran, jurutera dan juruaudit. Soalannya dirangka sebagaimana orang benar-benar menanyakannya. Untuk butiran teknikal yang lebih mendalam, lihat Rujukan Teknikal.
Untuk pemimpin perbendaharaan dan kewangan#
Apakah itu pain.001, dalam satu perenggan?
pain.001 ialah mesej ISO 20022 yang dihantar oleh pelanggan kepada banknya untuk memulakan pindahan kredit — pengganti XML bagi format seperti SWIFT MT101 dan fail rata domestik. Bank anda mengesahkannya terhadap sesuatu skema dan rulebook skim sebelum menerimanya. Pain001 (perisiannya) menghasilkan fail tersebut daripada data yang sudah anda miliki dan membuktikan bahawa fail itu sah sebelum anda menghantarnya.
Apakah perbezaan antara pain.001 dan pain.008?
Arah aliran dananya. pain.001 memulakan pindahan kredit — anda menolak wang keluar. pain.008 memulakan debit terus — anda mengutip wang yang terhutang kepada anda di bawah sesuatu mandat. Pain001 menjana kedua-duanya: sepuluh versi pain.001 (.001.03 hingga .001.12) dan pain.008.001.02.
Kami masih menghantar fail MT101. Sejauh manakah mendesaknya migrasi ini?
Sangat mendesak. SWIFT menamatkan mesej MT kategori 1, 2 dan 9 bagi arahan pembayaran antara bank rentas sempadan pada November 2025; saluran korporat yang masih menerima MT berbuat demikian atas budi bicara setiap bank dan hanya buat sementara waktu. Loader MT101 menukarkan aliran MT101 sedia ada kepada pain.001 yang disahkan tanpa perlu menaip semula apa-apa.
Apakah maksud tarikh akhir alamat berstruktur November 2026 bagi kami?
Mulai akhir November 2026, alamat pos yang sepenuhnya tidak berstruktur tidak lagi diterima dalam pembayaran rentas sempadan CBPR+; alamat mesti berstruktur atau hibrid — elemen berasingan seperti bandar () dan negara () dan bukannya baris teks bebas. Jika data induk anda menyimpan alamat sebagai gumpalan teks, kerjanya terletak pada data anda, bukan pada sambungan bank anda. Mulakan di situ. Taklimat 2026 membincangkan garis masanya secara terperinci.
Berapakah kos Pain001?
Tiada kos. Bahagian terasnya berlesen dwi Apache-2.0 / MIT; pakej pendampingnya berlesen Apache-2.0. Penggunaan komersial, pengubahsuaian dan pengedaran semula semuanya dibenarkan. Sebagai rujukan skala, SDK terjemahan SWIFT sahaja disenaraikan pada €10,000–30,000 setahun.
Untuk operasi pembayaran#
Mengapakah bank menolak fail pembayaran?
Empat punca yang berulang: pelanggaran skema (elemen salah, versi salah, namespace salah), pengecam yang tidak sah (kegagalan checksum IBAN, BIC yang cacat), jumlah kawalan yang rosak (NbOfTxs / CtrlSum tidak sepadan dengan transaksinya) dan aksara di luar set Latin ISO 20022. Pain001 memeriksa kesemua empat sebelum fail itu wujud: pengesahan JSON Schema bagi setiap rekod, pemeriksaan IBAN mod-97 dan BIC ISO 9362, jumlah kawalan yang dikira semula, transliterasi set aksara, serta pengesahan XSD akhir terhadap XML yang telah dijana.
Bolehkah kami mengesahkan sesuatu fail tanpa menjana apa-apa?
Boleh — pain001 --dry-run (atau subperintah validate, atau POST /api/v1/validate). Kod keluar 0 bermakna sah; 1 bermakna pengesahan gagal dengan ralat pada peringkat medan. Sambungkannya ke CI atau ke senarai semak sebelum penghantaran.
Rulebook SEPA yang manakah dirangkumi?
Lima rulebook skim disertakan secara terbina dalam: SEPA Credit Transfer (sepa-sct), SEPA Instant (sepa-inst), SEPA Direct Debit Core (sepa-sdd), SEPA B2B (sepa-b2b) dan pindahan kredit rentas sempadan (xborder-ct). Gunakan --scheme untuk melihat setiap peraturan yang lulus atau gagal.
Data kami tersimpan dalam Excel. Apakah risikonya?
Excel secara senyap menukarkan rentetan yang menyerupai IBAN kepada nombor. Loader Excel membaca .xlsx/.xlsm secara terus dan berhenti terus jika lajur IBAN mengandungi sel berangka — kerosakan itu ditangkap semasa pemuatan, bukan di bank.
Bagaimanakah ia mengendalikan kelompok 500,000 baris?
--streaming memproses input dalam bahagian yang terbatas memori (lalai 1,000 transaksi), setiap satunya dikeluarkan sebagai fail XML tersendiri dengan jumlah kawalan yang dikira semula dengan betul. REST API menawarkan POST /api/v1/generate/async dengan pemantauan kerja atas sebab yang sama.
Untuk jurutera dan arkitek#
Bagaimanakah kami mengintegrasikannya — pustaka, CLI atau API?
Ketiga-tiganya wujud sebagai permukaan kelas pertama: Python API bertaip, CLI dengan kod keluar yang mesra CI, dan perkhidmatan mikro FastAPI (pain001 serve) dengan titik akhir segerak, kerja tak segerak, kesihatan dan metrik Prometheus. Saluran pengesahan yang sama berada di sebaliknya, jadi hasilnya tidak pernah berbeza antara permukaan.
Adakah penjanaan XML benar-benar selamat daripada pembundaran apungan?
Amaun ialah decimal.Decimal dari hujung ke hujung dalam penjanaan dan pengesahan skim — dihurai sebagai perpuluhan tepat, dijumlahkan sebagai perpuluhan tepat, dan dijana tanpa perwakilan apungan. Jumlah kawalan dikira semula daripada rekod yang telah disahkan, tidak pernah dipercayai terus daripada input.
Apakah postur keselamatannya?
Semua penghuraian XML disalurkan melalui defusedxml (menyekat serangan XXE dan pengembangan entiti); tiada lxml dalam pepohon kebergantungan. Input melalui pengesah path traversal. Imej Docker berjalan sebagai bukan root. SBOM CycloneDX dijana bagi keluaran teras, dan penemuan plugin pihak ketiga boleh dilumpuhkan sepenuhnya dengan PAIN001_DISABLE_PLUGINS=1.
Bagaimanakah kualiti dikuatkuasakan?
Liputan baris dan cabang 100% sebagai get CI yang tegas pada bahagian teras (boleh disahkan: 3,828 baris, 926 cabang pada 100%), mypy ketat, liputan docstring 100%, linting keselamatan Bandit dan pip-audit, serta imbasan CodeQL. Pakej pendampingnya mengamalkan disiplin liputan 100% yang sama.
Bolehkah kami memperluasnya untuk format proprietari?
Boleh — empat kumpulan entry point plugin (pain001.loaders, pain001.validators, pain001.schemes, pain001.writers). Loader Excel itu sendiri ialah plugin yang menggunakan protokol awam tersebut, jadi ia sekali gus menjadi pelaksanaan rujukan.
Untuk juruaudit dan pematuhan#
Bolehkah kami menghasilkan semula fail yang dijana pada suku tahun lalu?
Boleh. Kunci versi pakejnya, mainkan semula input yang sama, dan outputnya bersifat deterministik. Oleh sebab rantaian alatannya bersumber terbuka, jejak auditnya menjangkau sehingga ke laluan kodnya sendiri — bukan sekadar atestasi vendor.
Adakah data pembayaran keluar daripada persekitaran kami?
Tidak. Setiap komponen — CLI, pustaka, REST API, pelayan MCP, LSP — dijalankan secara setempat. Tiada telemetri, tiada panggilan balik SaaS, tiada perkhidmatan pengesahan luaran. Pelayan MCP hanya berkomunikasi melalui stdio dan kesemua 17 alatnya dianotasikan sebagai read-only dan idempoten.
Siapakah yang menyelenggara Pain001?
Sebastien Rousseau, seorang pemimpin kejuruteraan fintech yang berpangkalan di London, bersama para penyumbang komuniti. Pembangunannya terbuka kepada umum di GitHub, keluarannya diterbitkan ke PyPI, dan changelog-nya diberi versi pada setiap keluaran.