Pain001

Tuwirang mga sagot para sa mga treasurer, payment operations, inhinyero, at auditor. Ang mga tanong ay isinusulat ayon sa aktwal na pagtatanong ng mga tao. Para sa mas malalim na teknikal na detalye, tingnan ang Teknikal na Sanggunian.


Para sa mga lider ng treasury at pananalapi#

Ano ang pain.001, sa isang talata?

Ang pain.001 ay ang ISO 20022 na mensaheng ipinapadala ng isang customer sa kaniyang bangko upang simulan ang mga credit transfer — ang XML na kapalit ng mga format tulad ng SWIFT MT101 at mga lokal na flat file. Vina-validate ito ng inyong bangko laban sa isang schema at isang scheme rulebook bago ito tanggapin. Ang Pain001 (ang software) ay bumubuo ng mga file na iyon mula sa data na mayroon na kayo at pinatutunayang wasto ang mga ito bago ninyo isumite.

Ano ang pagkakaiba ng pain.001 at pain.008?

Ang direksyon ng paggalaw ng pera. Sinisimulan ng pain.001 ang mga credit transfer — nagpapadala kayo ng pera palabas. Sinisimulan ng pain.008 ang mga direct debit — sinisingil ninyo ang perang inutang sa inyo sa ilalim ng isang mandato. Binubuo ng Pain001 ang dalawa: sampung bersyon ng pain.001 (.001.03 hanggang .001.12) at pain.008.001.02.

Nagpapadala pa rin kami ng mga MT101 file. Gaano kaagad kailangan ang migration?

Kagyat. Itinigil na ng SWIFT ang mga mensaheng MT category 1, 2 at 9 para sa cross-border na interbank na mga tagubilin sa pagbabayad noong Nobyembre 2025; ang mga corporate channel na tumatanggap pa rin ng MT ay ginagawa iyon ayon sa pagpapasya ng bawat bangko at sa hiram na oras. Kino-convert ng MT101 loader ang mga umiiral na MT101 flow sa validated na pain.001 nang walang muling ini-encode.

Ano ang ibig sabihin sa amin ng deadline ng structured address sa Nobyembre 2026?

Mula sa katapusan ng Nobyembre 2026, hindi na tinatanggap ang ganap na unstructured na mga postal address sa CBPR+ na cross-border na pagbabayad; ang mga address ay dapat structured o hybrid — mga hiwalay na elemento tulad ng bayan () at bansa () sa halip na mga free-text na linya. Kung ang inyong master data ay nag-iimbak ng mga address bilang mga blob, ang trabaho ay nasa inyong data, hindi sa inyong koneksyon sa bangko. Magsimula roon. Tinatalakay nang detalyado ng Briefing sa 2026 ang timeline.

Magkano ang Pain001?

Wala. Ang core ay dual-licensed na Apache-2.0 / MIT; ang mga companion package ay Apache-2.0. Pinapayagan lahat ang komersyal na paggamit, pagbabago, at muling pamamahagi. Bilang sanggunian sa laki, ang translation SDK lamang ng SWIFT ay nakalista sa €10,000–30,000 bawat taon.


Para sa payment operations#

Bakit tinatanggihan ng mga bangko ang mga payment file?

Apat na paulit-ulit na sanhi: mga paglabag sa schema (maling elemento, maling bersyon, maling namespace), masasamang identifier (bigo ang IBAN checksum, mga maling BIC), sirang control total (hindi tugma ang NbOfTxs / CtrlSum sa mga transaksyon), at mga character na wala sa ISO 20022 Latin set. Sinusuri ng Pain001 ang lahat ng apat bago pa umiral ang file: JSON Schema validation bawat record, mod-97 IBAN at ISO 9362 BIC na pagsusuri, muling kinuwentang control total, transliteration ng charset, at panghuling XSD validation ng na-render na XML.

Maaari ba naming i-validate ang isang file nang walang binubuong anuman?

Oo — pain001 --dry-run (o ang validate subcommand, o POST /api/v1/validate). Ang exit code na 0 ay nangangahulugang wasto; ang 1 ay nangangahulugang bigo ang validation na may mga error sa antas ng field. Ikonekta ito sa CI o sa isang checklist bago magsumite.

Aling mga SEPA rulebook ang saklaw?

