What is a Tracking Code?
A tracking code is the unique identifier a carrier assigns to one shipment so that every scan along its route can be attached to that single item. It is the same thing as a tracking number, and postal operators, couriers and marketplaces use the two names interchangeably.
The code appears twice on a shipping label: once in human-readable characters and once encoded in the barcode printed beside them. International postal items carry a 13-character version defined by Universal Postal Union standard S10, built as two service letters, eight serial digits, one check digit and a two-letter country code. Courier formats differ, running from 10 digits at DHL Express to 18 characters at UPS, while USPS package barcodes vary in length by design.
Who issues the code, and where the numbers come from
Carriers issue tracking codes, not shops, and each code comes from a block of serials allocated before the parcel exists: 100 million values for every service indicator in every country of origin. In the S10 range the serial field runs from 00000000 to 99999999. Designated postal operators draw from those ranges under their own two-letter country code, which is why the final two letters of an international postal code identify the country that issued the item rather than the country it is going to.
The code is created at label generation, not at collection. The sender buys a label from the carrier or from a shipping broker, the carrier's system returns the code and the label artwork in the same response, and the sender passes the code on in a dispatch email. At that point the parcel has not moved a metre.
The first event most tracking pages show is an electronic pre-advice, recorded when the carrier receives the manifest data rather than the box. Labels such as "Shipping label created" or "Electronic information submitted" describe that data handover. A physical scan only follows once the item is inducted into the network.
What the 13 characters of an S10 code encode
An S10 identifier is exactly 13 characters long, and each of its four fields has a fixed width and a fixed position. Nothing in the code encodes the destination, the weight or the contents.
| Positions | Field | Width | What it holds |
|---|---|---|---|
| 1 to 2 | Service indicator | 2 letters | The class of service: registered, parcel post, EMS, insured, e-commerce |
| 3 to 10 | Serial number | 8 digits | 00000000 to 99999999, unique within that indicator and country |
| 11 | Check digit | 1 digit | Calculated from the eight serial digits |
| 12 to 13 | Country code | 2 letters | ISO 3166-1 alpha-2 code of the operator that issued the code |
The Universal Postal Union publishes a validator for exactly this structure, and its own description of that tool states where the check digit sits.
"S10 Check Digit Validation Tool ... checks the validity of an S10, 13-character identifier by calculating the check digit in character position 11."
Read against that layout, the code RA123456785US decomposes cleanly: RA marks registered letter post, 12345678 is the serial, 5 is the check digit computed from that serial, and US is the issuing country.
What the first two letters say about the service class
The opening two letters of an S10 code place the item in a service class, and eight ranges cover the classes a consumer is likely to meet. The second letter varies across the full A to Z span without changing the meaning, so RA and RZ are both registered letter post.
| Code range | Service class |
|---|---|
| CA to CZ | Parcel post |
| EA to EZ | EMS, the expedited postal service |
| HA to HZ | E-commerce parcels |
| LA to LZ | Tracked letter post |
| MA to MZ | Letter post M bags |
| RA to RZ | Registered letter post |
| UA to UZ | Letter post items outside the other ranges |
| VA to VZ | Insured letters |
This is why a code beginning with R almost always belongs to a registered item, and it is the quickest way to tell which service a sender actually paid for. The distinction matters, because the service class determines whether an item is scanned at all: the difference between registered and ordinary mail is precisely the presence of a barcoded identifier, and ordinary letters carry no code to look up.
The check digit that proves a code was typed correctly
Position 11 of an S10 code is a check digit computed from the eight serial digits using the fixed weights 8, 6, 4, 2, 3, 5, 9, 7. The calculation is arithmetic anyone can repeat, which makes an S10 code self-verifying without a network connection.
The published rule multiplies each serial digit by its weight, sums the eight products, and subtracts the remainder of that sum divided by 11 from 11.
"Assign the weights 8, 6, 4, 2, 3, 5, 9, 7 to the 8 digits, from left to right. Calculate S, the sum of each digit multiplied by its weight. Calculate the check digit C = 11 - (S mod 11). If C = 10, change to C = 0. If C = 11, change to C = 5."
Worked on the serial 12345678, the products are 8, 12, 12, 8, 15, 30, 63 and 56, summing to 204. The remainder of 204 divided by 11 is 6, so the check digit is 11 minus 6, which is 5. That is why RA123456785US is a structurally valid code and RA123456789US is not, even though the second one looks perfectly ordinary.
The two special cases matter in practice. A result of 10 is written as 0 and a result of 11 is written as 5, so the digit always fits one character. A short second example: the serial 00000001 produces a single product of 7, and 11 minus 7 gives a check digit of 4, making EE000000014GB a valid EMS code issued in the United Kingdom.
Carrier code formats outside the postal S10 range
The major couriers do not use S10 at all, and their five main formats differ in length, character set and internal structure. USPS domestic packages sit in a third category, because the Intelligent Mail package barcode is a data string rather than a fixed-width number.
"IMpb is the USPS-developed barcode that can be read by automated parcel-processing equipment and scanning devices and consists of a data string that generally follows the GS1-128 specification."
| Operator or standard | Length and character set | Structure |
|---|---|---|
| UPU S10 (international post) | 13 characters, letters and digits | 2 service letters, 8 serial digits, 1 check digit, 2 country letters |
| USPS Intelligent Mail package barcode | Numeric, variable length | GS1-128 data string; length set by the elements the mailer selects |
| UPS | 18 characters | 1Z, a 6-character shipper number, a 2-digit service level, then 8 digits ending in a check digit |
| FedEx Express and Ground | 12 digits | Numeric, with provision in the specification to expand to 14 |
| DHL Express | 10 digits | Numeric transport order identifier |
| Canada Post | 11 or 13 alphanumeric characters, or 16 digits | Alphanumeric codes end in CA; the 16-digit form is numeric only |
Length alone does not identify the carrier. Several operators issue numeric codes of the same length, so a bare 10-digit or 16-digit number narrows the field without settling it. The dependable signals are the fixed prefix, such as 1Z at UPS, and the two trailing letters on a 13-character code, which name the issuing postal administration.
Where the code appears on a label, a receipt and an order email
The tracking code is printed on the shipping label directly under its barcode and repeated in up to four other places, beginning with the counter receipt issued when an item is lodged over a post office counter. Canada Post sets out both the character counts and the places to look.
"Tracking numbers are typically: 11 or 13 alphanumeric characters ending in CA or 16 digits."
For a parcel sent internationally, the same operator notes that the number appears on the sender's copy of the shipping label as well as on the receipt. Four places hold the code for a typical online order:
- The dispatch or shipping confirmation email from the shop, usually as a clickable link.
- The order detail page inside the marketplace or shop account.
- The counter receipt, for anything posted in person, printed near the barcode.
- The shipping label itself, on the sender's copy or on the parcel when it arrives.
Spaces and hyphens inside a printed code are formatting only. A UPS code shown in six spaced groups and the same code with the spaces stripped out are one and the same 18 characters, and tracking systems ignore the separators.
How long a code takes to activate, and how long it keeps working
A tracking code exists from the second the label is generated, but it normally returns no movement until the carrier physically takes the item, which is typically the same or the next working day (estimate). Until then a lookup either fails outright or shows only the electronic pre-advice.
The first physical event is the induction or acceptance scan. From there the code accumulates events at each handling point, and the status settles into in transit between facilities. A parcel crossing a continent can go two or three days between scans without anything being wrong, because scans happen at facilities rather than on the road.
Codes are not permanent. The S10 serial pool holds 100 million values per service indicator per country, so operators recycle serials once items are long delivered and their records closed. A code from an old order can therefore return either nothing at all or, more confusingly, a different shipment. A code checked within the same season as its delivery is reliable; one checked years later is not.
Why a valid-looking code returns nothing found
A 13-character S10 code offers 13 separate chances for a transcription error, and five distinct causes explain most lookups that come back empty. The check digit at position 11 catches only one of the five.
The label was bought but never handed over. The code is live in the carrier's database and has no scans, so some systems return "not found" rather than an empty timeline.
The code was entered into the wrong system. A UPS code beginning 1Z returns nothing on a postal operator's site, and an S10 code issued abroad often shows no events on the destination operator's page until the item has physically reached that country.
One character was mistyped. The check digit rejects most single-character slips in an S10 code, but numeric courier formats without a published check rule fail quietly, returning nothing instead of an error.
The parcel sits between two operators. On cross-border shipments the origin operator stops updating at export and the destination operator has not yet opened its own record, which produces a gap of several days.
The code has aged out of the search window. Operators retire completed records after a retention period, after which the same 13 characters return no history.
What a tracking code does not tell you
A tracking code records discrete scan events at fixed points, not continuous position, so hundreds of kilometres can pass between two consecutive entries. It is a chain of receipts, not a beacon.
Scan data is also imperfect at the source. In its nationwide review of package delivery scanning, report DR-AR-18-001 of 27 October 2017, the USPS Office of Inspector General examined 25.5 million questionable scans and found that 8.3 million of them, or 33 percent, carried no location data at all, and that 1.9 million were improper. The same audit recorded 4.3 billion packages scanned in fiscal year 2016, a 22 percent rise on the 3.5 billion of fiscal year 2015. Those figures describe one operator in one period, but the mechanism is general: a tracking page reflects what was scanned, not what happened.
Three specific things a code cannot confirm: that the parcel will arrive on the day a page estimates, that the contents match the manifest, and that the person who signed was the addressee. A delivery scan is evidence of a scan at a location and nothing more. Anyone reading only the last line is reading the weakest part of the record, while the full event list, with timestamps and facility names, carries the actual information. The audit report sets out how those gaps arise.
When one order produces more than one code
One order routinely generates several tracking codes, because codes attach to physical pieces and to handovers rather than to orders: a shipment of 4 boxes produces 4 piece-level codes. Many carriers add a master code on top that groups the 4 together.
Split shipments are the second cause. A retailer holding two of three items in one warehouse and the third in another dispatches two consignments, each with its own code and its own delivery date, against a single order number.
Handovers are the third. On a cross-border route the origin operator issues one identifier and the destination operator may map the item to a domestic identifier of its own, so the same parcel is searchable under two codes on two different websites. Returns behave the same way: a return label is a new shipment and carries a fresh code, never the original one.
Marketplace and cross-border variants
Marketplace platforms such as AliExpress, Temu and Shein show an internal order reference before any carrier code exists, and the 2 identifiers are not interchangeable. The order reference resolves only inside the platform, never on a postal operator's tracking page.
Cross-border e-commerce parcels pass through at least 2 record systems. The origin operator or its consolidator issues the first identifier, the item is exported, and the destination postal administration opens its own record on receipt. Where an operator runs an extra-territorial office of exchange, the code that works on one website can take several days to appear on the other, and the customs clearance events sit between the two.
The practical consequence is that a marketplace order can show 3 identifiers at once: the order number, the origin carrier code and the destination code. Only the last 2 belong on a tracking page.
When to stop waiting, and who to contact
USPS accepts a Missing Mail search request starting 7 days from the mailing date, which is the clearest published threshold for a domestic parcel whose code has stopped moving. The request needs the tracking code, the mailing date, and the sender and recipient addresses.
"Missing Mail search requests can be submitted starting 7 days from mailing."
The contract of carriage sits between the sender and the carrier, not between the recipient and the carrier. A buyer whose parcel has stalled therefore raises it with the seller, who is the carrier's actual customer and the only party able to open a claim. Marketplace buyer protection runs on its own clock, and those windows close whether or not a carrier investigation is still open.
Before contacting anyone, take the full event history rather than the last line: the date and place of the final scan, the service class from the first two letters if it is an S10 code, and the date the label was created.
Tracking code, order number, and the marketing sense of the phrase
Five different identifiers can travel with a single online order, and only one of them resolves on a carrier's tracking page. Confusing them is the most common reason a lookup fails on the first attempt.
| Identifier | Issued by | Where it works |
|---|---|---|
| Tracking code, also called tracking number | The carrier or postal operator | The carrier's tracking page and universal trackers |
| Order number | The shop or marketplace | The shop's own order page only |
| Customer or sender reference | The sender | The sender's systems; some carriers allow a reference search |
| Manifest or consignment number | The carrier, for a batch | Groups many parcels; not a single-item lookup |
| Analytics tracking code | An analytics platform | A website, not a shipment |
The last row is a genuine collision of vocabulary. In web analytics a tracking code is a snippet of JavaScript placed on a website to record visits and campaign sources, and it shares a name with the shipping identifier and nothing else. The shipping kind is a short printed string, 10 to 18 characters across the named courier formats, and it lives on a parcel rather than in a page template.
Copy the code exactly as printed, ignore the spaces, and enter it on the operator named on the label. If it is 13 characters long, the last two letters say which postal administration to ask, and the digit in position 11 has already told the system whether the rest was typed correctly.