Free pain.001 validator
Validate pain.001 files before your bank does
Free checks for ISO 20022 pain.001 credit transfer files: XML, the ISO 20022 schema and SEPA Credit Transfer rules. Every finding says what is wrong, where, and how to fix it. No account needed.
For treasury, payments and SAP or TMS teams: check the file, then compare it with the last file your bank accepted.
Drop a file. I’ll find the bugs before your bank does.
Drop a pain.001 payment file or choose one.
Processed in memory and never stored. Maximum 5 MB.
No file at hand? Try a synthetic sample:All sample files
How it works
1 Drop your file
A pain.001 from SAP, a TMS or a bank portal. It is read in memory and never stored.
2 Linty checks it
XML, the ISO 20022 schema and SEPA Credit Transfer rules: 64 deterministic rules, no guessing.
3 Fix it before the bank sees it
Every finding says what is wrong, where and how to fix it. Then compare the next file with one your bank accepted.
What BankLint checks
- XML: the file is well-formed and readable.
- Message: pain.001.001.09 or pain.001.001.03 is detected.
- ISO 20022 schema: mandatory elements, order, lengths, formats and codes from the official XSD.
- SEPA Credit Transfer: the EPC customer-to-PSP rules, such as SLEV charge bearer, EUR only, two decimals, IBAN and BIC usage, 70-character names and the SEPA character set (pain.001.001.09; .03 files get the XML and schema checks).
FAIL means a blocker the bank is likely to reject. REVIEW means warnings that depend on your agreement with the bank, or a configuration change compared with your baseline. PASS means no blockers and no warnings.
See all 64 rules in the rule reference, and the standards they come from on Standards and sources.
Regression testing for payment files
A file can pass every rule and still differ from what your bank accepted last month. BankLint compares the configuration of each new file with a bank-accepted baseline, not the payments themselves, so other payees, amounts and counts do not raise noise.
Create a free FlowHow regression testing works
Sign-in uses Google; the consent screen shows gravam.com, the operator’s domain.
Plans
| Free | BankLint Payments Assurance: €49 per month |
|---|---|
| File checks on this page, no account needed. Signed in: check history and 1 Flow with a bank-accepted baseline and comparison. | Everything in Free, per workspace: up to 100 active Flows and Ask BankLint AI explanations. Cancel any time. |
BankLint is in public beta. Payment is handled by Stripe; see the terms.
Guides
- How to validate a pain.001 payment file
- pain.001.001.09 XML example for a SEPA credit transfer
- pain.001 XSD validation errors and how to fix them
- Why banks reject pain.001 files
- Structured, hybrid and unstructured addresses in SEPA pain.001
- pain.001.001.03 vs pain.001.001.09: what changed and how to migrate
Questions
What is a pain.001 file?
pain.001 (CustomerCreditTransferInitiation) is the ISO 20022 XML message a company sends to its bank to initiate credit transfers, usually generated by an ERP or treasury system such as SAP.
What does BankLint check?
XML well-formedness, the message version, the official ISO 20022 schema (XSD) for pain.001.001.09 and pain.001.001.03, and the SEPA Credit Transfer rules of the EPC customer-to-PSP implementation guidelines (2025 version 1.0) for pain.001.001.09.
Is my payment file stored?
No. The file is processed in memory and not stored, and its name never leaves your browser. Signed-in checks keep only a sanitized result: no names, accounts or amounts.
Is it free?
Validation on this page is free and needs no account. Signing in with Google gives you one free Flow with a baseline and history. The paid plan (€49 per month per workspace) adds up to 100 active Flows and Ask BankLint AI explanations. BankLint is in public beta.
How files, evidence and AI are handled: Security.