Export the SSCC numbers your label software printed, export the SSCC numbers listed in your advance shipping notice (ASN), and compare them line by line before the truck leaves: the same 18 digits, the same pallet, the same contents. An AI assistant does the comparison in minutes. A person still scans one real label per pallet.
The reason this goes wrong is rarely a bad barcode. It is a pallet that was rebuilt after its label was printed, or a reprint that received a new number while the ASN kept the old one. The retailer's dock scans the pallet, finds a number its system has never heard of, and the delivery is held or refused. Everything below is a routine for catching that on your own dock.
What the receiving dock compares when a pallet arrives
An SSCC (serial shipping container code) is a number that identifies one logistics unit, usually a pallet. It has 18 digits made of four parts: an extension digit, your GS1 company prefix, a serial reference you choose, and a check digit that closes the number. The serial reference gets shorter as the prefix gets longer, because the first three parts always fill 17 digits. A 7-digit prefix leaves 9 digits for your own serial numbers.
On the label it is printed as a GS1-128 barcode, with the application identifier (00) in front of the 18 digits and the same number written out in readable digits beneath. In an electronic ASN the same 18 digits sit against the pallet, and under it the list of what is on that pallet. When the pallet is scanned at the dock, the receiving system looks the number up in the ASN and books the contents without anyone opening the wrap.
That is why the comparison matters. The label and the ASN are two records of the same fact, produced at different moments, often by different people or different screens. If they disagree, the receiving system cannot book the pallet electronically. At best someone counts it by hand and you are told off; at worst the load is refused or a charge is raised. The rules for what must appear on the label are published by GS1 and then tightened by each retailer, so check your retailer's supplier manual and the GS1 pages for the current layout before you build a checklist from this tutorial.
One boundary to set at the start: AI compares and explains. It does not create SSCCs. A number has to come from your own company prefix and a counter that never repeats, which is the job of the label software or warehouse system. If you are still deciding whether to connect to a retailer's system at all, the EDI decision for small suppliers covers that first.

