Pain001: ISO 20022-Compliant Payment Files#
Pain001 generates and validates payment XML from tabular data. The bundled
templates cover pain.001.001.03 through pain.001.001.13, pain.008.001.02 and
pain.008.001.08. List the exact registry with pain001 versions; field
mappings are generated in Input columns: the flat vocabulary of the CSV pipeline, not duplicated here.
New to the message format? What is pain.001? explains its structure, versions and a complete, schema-valid example.
Generation validates rendered XML against the bundled XSD before writing. Schema validity is not proof of bank acceptance or regulatory compliance. Scenario confidence and evidence are documented in The example corpus.
Quality and availability#
CI enforces 100% line and branch coverage, lint, types and security checks. Python 3.10–3.14 is tested on Linux; development uses Python 3.12. Branch-only features and remaining acceptance criteria are recorded in Open-issue audit for feat/v0.0.71; source documentation is not a release announcement.
Getting started#
Install the package, then run these commands in a fresh writable directory:
pain001 init pain.001.001.03 -o payments.csv
pain001 validate -t pain.001.001.03 -d payments.csv
pain001 generate -t pain.001.001.03 -d payments.csv -o output
The scaffold is synthetic sample data. The output flag names a directory, not a filename. See Installation, Using Pain001, Configuration and pain001 for the supported surfaces.
Contents#
Documentation
- Installation
- Using Pain001
- Configuration
- Plugin architecture
- Request-local payment policies
- Explicit SFTP delivery
- Template Registry
- Version Migration
- Security
- Large-Batch Performance
- Performance Playbook
- Validate-Only And Streaming
- Additional Message Types
- Async Adapters
- Troubleshooting
- Testing Quality
- Structured Logging
- Examples
- Example 1: Basic SEPA Payment Processing
- Example 2: Batch Payment Processing from CSV
- Example 3: Database-Driven Payment Processing
- Example 4: Multi-Version Support
- Example 5: Error Handling and Logging
- Example 6: Large Batch Processing with Chunking
- Example 7: Payment Amount Validation
- Example 8: Custom Data Processing Pipeline
- See Also
- pain001
Additional Resources
Project
Assurance and policies
- Toolchain and contribution policies
- Scope comparison
- Benchmark methodology
- Verification coverage and limits
- Open-issue audit for feat/v0.0.71
- Code-scanning audit: feat/v0.0.71
- Assurance case
- Deployment cookbook: pain001 in production
- Quickstart: from CSV to validated ISO 20022 in 10 minutes
- Custom Validation with JSON Schemas
- 0001. Monotonic
0.0.xversioning and suite lockstep - 0002. Dual licence, Apache-2.0 OR MIT, declared with PEP 639
- 0003. Example corpus: two corpora, one engine, twelve scoped decisions
- 0004. Python floor policy
- 0005. Twins preserve pain.001; faces express it for a compatible standard
- 0006. Local policies and review-only corrections
- ADR-0007: Built-in rules do not depend on registry dispatch
- 0008. Preserve raw CSV values on ingress; formula neutralisation is opt-in
- Lessons from shipping a 100%-coverage ISO 20022 payment library
- Hacker News submission template