ValidateFin

CFONB 120 Validator & Converter → camt.053

Open a French CFONB 120 statement, check that it reconciles, and export camt.053 — entirely in your browser, nothing uploaded.

CFONB 120AFB120camt.053 exportISO 20022100% local
100% Local

What is a CFONB 120 file and how do you convert it to camt.053?

CFONB 120 — also called AFB120 — is the French bank-statement format ("relevé de compte sur support informatique") standardised by the Comité Français d'Organisation et de Normalisation Bancaires: fixed-width records of exactly 120 characters, identified by their first two (01 old balance, 04 movement, 05 supplement, 07 new balance). It is the French counterpart of Belgian CODA, SWIFT MT940 and US BAI2. To convert a CFONB to ISO 20022 camt.053, drop the file on this page and click "Export camt.053": ValidateFin parses it locally, decodes the overpunched sign of every amount, checks that old balance ± movements equals the new balance, and produces a valid camt.053.001.02 statement. Nothing is uploaded.

Key facts

  • CFONB 120 (also called AFB120) is the French bank-statement format — fixed-width records of 120 characters.
  • Records: 01 old balance, 04 movement, 05 supplement, 07 new balance.
  • The sign is overpunched onto the last character of the amount (COBOL zoned decimal: {, A-I credit / }, J-R debit) — the trap of the format.
  • Checks the accounting identity the CFONB requires: old balance ± movements = new balance.
  • Converts to a valid camt.053.001.02 statement. 100% in your browser — no upload.

About the CFONB 120 validator & converter

A CFONB 120 file is a flat text file whose every line is exactly 120 characters. The record code sits in positions 1-2: 01 opens a statement with the old balance, 04 carries a movement, 05 attaches supplementary data to the movement above it, and 07 closes the statement with the new balance. This tool is built on the two official CFONB documents: the July 2004 layout ("Relevé de compte sur support informatique") and the March 2010 addendum, version 2.0, which defines the SEPA qualifiers carried by the 05 records — LIB, LCC/LC2 (remittance), RCN (end-to-end reference and purpose), REF, NPY/NBE (payer and beneficiary names), RUM (SEPA mandate reference and sequence type OOFF/FRST/RCUR/FNAL), MMO (original amount and exchange rate) and others.

The trap of this format — and the reason a naive parser silently corrupts every debit — is the amount field. It is 14 characters, but only the first 13 are plain digits: the sign is OVERPUNCHED onto the last one, a COBOL zoned-decimal encoding where "{" and "A"-"I" mean a credit of 0 to 9 and "}" and "J"-"R" mean a debit of 0 to 9. So "0000000012345J" is not a parse error: it is −123451. Reading that last character as a digit — or dropping it — loses both the sign and one significant digit, and the statement quietly stops adding up. A second subtlety: the number of decimals is a field of the record (position 20), not a property of the currency, so the file itself declares its precision. ValidateFin decodes both correctly and then applies the identity the CFONB spec states explicitly — the new balance is the algebraic sum of the old balance and of every movement in the statement — which is also what catches an amount whose sign was written as a plain digit. Unpaid and rejected operations are surfaced with their reject reason code, and SEPA direct debits with their mandate reference and sequence type.

What to know about CFONB 120 and camt.053

  • CFONB 120 (AFB120) is the French bank-statement format: 120-character fixed-width records, codes 01 / 04 / 05 / 07.
  • The debit/credit sign is overpunched onto the last character of the amount — the single most common source of a corrupted CFONB import.
  • The number of decimals is declared by the record itself (position 20), not derived from the currency.
  • The CFONB spec requires that the new balance equals the old balance plus the algebraic sum of the movements — that identity is the file's own integrity check.
  • ISO 20022 camt.053 is the modern XML replacement most ERP and treasury systems now import, which is why CFONB feeds get converted.

Frequently asked questions

What is a CFONB 120 file?

CFONB 120, also known as AFB120, is the French bank-statement format standardised by the Comité Français d'Organisation et de Normalisation Bancaires. It is a plain-text file of fixed-width 120-character records: 01 (old balance), 04 (movement), 05 (supplement), 07 (new balance). It is the French counterpart of Belgian CODA, SWIFT MT940 and US BAI2.

How do I convert a CFONB 120 to camt.053?

Drop the file on this page, click "Read file", then "Export camt.053". You get a valid camt.053.001.02 statement with the real balances and every movement, generated entirely in your browser — the file is never uploaded.

CFONB 120 vs camt.053: what is the difference?

They report the same thing — a bank statement — in two different ways. CFONB 120 is a compact 1980s fixed-width text format, French-only, whose fields are positional and whose sign is overpunched. camt.053 is the ISO 20022 XML statement: international, self-describing, validated against an official XSD, and carrying far richer structured data (parties, references, remittance information, bank transaction codes). French banks still deliver CFONB; ERP and treasury systems increasingly want camt.053.

How do I read a CFONB .txt file?

A CFONB file is plain text and opens in any editor, but each 120-character line is an unlabelled sequence of fixed positions — and the amounts end in a letter, which looks like corruption but is the overpunched sign. This viewer decodes it into an account, an old and new balance, and a list of movements with dates, operation codes, counterparties, labels and SEPA data.

Why does my CFONB amount end in a letter like J or C?

Because the sign is overpunched onto the last character of the amount, a COBOL zoned-decimal convention: "{" and "A" to "I" carry a positive digit 0 to 9 (credit), "}" and "J" to "R" carry a negative digit 0 to 9 (debit). "…12345J" therefore means −123451, not a corrupted file. A parser that reads that character as a digit, or drops it, loses both the sign and a digit.

What does the tool validate?

The accounting identity the CFONB spec requires: the new balance must equal the old balance plus the algebraic sum of all the movements in the statement. A mismatch is reported as a warning — and it is precisely what catches an amount whose overpunched sign is missing. Unknown record codes, invalid currencies and unrecognised mandate sequence types are reported too.

Is my bank statement uploaded anywhere?

No. The CFONB file is read, validated and converted entirely in your browser using JavaScript. No statement data is ever sent to a server.