FINSTA — Financial Statement of an Account Message (D.96A)
FINSTA is the EDI bank statement: a financial institution sends its customer the list of booked entries on one or more accounts over a given period. It is the EDIFACT counterpart of the bank statement.
Purpose
Per the UN/CEFACT functional definition, FINSTA "can be used to cater for various communication functions between financial institutions and their customers. The most frequent function is to provide a statement of booked items confirming entries on a customer's account. The message type may contain several accounts (quoted in the B-level)". Several accounts, value dates, entry dates and currencies may be specified in a single message.
Segment structure
FINSTA D.96A is structured in three hierarchical levels per the UN/CEFACT specification:
- Level A — starts at
UNH, general message data (groups SG1, SG2, SG3, SG7). - Level B — starts at the
LINsegment in SG4: one bank account. - Level C — starts at the
SEQsegment in SG6: one booked entry.
Level A (header)
Mandatory header segments: UNH M , BGM M , and DTM M .
Level-A groups:
- SG1 (C, ×1) —
RFF + DTM: reference to a prior instruction. - SG2 (C, ×5) —
FII + CTA + COM: financial institution issuing the statement. - SG3 (C, ×3) —
NAD + CTA + COM: parties (account owner, contacts). - SG7 (C, ×5, end of message) —
AUT + DTM: authentication (bank's electronic signature).
Level B (per account)
Level B is SG4 (M, ×9999) — one bank account. The group is mandatory: a FINSTA must carry at least one account. Composition:
- LIN M
- FII M
- RFF M
- FTX C
- SG5 (M, ×99) —
MOA + DTM: balances (opening, closing, intermediate) with value dates. MOA is mandatory inside.
Level C (entry)
Level C is SG6 (C, ×9999, inside SG4) — one booked entry. Note: all SG6 segments are marked M (mandatory) within the group. Composition:
- SEQ M
- RFF M
- DTM M
- BUS M
- MOA M
- FTX C
At the message level, CNT C follows the last SG6. The message closes with UNT M .
Mandatory / conditional
Strictly mandatory in every FINSTA D.96A:
UNH,UNT— frame the message.BGM— statement type and number (qualifier 39 = statement of account).DTM— at least one header date (statement date).- SG4 (Level B, ×9999) — at least one account. Inside: LIN, FII, RFF are mandatory.
- SG5 (×99 in SG4) — at least one balance (MOA mandatory).
- Inside SG6: SEQ, RFF, DTM, BUS, MOA are all mandatory.
This particularity — SG6 fully mandatory inside — is rare in EDIFACT and reflects the business need: every entry must carry reference, dates, function and amount to be actionable.
Real-world example
Weekly statement sent by a bank (BIC BANKBEBB) to a corporate (ACME SAS), for one account with two entries in week W19 2026: an outgoing supplier wire and an incoming carrier refund.
UNB+UNOC:3+BANKBEBB:25+5410000000123:14+260513:0700+CTRL000500'
UNH+1+FINSTA:D:96A:UN'
BGM+39+STMT-2026-W19+9'
DTM+137:20260510:102'
RFF+ACK:STMT-2026-W19'
DTM+171:20260510:102'
FII+RB+FR7612345678901234567890123::25+BANK NAME:::BANKBEBB'
NAD+OY+5410000000123::9++ACME SAS+12 RUE DES LILAS+PARIS++75011+FR'
LIN+1'
FII+AB+FR7612345678901234567890123::25+BANK NAME'
RFF+ACK:STMT-2026-W19/01'
MOA+343:55780.00:EUR'
DTM+209:20260504:102'
MOA+344:42330.00:EUR'
DTM+209:20260510:102'
SEQ++1'
RFF+CR:INV-2026-7788'
DTM+202:20260505:102'
BUS+39+++ZZZ'
MOA+12:12450.00:EUR'
FTX+SSR+++WIRE TRANSFER OUT TO SUPPLIER GMBH'
SEQ++2'
RFF+CR:CR-2026-0012'
DTM+202:20260508:102'
BUS+39+++ZZZ'
MOA+11:1000.00:EUR'
FTX+SSR+++REFUND FROM CARRIER'
CNT+1:2'
UNT+27+1'
UNZ+1+CTRL000500' BGM+39+STMT-2026-W19+9— qualifier 39 (statement of account), number STMT-2026-W19, status 9 (Original).FII+RB— Receiving Bank (qualifier RB = Beneficiary's Bank / Reporting Bank depending on context), IBAN + BIC.NAD+OY— Account Owner (qualifier OY).LIN+1— Level B starts: first account.MOA+343:55780.00:EUR— opening balance (qualifier 343),DTM+209= balance on 4 May.MOA+344= closing balance on 10 May.SEQ++1— Level C starts: first entry.RFF+CR:INV-2026-7788— reference to the settled invoice.BUS+39+++ZZZ— business function 39 (Transfer), internal code ZZZ for the reason.MOA+12— Debit (qualifier 12 = Cash debit).MOA+11= Cash credit (qualifier 11).CNT+1:2— number of entries in the statement (qualifier 1).UNT+27+1— 27 segments in the message.
Common errors
- Incomplete SG6 — every SG6 segment is mandatory inside the group. Omitting BUS or DTM in an entry trips strict validators.
- MOA qualifier confusion — 11 = cash credit, 12 = cash debit, 343 = opening balance, 344 = closing balance, 345 = closing book balance. Mixing these breaks accounting reconciliation.
- Missing IBAN in FII — composite C078 must carry the IBAN in its first component. Many legacy mappings put it in the BIC slot, desynchronising reconciliation.
- Three-level hierarchy ignored — placing a SEQ before a LIN, or a level-A MOA where it should live in SG5, breaks the A/B/C hierarchy; strict (spec-compliant) parsers reject.
- Inconsistent CNT — the CNT control must match the actual entry count (instantiated SG6). A mismatch signals a corrupt FINSTA — most treasuries fire an automatic alert on that control.
Related messages
FINSTA sits in the bank cash-management cycle:
- PAYORD D.96A — upstream payment order.
- CREMUL / DEBMUL — multiple credit / debit advices (alternative or complement to FINSTA).
- BANSTA — Banking Status (bank's reply to an instruction).
- APERAK D.96A — application rejection of an instruction.
- CONTRL D.96A — automatic syntactic acknowledgment.
JSON equivalent
JSON projection of the statement for integration in a TMS (Treasury Management System) or cash analytics platform:
{
"interchange": {
"controlRef": "CTRL000500",
"from": { "id": "BANKBEBB", "qualifier": "25" },
"to": { "id": "5410000000123", "qualifier": "14" },
"datetime": "2026-05-13T07:00:00Z",
"syntax": { "id": "UNOC", "version": "3" }
},
"message": {
"ref": "1",
"type": "FINSTA",
"version": { "syntax": "D", "release": "96A", "agency": "UN" }
},
"statement": {
"number": "STMT-2026-W19",
"function": "39",
"status": "9",
"documentDate": "2026-05-10",
"bank": { "iban": "FR7612345678901234567890123", "bic": "BANKBEBB" },
"owner": { "gln": "5410000000123", "name": "ACME SAS" },
"accounts": [
{
"ref": 1,
"iban": "FR7612345678901234567890123",
"balances": {
"opening": { "amount": 55780.00, "currency": "EUR", "date": "2026-05-04" },
"closing": { "amount": 42330.00, "currency": "EUR", "date": "2026-05-10" }
},
"entries": [
{
"seq": 1,
"ref": "INV-2026-7788",
"valueDate": "2026-05-05",
"function": "39",
"amount": { "value": 12450.00, "currency": "EUR", "qualifier": "12" },
"narrative": "WIRE TRANSFER OUT TO SUPPLIER GMBH"
},
{
"seq": 2,
"ref": "CR-2026-0012",
"valueDate": "2026-05-08",
"function": "39",
"amount": { "value": 1000.00, "currency": "EUR", "qualifier": "11" },
"narrative": "REFUND FROM CARRIER"
}
],
"totals": { "entryCount": 2 }
}
]
}
}