Free pain.001 validator & ISO 20022 payment file viewer
Check a payment file before the bank does.
Open a credit transfer (pain.001) or direct debit (pain.008) file to see every block and payment, with control totals, IBANs, BICs and SEPA rules checked — or a status report (pain.002) with every rejection explained. Everything happens in your browser; no data is sent to any server.
- Control totals recounted
- IBAN, BIC & SEPA checks
- Rejection reasons explained
Drag & drop a payment file hereOpen a payment file
Or click to browse. Reads pain.001, pain.008 and pain.002 XML, versions .02 to .13
More samples:
100% in-browser.
Your file never leaves this device.
Parsed on your device
JavaScript on this page reads the file. Nothing is uploaded, stored or transmitted.
No account, no cost
Every tool is free to use. No sign-up, no paywall, ever.
Open about usage
Our public analytics show exactly what we count — never what your files contain.
Anatomy of a pain.001
Header, block and payment, decoded.
A payment file is XML in three layers: a group header with the totals, payment blocks that share a debit account and date, and the transactions inside them. The viewer names every tag, explains every code and checks every value.
- Accounts & IDs
- Amounts
- Dates
- Names & text
- Codes
- Reserved
Lines 5–64 · header, block, first payment
A SEPA credit transfer, field by field
- 1Control totals
3 · 6370.45Three payments adding up to 6,370.45. The group header and every block declare both; banks reject a file when they don’t add up - 2Method & service level
TRF · SEPAA credit transfer under the SEPA rulebook: euro only, accounts by IBAN, charges SLEV - 3Requested execution date
2035-01-04The day the bank debits the account. A date in the past is rejected or moved - 4End-to-end id
NW-2026-311Set by you and carried unchanged to the creditor, onto statements and into status reports - 5Instructed amount
2500.002,500.00 EUR. SEPA allows 0.01 to 999,999,999.99 with two decimals - 6Creditor
Proseware SARLUp to 70 characters in SEPA, in the Latin character set - 7Creditor IBAN
FR14 2004 1010 0505 0001 3M02 606Check digits 14 pass the mod-97 test. The BIC above it is optional in SEPA - 8Remittance
Invoice 2026-311Free text up to 140 characters, or one structured creditor reference (RF…), not both
A short pain primer
Three messages, one payment conversation.
Companies send payment instructions to their bank as pain.001 (credit transfers) or pain.008 (direct debits), and the bank answers with pain.002. The same blocks, parties and references run through all three.
- pain.001Credit transfer initiationYou → your bank: pay these creditors. Payments are grouped in blocks (PmtInf) that share a debit account, date and method. Replaces MT101 and many local formats.
- pain.008Direct debit initiationYou → your bank: collect from these debtors, each under a signed mandate, with your creditor identifier. Replaces MT104.
- pain.002Payment status reportYour bank → you: accepted, pending or rejected, for the whole file, a block or one transaction, with a reason code for each rejection.
Statuses you will meet in a pain.002
- ACTC
- Accepted technical validation. Syntax and authentication checks passed.
- ACCP
- Accepted customer profile. Technical checks and the customer profile checks passed.
- ACSP
- Accepted settlement in process. All checks passed and the payment is being executed.
- ACSC
- Accepted settlement completed. Settled on the debtor’s account.
- PDNG
- Pending. Waiting on further checks; the status will change.
- PART
- Partially accepted. Some transactions accepted; others not yet accepted (pending or rejected); see the transaction statuses. A group or block status only.
- RJCT
- Rejected. Rejected: the payment will not be executed. The reason code says why.
Totals must add up
NbOfTxscounts the transactions andCtrlSumadds their amounts, in the group header and again in each block. The viewer recounts both levels and shows declared against computed.SEPA has its own rules
When the service level is
SEPA: euro only, IBANs,SLEVcharges, names up to 70 characters in the Latin set, one remittance line of 140 or one structured reference. Direct debits add the creditor id, mandate and sequence type.References travel end to end
EndToEndIdcomes back on the creditor’s statement, your camt.053 and any pain.002; keep it unique.InstrIdis only between you and your bank.pain.002 closes the loop
The bank answers per file (
GrpSts), block (PmtInfSts) or payment (TxSts). A rejection carries a reason:AC01incorrect account number,AM04insufficient funds.
Every status and reason code, and the whole message family, are in the ISO 20022 reference.
What it shows
From raw XML to a payment run you can check.
Every view shares one selection: open a payment and its XML lines, its place in the tree and its values follow.
No. 01
Payments
Each block: method, service level, local instrument, sequence type, requested date, the ordering account and bank, control totals checked. Every transaction with its counterparty, account, bank, amount, remittance and mandate.
No. 02
Status reports
pain.002 read the way an ops team reads it: the original file, group, block and transaction statuses in words, every reason code named and explained, and a filter for the rejections.
No. 03
Structure & XML
The message as a tree, and the raw XML with line numbers, values coloured by what they hold and an inspector that decodes codes, amounts, IBANs and BICs.
No. 04
Validation
Control totals, IBAN check digits, BIC format, currency decimals, SEPA rules, duplicate references and past execution dates — each with its line and the rule behind it.
Related tools
More free tools for payment files.
The same private, in-browser approach for bank statements and SWIFT MT940 — and an API and MCP server for agents.
camt.053 · camt.052 · camt.054
camt Statement Viewer
Bank statements and intraday reports per account: balances with their codes explained, every entry and its references, and the roll-forward checked.
.xml · .camt · .053
- Converter
SWIFT MT940 · MT942
MT940 Viewer
Every :61: statement line decoded, structured :86: details read, balances rolled forward — and the whole file converted to camt.053.001.08.
.sta · .940 · .mt940 · .txt