ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

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.

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+PCIthe 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 SG8 EQA+SEL for attached equipment.
  • SG9 GID+HAN — goods, with SG10 MEA+EQN, SG11 DIM+EQN, SG12 PCI+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 STS inside 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.

edifact iftsta-d96a-example.edi
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.

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.

json iftsta-d96a-equivalent.json
{
  "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" }
  }
}