The Complete Excel Course with AI Integration
From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.
By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner
Buy nowSix ways a label and an ASN end up disagreeing
Most mismatches fall into a handful of patterns. Knowing them lets you tell the AI what to look for, and tells you where to look when it reports something odd.
| Pattern | How it happens | What the comparison shows |
|---|---|---|
| Reprint with a new number | A label is damaged or misprinted, so a new one is produced and the system issues a fresh SSCC | The ASN lists the old number; the label export lists the new one |
| Pallet rebuilt after labelling | Cartons are moved between pallets to fill a gap or fix a short pick | The SSCC matches, but the contents on the ASN no longer match the pallet |
| Check digit wrong | A number is typed or pasted by hand, or a spreadsheet damages it | The 18th digit fails the arithmetic test |
| Digits lost in a spreadsheet | A number starting with 0 loses its first digit, or becomes scientific notation | 17-digit values, or values such as 5.01E+17 |
| Pallet on the label list, not on the ASN | An extra pallet is added at the last minute | One more SSCC in the label export than in the ASN |
| Number reused | A serial counter is reset, or an old template is printed again | An SSCC that already appears on an earlier shipment |
The fourth pattern deserves its own warning. Open a CSV of SSCCs in a spreadsheet and the program helpfully treats an 18-digit number as a number. A leading extension digit of 0 disappears, the value is shown in scientific notation, and because Excel keeps only 15 significant digits, the last digits of an 18-digit SSCC are turned into zeros. Microsoft's own fix is to format the column as text before the numbers go in, since reformatting afterwards does not bring the lost digits back. The data on your screen is then no longer what was printed. Every step below starts with getting both lists out as text.
Six pallets, three problems: the check on one outbound shipment
Here is an illustrative shipment. A small business makes terracotta planters and ships six pallets to a garden-centre chain, with an ASN sent the evening before. The prefix and serial numbers below are invented for the example.
The label software can export a CSV of every label printed that day. The ASN sits in the EDI portal, or in the file the warehouse system generated. After pasting both into one spreadsheet, the comparison looks like this.
| Pallet | SSCC on label export | SSCC on ASN | Contents on ASN | Result |
|---|---|---|---|---|
| 1 | 050123450000001234 | 050123450000001234 | 40 x large planter | Match |
| 2 | 050123450000001241 | 050123450000001241 | 60 x medium planter | Match |
| 3 | 050123450000001258 | 050123450000001258 | 96 x small planter | Match |
| 4 | 050123450000001289 | 050123450000001265 | 72 x herb pot | Label reprinted: new number on label |
| 5 | 050123450000001273 | 050123450000001272 | 48 x trough | Check digit wrong on the label |
| 6 | 050123450000001296 | (missing) | - | On label list, not on ASN |
Three problems in six pallets, and none would be obvious from the dock. Pallet 4 had its label scuffed by the stretch-wrapper, so someone printed a replacement, and the system issued number ...1289 instead of reprinting ...1265. The ASN was already built. Pallet 5 is the sort of thing that happens when a number is retyped: the final digit should be 2 and the label says 3. Pallet 6 is a late extra that was labelled but never added to the ASN.
The fix for each is different. For pallet 4, correct the ASN to the number on the label (cheaper than relabelling), or reprint the original number if your system allows it. For pallet 5, reprint from the system rather than editing the digits. For pallet 6, amend the ASN to add the pallet with its contents. Found at 4 pm on the dock, that is ten minutes of work. Found at the retailer's gate, it is a refused delivery and a rebooked slot.
Getting both lists out as plain text
You need two files, each with one row per pallet. The label export usually comes from the label software, the warehouse system or the courier portal, as a CSV or an Excel file with a column for the SSCC and, ideally, the contents, the shipment reference and the print time. The ASN is either a screen in the EDI service, a file your ERP generated, or the spreadsheet you built it from. Preparing an ASN from pick lists shows how to make the second file reliable.
- Export the label list for the shipment only, not the whole day, so extras from other orders do not appear as false alarms.
- Open the file through the spreadsheet's import or text-import option and set the SSCC column to text before it loads. If you have already opened it normally, close it without saving and reimport.
- Keep the SSCC column as the only thing in that column: no spaces, no brackets, no "(00)" in front. If the export includes the application identifier as "(00)", ask the AI to strip it, but check what it did on three rows.
- Add a column for the pallet number or carton count so a human can find the pallet on the dock floor.
- Paste both lists into one workbook on separate tabs, or into a chat assistant as two clearly labelled blocks.
If the files contain customer names, prices or addresses, delete those columns first, or use a business plan where content is not used for training by default. The comparison only needs the SSCC, a pallet reference and the contents.
The comparison prompt and the report it should give back
Ask for a short, structured report rather than a narrative. Tell the assistant the rules of the test, so it does not guess them.
I am attaching two lists for one outbound shipment.
LIST A is the SSCCs printed on our pallet labels (from the label software).
LIST B is the SSCCs in the ASN we are about to send (with contents).
Treat every SSCC as text. Each should be exactly 18 digits.
Please:
1. Match A to B by SSCC and report which SSCCs appear in only one list.
2. For each SSCC in both lists, compare the contents description and quantity.
3. Flag any SSCC that is not exactly 18 digits, contains letters or spaces, or looks like scientific notation.
4. Flag any SSCC that appears twice in either list.
5. Do NOT calculate or correct check digits yourself. Instead, list the SSCCs and I will test them with a formula.
6. If two numbers differ by only one or two digits, say so, since that suggests a typing slip or a reprint.
Return a table: pallet, SSCC in A, SSCC in B, issue, suggested action.
If everything matches, say "No differences found" and show counts of A, B and matches.
A realistic reply, again illustrative, would look like this:
Counts: List A has 6 SSCCs, List B has 5, 4 match exactly.
Pallet 4: A = 050123450000001289, B = 050123450000001265. Different numbers,
same contents (72 x herb pot). Likely a reprint. Suggested action: confirm
which label is on the pallet, then correct the ASN.
Pallet 5: A = 050123450000001273, B = 050123450000001272. Differ in the last
digit only. Likely a typing slip. Suggested action: check the check digit and
reprint from the system.
Pallet 6: in A only (050123450000001296). Suggested action: confirm whether
this pallet is on the truck; if so, add it to the ASN.
No duplicates, no length errors.
Read what you got rather than trusting it. Count the rows yourself: six labels, five ASN lines, four exact matches. If the assistant's counts disagree with a quick COUNTA in the spreadsheet, stop and ask it to list every SSCC it has seen, and compare that list with the source. Language models read long digit strings well but occasionally drop or transpose a digit in a re-typed table, which is the exact error you are trying to catch, so the check on the output matters as much as the check on the labels. If you do the matching with a spreadsheet lookup instead, the AI's job shrinks to writing the formula and explaining the exceptions, which is safer. The same habit applies to every list comparison; why AI gets sums wrong in quotes and invoices explains why.
Testing the check digit with a formula, not with the chatbot
The 18th digit of an SSCC is calculated from the first 17. Starting from the rightmost of those 17 digits, multiply alternately by 3 and 1, add the results, and the check digit is whatever brings the total up to the next multiple of 10. For the number ending ...125 plus its check digit, the working is below (illustrative figures, matching pallet 3 above).
| Position | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9-14 | 15 | 16 | 17 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Digit | 0 | 5 | 0 | 1 | 2 | 3 | 4 | 5 | 0 | 1 | 2 | 5 |
| Weight | 3 | 1 | 3 | 1 | 3 | 1 | 3 | 1 | 3 or 1 | 3 | 1 | 3 |
| Product | 0 | 5 | 0 | 1 | 6 | 3 | 12 | 5 | 0 | 3 | 2 | 15 |
The products add up to 52. The next multiple of 10 is 60, so the check digit is 8, and the full SSCC is 050123450000001258. A label that said ...1259 would fail.
You do not need to do this by hand, and you should not ask a chatbot to do it row by row. Put the SSCC (as text) in column A and this formula in column B. It returns TRUE when the last digit is correct:
=MOD(10-MOD(SUMPRODUCT(--MID(LEFT(A2,17),ROW($1:$17),1),3-2*(MOD(ROW($1:$17),2)=0)),10),10)=VALUE(RIGHT(A2,1))
It is written for Excel, where SUMPRODUCT evaluates the row-number array without any extra keys; in Google Sheets, if it returns an error, wrap it in ARRAYFORMULA(). If you are not sure how to paste it, ask an assistant to explain it step by step and test it on a number you have verified: pallet 3's number must return TRUE and pallet 5's must return FALSE. Testing a formula on one known good value and one known bad value is the only way to trust it. The ChatGPT and Excel guide covers asking an assistant to build and explain formulas like this.
The formula checks arithmetic. It cannot tell you that a valid-looking number was issued by your company, or that it has not been used before. For that you need the register described in a later section.
Checking what is on each pallet, not only its number
A correct SSCC pointing at the wrong contents is just as bad. The retailer's system books whatever the ASN says is on that pallet, so a rebuilt pallet creates stock errors on their side and a short-delivery claim on yours. Compare the contents line as well as the number.
If your label carries only the SSCC, the contents check is between the ASN and your own pick list or loading sheet. If the label also carries content data, such as the product barcode (application identifier 02), the item count (37), a batch or lot (10), or a best-before or expiry date (15 or 17), compare those too. Those identifiers come from the GS1 specifications, which also set combinations: the GS1 Logistic Label Guideline says (02) may only be used together with the SSCC and a count in (37), and that a batch or date always relates to the product identified on the label. Retailers decide which identifiers they want, so confirm the list against that guideline and your retailer's manual.
For a business shipping mixed pallets, the contents check is where AI earns its place, because the descriptions rarely match word for word. A gift-shop supplier sending a mixed pallet of candles and diffusers may have "Candle, amber, 200 g" on the ASN and "AMBER CANDLE 200G x 24" on the pick sheet. Ask the assistant to compare quantity per product rather than text, and to list any product that appears on one side only.
Compare the quantities per product between the pick list (LIST C) and the ASN contents (LIST B)
for each SSCC. Match products by SKU first, then by description if the SKU is blank.
Report any SSCC where the total units differ, and any product present on one side only.
Do not assume two similar descriptions are the same product: list those as "needs a person".
The instruction to put uncertain matches in a "needs a person" bucket is what keeps the report honest. Without it, the assistant will happily decide that "Amber 200 g" and "Amber 250 g" are the same line.
A before-and-after: the reprint that nearly shipped twice
Consider a small food business sending chilled dips to a wholesaler on shared pallets. One pallet's label is torn when the cling film is cut. The packer prints a new one from the label software's "reprint last" button, which issues a new SSCC because the system treats it as a new print. The old torn label stays, half-stuck, on the lower layer.
Before the routine: the ASN sends the old number; the new label goes on the top layer; the dock scanner reads whichever label is nearer the camera. If it reads the torn one, it finds the ASN number; if it reads the new one, it finds nothing. Sometimes the delivery passes, sometimes it does not, and nobody can say why.
After the routine: the comparison shows the same contents under two numbers across the label export and the ASN. The supervisor removes the old label completely, keeps the new number, and amends the ASN. One pallet, one label, one number. Add a rule to the wording on your dock sheet: a damaged label is removed in full before a new one goes on.
The register that stops numbers being reused
GS1's transport and logistics guideline says an SSCC may not be reallocated within one year of the shipment date; your retailer's manual may ask for longer, so check both. A reused number is the worst of the six patterns, because the retailer's system may match the new pallet to an old, closed ASN.
Keep a simple register: a spreadsheet with one row per SSCC ever issued, the date, the shipment reference and the customer. Each time you run the comparison, add a final step to the prompt.
LIST D is our register of every SSCC used in the last 24 months.
Tell me if any SSCC in LIST A already appears in LIST D, with the date and shipment it was used on.
After I confirm the shipment is clean, give me the rows to append to the register.
If your label software issues numbers from a counter that cannot go backwards, the register will rarely find anything. It is still worth holding, because the one time someone resets the counter after a software update or loads an old template, it is the only thing that catches it. A register is also the first thing to hand over if a retailer asks you to prove which pallet a given number belonged to.
The test scan before the truck is released
The comparison proves that two lists agree. It cannot prove that the barcode on the pallet says what the list says. That needs a scan of the physical label, and one pallet per shipment is the minimum. Scan the label on a pallet that was labelled last, since the last label printed is often the one with the worn ribbon or the changed printer setting.
- Scan with a handheld or a phone app that shows the parsed application identifiers. You should see (00) followed by 18 digits. If the app shows the number without (00), or shows a plain Code 128 result, the barcode was probably printed without the FNC1 character that GS1 requires straight after the start character to mark a GS1-128 barcode, and the retailer's scanner will not treat it as an SSCC.
- Read the human-readable digits under the bars and compare them with the scanned value. They must be identical.
- Check where the label sits. GS1's guideline recommends labelling two sides of a pallet with exactly the same data, so one label is always visible whichever way the pallet is stored. Retailer manuals then add their own rules, such as a flat area away from edges and wrap seams and a set height from the base. Use the retailer's own measurements, not a figure from a vendor's guide.
- Confirm the print is dark and the bars are sharp. A scanner that reads it on the first try is a good sign, but a scanner only proves that the bars are readable by that device. Print quality grades require a verifier, which some retailers ask suppliers to use, so ask whether yours does.
- Photograph the label next to the pallet and attach it to the shipment record. If a dispute follows, you have a dated image.
Record each scan result on a one-line sign-off, which becomes the last row of the routine below.
Shipment: SH-0412 Pallets: 6 Date/time: 15:40
List comparison run by: [name] Differences found: 3 All fixed: yes
Check digit formula: 6 of 6 TRUE
Register checked: no repeats
Test scan: pallet 6, (00) 050123450000001296 read OK, readable digits match
Placement matches customer manual: yes
Released by: [name]
A ten-minute routine and who should own it
The routine is short enough to fit between the last label being applied and the driver arriving. Assign it to the person who owns the dispatch desk, not the person who prints the labels, because the point is a second pair of eyes on the printer's work. A rough running order for a dozen-pallet shipment:
- Minutes 0 to 2: export the label list and the ASN, set the SSCC columns to text.
- Minutes 2 to 4: run the prompt, compare the counts with a spreadsheet count.
- Minutes 4 to 6: run the check digit formula over the label list and the register lookup.
- Minutes 6 to 8: fix the differences, in the right system: amend the ASN, or reprint labels from the label software, never hand-edit a digit.
- Minutes 8 to 10: test-scan one pallet, complete the sign-off, release the truck.
For a business that ships a few pallets a week, this is a spreadsheet and a chat window. For one that ships dozens a day, the same logic belongs inside the warehouse system as a validation rule, and AI is better used to read the exceptions list. Either way, start with the manual routine for a few weeks, because the things it finds teach you where your process leaks. If the same pattern keeps appearing, such as pallet rebuilds after labelling, the fix is upstream: move the label step later, or make a rebuild trigger a reprint. The same logic of tracing a recurring error to its cause is in tracing pick errors back to their cause.
What goes wrong when the check is trusted too much
The routine fails in predictable ways, and each is avoidable.
Comparing the wrong list. Someone exports the labels printed so far rather than the final set, or the ASN from a draft. The comparison passes and the shipment still fails. Always include the print time and ASN version in the filenames, and re-run after any change.
Trusting a pretty table. An assistant that returns "all 12 match" has not necessarily compared 12 numbers correctly. Check the counts, then spot-check three rows against the sources, picking one at the start, one in the middle and one at the end.
Fixing the symptom. Editing the ASN to match a label that is itself wrong solves nothing. Decide which record is right for each exception: the pallet in front of you decides, because that is what the scanner will read.
Skipping the scan. The lists can agree while the printer is printing every barcode without the FNC1 character. One scan catches it.
Not telling the retailer. If a number has to change after the ASN is sent, send an amended ASN and say so, using the retailer's process. A silent change is a mismatch.
Other suppliers, same check
The pattern is the same in other trades, with different failure points. A garden-products supplier with seasonal peaks sees pallet rebuilds when a plant order is split between two depots. A sports-goods wholesaler with mixed pallets sees the contents check fail most often, because sizes and colours vary. A coworking-furniture importer re-palletises containers on arrival, so the labels come from the supplier abroad and the pallets are rebuilt locally, which means labels printed upstream no longer describe what is on the pallet. In each case the answer is a fresh label and a fresh ASN line at the point where the pallet changes, and the comparison above run once at the end.
If your shipping paperwork is a wider problem, cross-checking a commercial invoice against a packing list uses the same compare-then-confirm approach for export documents.
Wording to put in your supplier procedure
Write the routine down in plain terms so it survives staff changes. A short version you can adapt:
Before any shipment with an ASN is released:
1. Export labels printed and the ASN, as text.
2. Compare both lists. Resolve every difference.
3. Test the check digit on every SSCC.
4. Check the register for repeats.
5. Scan one pallet and read the number aloud against the ASN.
6. Sign the dispatch sheet. If any step is skipped, the shipment is held.
That is the whole control. The AI is the fastest way to do step 2; every other step is a person or a formula. Keep it that way, and the retailer's dock will have no reason to remember your delivery.
Questions suppliers ask about SSCC checks
Can AI generate SSCC numbers for my pallets?
It should not. An SSCC must come from your GS1 company prefix and a serial counter that never repeats, so it belongs in your label software or warehouse system. Use AI only to compare numbers that already exist, and to write a spreadsheet formula that tests the check digit.
Does a successful scan prove the label is compliant?
No. A scan proves a scanner could read the bars. It does not prove the print quality, bar height, placement or data structure meet the retailer's rules. Combine the scan with the list comparison, and ask the retailer whether they expect a verifier report.
What if the retailer has its own label spec?
Follow the retailer's spec where it is stricter than GS1's. Retailers set their own placement, size and print-quality rules. Put those rules into your checklist from their supplier manual, and treat anything in it that differs from your usual practice as the first thing to test.
How often should I run this comparison?
Run it for every outbound shipment that carries an ASN, at the point where labels are finished and the ASN is ready to send. With a good export the check takes about ten minutes for a dozen pallets, and it is quickest when it becomes a fixed step before the truck is released.
Further reads
- Best AI for Ecommerce Operations: Orders, Stock, Returns, Suppliers — See where order, stock and return jobs fit around dispatch.
- Importer Product Compliance Checklist: AI Flags Missing Documents — Apply the same flag-the-gap method to product documents.
- AI for Warehouse Loading: Plan Pallets and Trucks From Orders — Plan which pallets go on which truck, then label them.
- Dock Scheduling for a Small Warehouse: Slot Rules and AI Reminders — Keep the dock free so the check happens before loading, not during.
- AI Tools for Shipping Documents: Commercial Invoices and Packing Lists — Extend the same cross-checking idea to invoices and packing lists.
- Stock Count Variance: Find Why Your Count and System Disagree — Trace why counts and system quantities disagree after dispatch.
- Faire vs Ankorstore: Which Wholesale Marketplace Suits a Small Brand? — A worked fee comparison on one sample wholesale order, plus reach, payment terms and minimums, and the figures to confirm on each vendor page.
- Pallet Delivery Rates: Build a Per-Pallet Price Grid by Zone — A carrier-side method for a zone-by-pallet price grid, with surcharges for fuel, tail-lift and waiting, and an AI check that finds gaps and odd prices.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: GS1's SSCC page and SSCC executive summary, the GS1 Logistic Label Guideline (release 1.3) and the GS1 Identification Keys in Transport and Logistics Guideline (gs1.org), and Microsoft's support note on Excel's 15-digit precision. Always confirm against your own retailer's current label specification.