BankLint

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. 1 Drop your file

    A pain.001 from SAP, a TMS or a bank portal. It is read in memory and never stored.

  2. 2 Linty checks it

    XML, the ISO 20022 schema and SEPA Credit Transfer rules: 64 deterministic rules, no guessing.

  3. 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.

Spot the bug: today’s puzzle is ready

One pain.001 fragment, one broken rule. Can you find it in a minute? A new one every day.

Play today’s puzzle

What BankLint checks

  1. XML: the file is well-formed and readable.
  2. Message: pain.001.001.09 or pain.001.001.03 is detected.
  3. ISO 20022 schema: mandatory elements, order, lengths, formats and codes from the official XSD.
  4. 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

FreeBankLint 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

All 19 guides

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.