CFONB 160 — ordre de virement (émission)

Copy Markdown View Source

Reference for the fields this library emits when generating a transfer order. Source of truth: the official CFONB brochure "Remises informatisées d'ordres de virements au format 160 caractères" (Avril 2004). Positions are 1-indexed; each record is exactly 160 characters.

A remise (batch) is made of, in order:

  • one émetteur record (03) — the donneur d'ordre,
  • one destinataire record (06) per beneficiary,
  • one total record (08) — the summed amount.

Conventions (same as the 120 format):

  • Numeric zones are right-aligned and zero-filled.
  • Alphanumeric zones are left-aligned and blank-filled.
  • Permitted characters (circulaire FBF 88/327): digits, uppercase letters, space, and * - . / ( ). CFONB.Encode.sanitize/1 uppercases and strips accents.
  • S status: Mandatory, Optional, Dependent, N reserved (blank).

This library emits the ordinary transfer (code opération 02) in euros.

Record 03 — émetteur (donneur d'ordre)

PosLenFieldNotes
12Record code03
32Operation code02 (ordinary transfer)
58Reservedblank
136Émetteur / identification number
191CCD codeéchéance only; blank here
206Reservedblank
265Date JJMMAday, month, single trailing year digit; blank if absent
3124Donneur d'ordre namefrom the émetteur RIB
557Remise referenceoptional
6219Reservedblank
811CurrencyE (euro)
825Reservedblank
875Émetteur branch code (guichet)
9211Émetteur account number
10316Donneur d'ordre identifieroptional; blank here
11931Reservedblank
1505Émetteur bank code (établissement)
1556Reservedblank

Record 06 — destinataire (bénéficiaire)

PosLenFieldNotes
12Record code06
32Operation codesame as the émetteur
58Reservedblank
136Émetteur / identification numbersame as the émetteur
1912Referenceat the donneur d'ordre's disposal
3124Bénéficiaire namefrom the bénéficiaire RIB
5524Domiciliationoptional
798Balance-of-payments declarationdependent (non-resident); blank here
875Bénéficiaire branch code (guichet)
9211Bénéficiaire account number
10316Amountcents, right-aligned, zero-filled, unsigned
11931Label (libellé)first ≥30 chars carried to the beneficiary
1505Bénéficiaire bank code (établissement)
1556Reservedblank

An optional second destinataire record (07, complementary label) is defined by the spec but not emitted by this version.

Record 08 — total

All zones reserved (blank) except:

PosLenFieldNotes
12Record code08
32Operation codesame as the émetteur
136Émetteur / identification numbersame as the émetteur
10316Total amountsum of the 06 amounts, cents, right-aligned, zero-filled

There is no line counter in the 08 record — only the total amount.

Amount encoding

Expressed in centimes (cents), right-aligned, zero-filled, unsigned. Value = amount × 100. Example: 1250.00 €0000000000125000. This is a different encoding from the signed "montant" of the 120 statement format.

Bank coordinates

The RIB key is never written in the 160 format. Coordinates may be supplied as an IBAN (decomposed and key-checked via CFONB.Rib.from_iban/1) or as split RIB components (etablissement / guichet / compte).