Serial Shipping Container Code.

Eighteen digits naming one logistic unit, the mod-10 rail, AI (00), and the custody join into AggregationEvents.

The pallet label, blown out.

rendered as a GS1-128 barcode — the scannable spine of the pallet label

(00) the label's key names what follows: one logistic unit
3 extension digit the shipper's own leading digit
9506000 GS1 company prefix who serialized this unit
000000123 serial reference numeric-only — one unit, once; managed ranges are the paid product
5 check this digit exists only to certify the others — mod10 pass
SSCC    39506000000000123 · check 5
sum     3×3 + 9×1 + 5×3 + 0×1 + 6×3 + 0×1 + 0×3 + 0×1 + 0×3 + 0×1 + 0×3 + 0×1 + 0×3 + 0×1 + 1×3 + 2×1 + 3×3 = 65
check   (10  65 mod 10) mod 10 = 5   → mod10 pass

The row.

schemegs1.sscc
grammar18 digits — extension digit, GS1 company prefix, serial reference, check digit. Carried as AI (00); names exactly one logistic unit, serialized by construction.
check digitGS1 mod-10, right-anchored — the same rail as every GS1 key.
canonical formThe 18-digit form; EPC form urn:epc:id:sscc.
symbologiesGS1-128 on the logistics label; the AI (00) line is the scannable spine of the SSCC-18 label
enrichmentidentity is open; shipment context is per-caller — the ASN that names this SSCC belongs to the parties on it
join ruleAggregationEvent parentID (CBV 2.0 §8.5): the pallet gains and loses its cases against this one identifier — the unit of custody.
pinned digestgs1.sscc sha256:2cc9a5e60d67ffe766f2b7228b3f8269ad7e8c9d925146e6a027a989061ce122
as data/schemes/sscc.json

In practice.

A tracking number names a shipment for one carrier's lifetime; the SSCC names the physical unit for the unit's lifetime, across carriers and documents. The registry treats the two as different schemes with different verdict labels — see the tracking family row.

On the blog.

  • SSCC: the logistic unit is the unit of custody

    The SSCC is the only identifier that names this pallet — not the product class, not the shipment abstraction, the physical unit that crosses your dock. That is why it parents every EPCIS AggregationEvent, why the ASN hangs on it, and why the parcel networks throwing it away severs product identity at the label.

  • The case and the pallet: GS1-128, ITF-14, and generating SSCC labels

    Logistics labeling is its own discipline — ITF-14 for the corrugate-printable case GTIN, GS1-128 for AI-bearing labels, SSCC allocation for the logistic unit — and the label is the first artifact where a generation error becomes physical. A complete pallet label generated, decomposed, and round-tripped before the print run.

  • Tracking numbers are a scheme family too: 1Z, IMpb, and the SSCC nobody keeps

    Carrier tracking formats are proprietary grammars doing a logistic-unit identifier's job — and the parcel APIs that mint them are SKU-poor and GS1-blind. Product identity dies at the label, and the registry treats carrier formats as first-class scheme rows so the death is at least visible.

Get an API key.

The local verbs run from npx barcoding.dev today with no key. A key opens the network half of the verb set.