Limang scheme rulebook ang built-in: SEPA Credit Transfer (sepa-sct), SEPA Instant (sepa-inst), SEPA Direct Debit Core (sepa-sdd), SEPA B2B (sepa-b2b), at cross-border credit transfer (xborder-ct). Gamitin ang --scheme --explain upang makita ang bawat panuntunang pumasa o bumagsak.

Nasa Excel ang aming data. Ano ang panganib?

Tahimik na ginagawang numero ng Excel ang mga string na parang IBAN. Direktang binabasa ng Excel loader ang .xlsx/.xlsm at agad na humihinto kung ang mga IBAN column ay naglalaman ng mga numeric na cell — nahuhuli ang pagkasira sa pag-load, hindi sa bangko.

Paano nito hinahawakan ang isang batch na may 500,000 row?

Pinoproseso ng --streaming ang input sa memory-bounded na mga chunk (default na 1,000 transaksyon), bawat isa ay inilalabas bilang sarili nitong XML file na may tamang muling kinuwentang control total. Nag-aalok ang REST API ng POST /api/v1/generate/async na may job polling para sa parehong dahilan.


Para sa mga inhinyero at arkitekto#

Paano namin ito ii-integrate — library, CLI, o API?

Umiiral ang lahat ng tatlo bilang mga first-class na surface: isang typed na Python API, isang CLI na may CI-friendly na mga exit code, at isang FastAPI microservice (pain001 serve) na may sync, async-job, health, at Prometheus metrics na mga endpoint. Iisang validation pipeline sa ilalim, kaya hindi kailanman nagkakaiba ang mga resulta sa pagitan ng mga surface.

Talaga bang ligtas ang pagbuo ng XML laban sa float rounding?

Ang mga halaga ay decimal.Decimal mula simula hanggang wakas sa pagbuo at scheme validation — pina-parse bilang eksaktong decimal, sinusuma bilang eksaktong decimal, nire-render nang walang float na representasyon. Ang mga control total ay muling kinukuwenta mula sa mga na-validate na record, hindi kailanman pinagkakatiwalaan mula sa input.

Ano ang security posture?

Lahat ng XML parsing ay dumadaan sa defusedxml (hinaharangan ang XXE at entity-expansion na mga atake); walang lxml sa dependency tree. Ang mga input ay dumadaan sa isang path-traversal validator. Non-root na tumatakbo ang Docker image. Isang CycloneDX SBOM ang binubuo para sa mga core release, at ang third-party na pagtuklas ng plugin ay maaaring tuluyang i-disable gamit ang PAIN001_DISABLE_PLUGINS=1.

Paano ipinapatupad ang kalidad?

100% line at branch coverage bilang mahigpit na CI gate sa core (nabe-verify: 3,828 linya, 926 branch sa 100%), mahigpit na mypy, 100% docstring coverage, Bandit at pip-audit na security linting, at CodeQL scanning. Dala rin ng mga companion package ang parehong disiplinang 100% coverage.

Maaari ba namin itong palawakin para sa isang proprietary na format?

Oo — apat na plugin entry-point group (pain001.loaders, pain001.validators, pain001.schemes, pain001.writers). Ang Excel loader mismo ay isang plugin na gumagamit ng pampublikong protocol, kaya nagsisilbi rin itong reference implementation.


Para sa mga auditor at compliance#

Maaari ba naming i-reproduce ang isang file na nabuo noong nakaraang quarter?

Oo. I-pin ang bersyon ng package, i-replay ang parehong input, at deterministic ang output. Dahil open source ang toolchain, umaabot ang audit trail hanggang sa mismong code path — hindi lamang sa attestation ng vendor.

Umaalis ba ang payment data sa aming kapaligiran?

Hindi. Bawat bahagi — CLI, library, REST API, MCP server, LSP — ay tumatakbo nang lokal. Walang telemetry, walang SaaS callback, walang panlabas na validation service. Ang MCP server ay nakikipag-usap lamang sa pamamagitan ng stdio at lahat ng 17 tool nito ay may anotasyong read-only at idempotent.

Sino ang nagme-maintain ng Pain001?

Si Sebastien Rousseau, isang lider sa fintech engineering na nakabase sa London, kasama ang mga contributor ng komunidad. Pampubliko ang development sa GitHub, ang mga release ay inilalathala sa PyPI, at ang changelog ay may bersyon sa bawat release.