SEPA XML file rejected: what the error codes mean and how to fix them

Blog · 2026-10-03 · 4 min read

Free tool: Rebuild the file with PayBatchKit – runs in your browser, files are not uploaded.

You uploaded a SEPA credit transfer file (pain.001) and the bank said no. There are two ways this happens:

  1. Immediately on upload: online banking shows "invalid file", "schema validation failed" or similar. The file is not valid XML for the version the bank expects.
  2. Later, in a status report: the bank accepted the upload, then sent back a pain.002 "payment status report" with the status RJCT (rejected) or PART (partly accepted) and one or more reason codes.

The reason codes come from the ISO 20022 external code list ExternalStatusReason1Code. Every bank uses a subset, but the meaning is the same everywhere.

Rejections of the whole file

CodeMeaningUsual causeFix
FF01File format incomplete or invalidXML does not match the schema: wrong pain version, a missing element, an amount written 1250,00 instead of 1250.00, a date like 2026-02-30.Validate against the XSD of the version your bank wants; regenerate rather than hand-edit.
AM10 / AM16 / AM17Control sum invalid (overall, group level, payment-information level)CtrlSum no longer matches the amounts – typically after someone deleted a payment from the XML by hand.Recalculate in cents; CtrlSum appears in GrpHdr and in each PmtInf.
AM18 / AM19 / AM20Number of transactions invalidNbOfTxs does not match the number of CdtTrfTxInf blocks.Same as above: regenerate after every change.
DU01Message identification is not uniqueThe same MsgId was uploaded before – often a re-upload of a corrected file.Give every file a new MsgId.
DU02Payment information block is not uniqueA reused PmtInfId.New ID per batch.
AM05DuplicationThe bank thinks the same file or payment was already submitted.Check the payment overview before re-sending – the first upload may have gone through.
CH04 / CH03 / DT01Execution date too far in the past / too far in the future / invalid dateAn old file re-used, or a typo in ReqdExctnDt.Use today or a future business day; some banks cap how far ahead you can schedule.
FF04Service level code missing or invalidSvcLvl/Cd is not SEPA, or a non-SEPA payment is in a SEPA file.Use SEPA, EUR, and SEPA-country IBANs only.

Rejections of single payments

CodeMeaningUsual causeFix
AC01Incorrect account numberIBAN typo or wrong length.Check the IBAN – the IBAN checker catches almost all typos with the mod-97 check digits.
AC04 / AC06Account closed / blockedA valid IBAN, but the account is no longer usable.Ask the payee for new details; no format tool can detect this.
RC01Bank identifier incorrectA wrong or outdated BIC.Inside the EEA you can usually leave the BIC out; otherwise correct it.
BE04Missing creditor addressSome payments (for example to non-EEA SEPA countries such as Switzerland or the UK) need the payee's address.Add town and country (or a full structured address). See structured addresses.
AM04Insufficient fundsNot enough money on your account at execution.Fund the account or split the batch.
AM02 / AM21Amount not allowed / above the limit agreed with the bankA payment or file above your daily or per-file limit.Ask your bank to raise the limit or split the file.

Upload errors without a code

A checklist before you upload

  1. Every IBAN passes mod-97, every amount has at most two decimals and uses a dot in the XML.
  2. NbOfTxs and CtrlSum match, at both levels.
  3. A new MsgId for every upload.
  4. The execution date is a real, future business day.
  5. The version is the one your bank documents.
  6. After uploading, compare the bank's preview (count and total) with your sheet before you approve.
Avoid the hand edits: PayBatchKit rebuilds the whole pain.001 from your Excel or CSV – IBAN check digits, character set, counts, control sums, a fresh message ID, and warnings for past or weekend execution dates. Our tests validate the output against the official ISO 20022 XSDs. It runs in your browser; your payment list is not uploaded.

Reason codes and their use differ by bank: your bank's own pain.002 specification is the final word. This page is general information, not banking advice.

Free tool: Rebuild the file with PayBatchKit – runs in your browser, files are not uploaded.

Sources

Related guides

Published 2026-10-03 by Karuna Labs. Our tools check file structure and checksums; always review outputs (and payment files in your bank's preview) before relying on them. This is general information, not financial, tax or legal advice.