Skip to content

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

Read locally by your browser — never uploaded

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.

0 bytes of your file are uploaded; the only requests are anonymous counters (a page view, a file opened). Check it yourself in your browser’s developer tools (Network tab).

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.

pain001-sepa.xmlExcerpt of the sample file1 block · 3 payments
  • Accounts & IDs
  • Amounts
  • Dates
  • Names & text
  • Codes
  • Reserved

Lines 5–64 · header, block, first payment

A SEPA credit transfer, field by field

  1. 1Control totals3 · 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
  2. 2Method & service levelTRF · SEPAA credit transfer under the SEPA rulebook: euro only, accounts by IBAN, charges SLEV
  3. 3Requested execution date2035-01-04The day the bank debits the account. A date in the past is rejected or moved
  4. 4End-to-end idNW-2026-311Set by you and carried unchanged to the creditor, onto statements and into status reports
  5. 5Instructed amount2500.002,500.00 EUR. SEPA allows 0.01 to 999,999,999.99 with two decimals
  6. 6CreditorProseware SARLUp to 70 characters in SEPA, in the Latin character set
  7. 7Creditor IBANFR14 2004 1010 0505 0001 3M02 606Check digits 14 pass the mod-97 test. The BIC above it is optional in SEPA
  8. 8RemittanceInvoice 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

    NbOfTxs counts the transactions and CtrlSum adds 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, SLEV charges, 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

    EndToEndId comes back on the creditor’s statement, your camt.053 and any pain.002; keep it unique. InstrId is 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: AC01 incorrect account number, AM04 insufficient 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.

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

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

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

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