1. The bank's status report
A .xml file from your online banking or bank interface, starting with <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03">. It is the answer to the file you sent, not the file you sent.
Choose a file or paste the text, then click Read the report.
Result
What to fix, by kind of problem
| Kind of problem | Payments | Amount |
|---|
Rejections by reason code
| Code | Meaning | Payments | Amount |
|---|
Payments (IBANs masked)
| Line | EndToEndId | Status | Reason | Payee | Amount |
|---|
The model, and what it leaves out
- Versions: any
pain.002.001.xxnamespace is read by the same element names (OrgnlGrpInfAndSts,OrgnlPmtInfAndSts,TxInfAndSts,StsRsnInf);.03is the one it was written against and the others are best effort. - Status: ACTC, ACCP, ACSP, ACSC, ACCR, ACWC, ACWP, PART, PDNG, RCVD and RJCT, at file, block and payment level. A rejection is an error, a partial or pending status a warning.
- Reasons: about forty ISO external reason codes with a meaning, a kind of fix and an action. A code outside the table is shown as unknown, never guessed.
- Totals: rejected amounts are summed as exact decimals from the amounts the bank repeats in
OrgnlTxRef. If the bank does not repeat them the total is a lower bound and the page says so. - Counts: the number of payments listed is compared with the original file's count and with each block's own status counts. A shorter list is normal because banks often report only exceptions.
- Not done: matching the report to the file you sent, camt.053 and camt.054 statements, your bank's private codes, and resending or editing anything. A DTD is refused and never expanded.
Common questions
How do I read a SEPA pain.002 status report?
Paste the XML the bank returned or drop the file onto this page. It shows the status of the whole file, of each payment block and of each payment, turns every reason code into plain language with what to do about it, totals the rejected amount, and builds a list of the rejected payments you can download.
What does a pain.002 status like ACTC, ACCP, PART or RJCT mean?
ACTC means the bank can read the file and its technical checks passed. ACCP means it was accepted for processing, ACSP that settlement is in progress and ACSC that settlement is complete. PART means only some payments in the file were accepted, PDNG that the bank has not decided yet, and RJCT that the file, block or payment was rejected.
What do the rejection codes AC04, AM04, MD01 and AM10 mean?
AC04 is a closed account, so ask the payee for new account details. AM04 is insufficient funds on the account you pay from. MD01 is a direct debit without a valid mandate. AM10 is an invalid control sum, so the total in the file did not match the payments. This page explains about forty codes; a code it does not know is shown as unknown rather than guessed.
Why does my bank report only some of my payments?
Many banks list only the payments that need attention, so the report can be shorter than the file you sent. This page says so when the counts differ, and warns if the report lists more payments than your file had, which suggests it belongs to a different file.
Can I resend the rejected payments straight from this page?
No. The page never sends or edits anything. It gives you a list of the rejected payments with the reason, the category of fix and the action, as a CSV, so you can correct the data in your own system and generate a new file. Check first whether a rejected payment was in fact paid some other way, to avoid paying twice.
Is it safe to put a bank status report into a web page?
The page runs in your browser, the file is read locally and nothing is uploaded; a test in the code asserts there are no network calls. IBANs are masked in the report and the download. Names and references are shown as they appear in your file. Your own policies decide whether you may open a bank file in a browser.
What does this not do?
It does not know your bank's private reason codes, it does not check the report against the payment file you sent, it does not read camt.053 or camt.054 statements, and it covers pain.002.001.03 and later versions by namespace on a best-effort basis. A code table from memory is not your bank's documentation.