IFTSTA — International Multimodal Status Report Message (D.96A)
The IFTSTA message reports a transport status — or a change in transport status (an event) — between agreed parties, at any point in time or place along the transport chain.
Purpose
Per the official UN/CEFACT definition, IFTSTA is "a message to report the transport status and/or a change in the transport status (i.e. event) between agreed parties." The standard adds that a status message may be sent: in response to status requests, on a scheduled basis at predetermined times, on the occurrence of selected events, or on the occurrence of exceptional events as agreed between partners.
In practice, IFTSTA carries the tracking events along a multimodal supply chain: picked up, in transit, transshipped, customs-cleared, delivered, exception (delay, damage). Ocean carriers typically emit between 5 and 20 IFTSTA messages per container between pickup and final delivery.
Segment structure
IFTSTA D.96A is a flat-structure message, with no formal Header / Detail / Summary split: no UNS. The UNECE spec chains a short head block, then the consignment loop SG4 that carries per-consignment statuses, then UNT.
Header
Mandatory segments: UNH M , BGM M .
Header conditional segments: DTM C , and TSR C .
Then header groups: SG1 NAD (parties — status sender, recipient), SG2
CTA+COM (contacts), SG3 RFF+DTM+LOC+FTX+CNT (references —
booking number, originating IFTMIN, place, free text, control totals).
Consignment and statuses
The business core is the SG4 loop (up to 999 occurrences) built around CNI M . Each SG4 nests:
- SG5
STS+RFF+DTM+DOC+FTX+NAD+LOC+PCI— the status (mandatory in the spec, up to 99 occurrences). STS M , DTM C , DOC C , FTX C , NAD C , LOC C , PCI C . - SG6
TDT+RFF+LOC+DTM— transport details (mode, conveyance, ports). Lets you report the vessel/flight/train/vehicle tied to the event. - SG7
EQD+MEA+DIM+SEL— equipment (container, seal) with SG8EQA+SELfor attached equipment. - SG9
GID+HAN— goods, with SG10MEA+EQN, SG11DIM+EQN, SG12PCI+GIN— package identification (SSCC) when drilling down to package level.
The STS segment is qualified by:
STS[0] Status type (1 = Status, 2 = Reason), STS[1]
Status code (per industry-specific code lists — UN/EDIFACT, BIC, SMDG for ocean, Cargo
iQ for air). Code detail rides on STS[2] (Status reason coded) and the optional
free-form description composite.
Trailer
After the SG4 loop comes directly: UNT M . No Summary section.
Mandatory / conditional
Four structural items are strictly mandatory in every D.96A IFTSTA:
UNH— opens the message.BGM— gives the function code (77 = Status report, 23 = Request, 9 = Original...) and the number.- SG4 with its
CNI— at least one tracked consignment (C in the spec but business-critical). - SG5 with its
STSinside each SG4 — at least one status (M inside SG5).
On the business side you also need: a NAD+CA in SG1 (sender = carrier), a
RFF+CN (booking) or RFF+BM (Bill of Lading), a
DTM+334 (occurrence date) on every STS to timestamp the event, and a
LOC+11 (place of discharge) or LOC+9 (place of loading) to
geo-locate it.
Real-world example
A "Departed from origin terminal" status emitted by an ocean carrier to notify that the container has left Rouen for Hamburg on May 21 at 09:00, with an ETA of May 22 at 17:00.
UNB+UNOC:3+5410000000999:14+5410000000123:14+260521:1030+CTRL000070'
UNH+1+IFTSTA:D:96A:UN'
BGM+77+IFTSTA-2026-0521-001+9'
DTM+137:202605211030:203'
NAD+CA+5410000000999::9+EUROCARRIER GMBH'
RFF+CN:BOOKING-2026-0519-A'
CNI+1+IFTMIN-2026-0519-A'
LOC+9+FRROU+FR:::Rouen'
STS+1+1+DL:::Departed from origin terminal'
DTM+334:202605210900:203'
LOC+9+FRROU+FR:::Rouen'
PCI+13+SHIPMENT-2026-0519-A'
TDT+20+VOY-1234+1+13:Sea++:::EUROCARRIER+++:MV NORTH STAR'
LOC+9+FRROU+FR:::Rouen'
LOC+11+DEHAM+DE:::Hamburg'
DTM+133:202605221700:203'
EQD+CN+EVRU1234567+45GP:103:5'
MEA+WT++KGM:6000'
SEL+SEAL-998877:CA'
GID+1+10:PAL:67'
HAN+++FRAGILE'
UNT+22+1'
UNZ+1+CTRL000070' BGM+77+IFTSTA-2026-0521-001+9— function 77 (Status report), number IFTSTA-2026-0521-001, status 9 (Original).DTM+137:...:203— status issuance datetime (qualifier 203).NAD+CA— sender: the carrier EUROCARRIER GMBH.RFF+CN— referenced booking number.CNI+1+IFTMIN-2026-0519-A— Consignment Information: the tracked consignment, identified by the originating IFTMIN reference.STS+1+1+DL— Status: type 1, reason 1, code DL (Departed from origin terminal), with a free description in the optional composite.DTM+334— status occurrence date (qualifier 334 = Status occurrence date).TDT+20— Transport stage 20 (Main carriage), vessel MV NORTH STAR, mode 1 (Sea).LOC+9/LOC+11— origin and destination ports.DTM+133— ETA Hamburg.EQD+CN+SEL— container EVRU1234567, seal SEAL-998877.GID+1+10:PAL:67— 10 pallets, "Fragile" handling.UNT+22+1— 22 segments.
Common errors
- STS without DTM+334 — a status without an occurrence date is unusable: you can't tell when the event happened. DTM+137 (message issuance) is not enough: a carrier may emit the IFTSTA well after the actual event.
- STS without LOC — a status with no geographic place forces the recipient to infer LOC from the context (TDT, CNI), which is not always feasible for in-between events (transit, transshipment).
- Wrong CNI reference — CNI[1] must unambiguously identify the tracked consignment: B/L number, booking number, IFTMIN number, freight receipt. Too many IFTSTA messages carry an empty CNI or an internal carrier reference the shipper can't match.
- Non-standard proprietary STS code — the UN/EDIFACT standard proposes EDIFACT codes, but ocean uses SMDG codes massively, air uses Cargo iQ, road uses its own conventions. Always specify the code-list responsibility (STS[1:1]).
- IFTSTA in place of IFTMAN — for formal arrival notices before discharge, the dedicated message is IFTMAN, not IFTSTA. IFTSTA stays a generic status.
- No UNS — IFTSTA has no UNS. Don't insert one out of habit from ORDERS/INVOIC.
Related messages
IFTSTA belongs to the "single consignment" transport message family:
- IFTMIN D.96A — the transport instruction that triggered the tracked shipment.
- DESADV D.96A — the commercial-flow despatch advice.
- RECADV D.96A — the final receipt advice.
- IFTMAN — the arrival notice.
- IFTMBF — the firm booking confirmation.
- IFTMCS — the instruction contract status.
- CONTRL D.96A — the automatic syntactic acknowledgment.
JSON equivalent
JSON projection matching the example above. The mapping is not normative — it's an ediverse convention to ease integration in TypeScript / Python environments.
{
"interchange": {
"controlRef": "CTRL000070",
"from": { "id": "5410000000999", "qualifier": "14" },
"to": { "id": "5410000000123", "qualifier": "14" },
"datetime": "2026-05-21T10:30:00Z",
"syntax": { "id": "UNOC", "version": "3" }
},
"message": {
"ref": "1",
"type": "IFTSTA",
"version": { "syntax": "D", "release": "96A", "agency": "UN" }
},
"transportStatus": {
"number": "IFTSTA-2026-0521-001",
"function": "77",
"status": "9",
"sentAt": "2026-05-21T10:30:00Z",
"carrier": { "gln": "5410000000999", "name": "EUROCARRIER GMBH" },
"booking": "BOOKING-2026-0519-A",
"consignment": {
"ref": 1,
"id": "IFTMIN-2026-0519-A",
"lastLocation": { "code": "FRROU", "country": "FR", "name": "Rouen" }
},
"event": {
"code": "1",
"reason": "1",
"type": "DL",
"label": "Departed from origin terminal",
"occurredAt": "2026-05-21T09:00:00Z",
"location": { "code": "FRROU", "country": "FR", "name": "Rouen" }
},
"shipmentRef": "SHIPMENT-2026-0519-A",
"transport": {
"stage": "20",
"conveyance": "VOY-1234",
"mode": "1",
"type": "Sea",
"carrierName": "EUROCARRIER",
"vesselName": "MV NORTH STAR",
"from": { "code": "FRROU", "country": "FR" },
"to": { "code": "DEHAM", "country": "DE" },
"etaAt": "2026-05-22T17:00:00Z"
},
"equipment": {
"id": "EVRU1234567",
"type": "45GP",
"weightKg": 6000,
"seal": "SEAL-998877"
},
"goods": { "ref": 1, "count": 10, "packageType": "PAL", "handling": "FRAGILE" }
}
}