ISO 20022 reason code
FF01: Invalid file format
The file or message is not in a format the bank accepts (schema or syntax error). FF01 is an ISO 20022 reason code used as a status reason: you will see it in pain.002.
| Code | FF01 |
|---|---|
| Name | Invalid file format |
| ISO code lists | ExternalStatusReason1Code (status reason) |
| Where | StsRsnInf/Rsn/Cd |
What FF01 means
The file or message failed the bank’s format checks: XML that breaks the schema, a message version the bank does not accept, or invalid codes.
Not to be confused with: FF01 is the file or message format; AM10 is a readable file whose totals are wrong, and AG02 a readable file with a code the bank does not accept.
A reason code always comes with a status or an action: on its own it says why, not what happened. In a status report look at the status next to it (RJCT means the payment will not be executed); on a statement the returned entry tells you the money has come back.
Where FF01 appears
FF01 belongs to one of the ISO 20022 reason code lists, so it can arrive in this place:
- Status reason (ExternalStatusReason1Code): in a payment status report (pain.002 from a bank to its customer, pacs.002 between banks) that rejects or holds a payment.
In a status report, FF01 explains a status such as RJCT, at transaction level here (the same StsRsnInf block can sit under the group or a payment block):
<OrgnlPmtInfAndSts>
<OrgnlPmtInfId>PMT-20261028-03</OrgnlPmtInfId>
<TxInfAndSts>
<OrgnlEndToEndId>INV-2026-0042</OrgnlEndToEndId>
<TxSts>RJCT</TxSts>
<StsRsnInf>
<Rsn>
<Cd>FF01</Cd>
</Rsn>
<AddtlInf>Free text from the bank, if any</AddtlInf>
</StsRsnInf>
</TxInfAndSts>
</OrgnlPmtInfAndSts>What to do about FF01
- If you sent the payment or the collection: Check the file against the message version your bank expects (the namespace says which one it is). The Payment File Viewer shows structural problems with their line numbers before you upload.
Your bank’s implementation guide and the scheme’s rulebook (for SEPA, the EPC rulebooks) say exactly when it may use FF01; banks do not all apply a code the same way.
Look up FF01 from a script or an AI agent
Scripts and AI agents get this code’s name, definition, where it sits and the address of this page from GET /api/v1/explain, keyless, or from the explain_code tool of the MCP server (API and MCP docs; add it to Claude, Cursor or VS Code).
curl -s 'https://iso20022-navigator.com/api/v1/explain?code=FF01&kind=status_reason'