8 min read · Updated 2026-05-05 · by TJO

The IATA 21-state air cargo workflow, explained

Every IATA air cargo shipment moves through a defined sequence of states from forwarder tender through carrier acceptance, departure, arrival, and delivery. The 21-state model is the backbone of every FSU.

On this page
  1. Why states matter
  2. The states themselves
  3. Export (origin handler)
  4. Transit (intermediate stations)
  5. Import (destination handler)
  6. Exception states
  7. Transitions, not statuses
  8. What an FSU looks like on the wire
  9. How Skidd implements the 21 states
  10. Where this fits with everything else

Why states matter

Air cargo handling is, at its core, a state machine. A shipment is always in exactly one state. Every operational action — acceptance, screening, build-up, loading, departure — transitions the shipment from one state to the next. The carrier’s ops desk, the forwarder’s tracking system, customs authorities, and the handler’s billing engine all read the same state stream.

IATA standardised that state stream in Cargo-IMP via the FSU (Freight Status Update) message. A handler emits an FSU on every transition; everyone downstream consumes it.

If your operation has a “Status” field that anyone can free-text into, you don’t have a state machine — you have a notebook. Real handling needs the discipline of explicit states.

The states themselves

IATA 21-state cargo workflow Linear export sequence from Freight on hand through Departed, with a parallel import sequence from Arrived through Delivered. Export · origin handler Import · destination handler FOH Freight on hand RCS Received from shipper FPS Pre-screened BKD Booked MAN Manifested PRE Prepared / built up LDN Loaded DEP Departed ARR Arrived RCF Received from flight NFD Notified DLV Delivered flight in the air pre-flight departure arrival
Export sequence (top) and import sequence (bottom). The dashed bridge is the flight itself; codes are the FSU sub-types emitted at each transition.

There isn’t a single canonical “21” — the count varies depending on which sub-states you include — but the core sequence every air cargo handler operates against:

Export (origin handler)

StateCodeMeaning
Booking receivedinternalForwarder reservation acknowledged
Freight on handFOHCargo physically arrived at handler
Received from shipperRCSCargo accepted into the warehouse, security declaration signed
Freight pre-screenedFPSSecurity screening completed (X-ray, EDS, etc.)
BookedBKDAssigned to a specific flight
ManifestedMANOn the FFM emitted to the destination station
Prepared for loadingPREBuilt up into a ULD
Loaded on flightLDNPhysically in the aircraft hold
Departed on flightDEPAircraft is wheels-up

Transit (intermediate stations)

StateCodeMeaning
Transit arrivedARRFlight landed at intermediate station
Transit transferredTRMCargo transferred to onward flight

Import (destination handler)

StateCodeMeaning
ArrivedARRFlight landed at destination
Received from flightRCFCargo offloaded and received into the warehouse
Notified for deliveryNFDConsignee notified that cargo is ready
Awaiting customsAWDCustoms clearance pending
DeliveredDLVCargo released to consignee

Exception states

StateCodeMeaning
DiscrepancyDISPieces, weight, or condition doesn’t match expected
CancelledCCDBooking cancelled before manifesting
ReturnedRETCargo returned to shipper

Transitions, not statuses

The single most important thing about the 21-state model: states are not labels you set. They are transitions you make. Each transition has rules about what state you can come from, who is allowed to make it, what message goes out as a result, and what data is captured.

Examples:

  • You cannot go from FOH directly to BKD. You must pass through RCS (acceptance) and FPS (screening) first — otherwise security has been bypassed.
  • Only an operator with appropriate role can transition RCS — in Skidd, that’s a warehouse op or a station manager, never a customer service rep.
  • Every transition emits an FSU to the airline (and to subscribed forwarders); the FSU body carries operator id, timestamp, and the new state.

A handler that lets transitions happen out of sequence is a handler that ships discrepancies it doesn’t know it’s shipping.

What an FSU looks like on the wire

FSU/16
LH123/24APR/FRA
180-12345678LHRJFK/T2K12
RCS/24APR0812LHRT2/12K240/M.BERG

Decoded:

  • FSU/16 — FSU message version 16
  • LH123/24APR/FRA — flight, date, origin
  • 180-12345678LHRJFK/T2K12 — AWB, routing, station code
  • RCS/24APR0812LHRT2/12K240/M.BERG — new state, timestamp, location, pieces, weight, operator

That single line tells the airline’s ops desk that 12 pieces totalling 240kg were accepted at LHR Terminal 2 at 0812 UTC on 24 April by operator M. Berg. Replay-able, auditable, dispute-resolvable.

How Skidd implements the 21 states

Three implementation choices that matter:

  1. The state machine is explicit and enforced at the API layer. Invalid transitions are rejected with a structured error before they reach the database. There is no free-text status field, no “other” option, no escape hatch.

  2. Every transition emits the right FSU automatically. You don’t choose what message to send — the state determines it. RCS emits FSU/RCS, MAN emits FFM-and-FSU/MAN, DEP emits FSU/DEP. Operators do operations; the system does protocol.

  3. The full event log is queryable and replayable. Every transition stamped with operator, timestamp, second-precision sequence number, and a cryptographic hash. You can replay any shipment’s entire history for audit, dispute, or just curiosity.

Where this fits with everything else

The 21 states are the spine. The other pieces hang off them:

  • The FWB that arrives at the start populates the canonical model the state machine operates on
  • The FFM at MAN is the per-flight roll-up of every BKD shipment on a given flight
  • Storage clocks start at FOH/RCS and stop at DEP — they drive overstay billing
  • Rate cards match charges based on the transitions (acceptance handling, screening, build-up, loading)
  • e-CSD signs the security declaration as part of the RCS transition

Get the state machine right and everything else falls into place. Get it wrong and you spend every shift reconciling things that should have reconciled themselves.