Shopify Receives by SKU, Not Barcode — How to Label by Barcode

LabelCraft - barcode labels for Shopify that print at exactly the size you set.

EN · FR · DE · ES
The guarantees behind every label
Exact to ±0.1 mm

Every label prints at the size you set - measured, not approximate.

Never a silent failure

Overflow or a missing barcode always raises a visible warning before you print.

Whole-dot barcodes

Modules snap to your printer's dots, so codes stay crisp and scan first time.

Your barcodes, untouched

We never overwrite or reassign a product's existing barcode.

When you receive inventory in Shopify — through native Transfers and inventory shipments — the matching happens on the SKU. That is fine for updating stock counts, but it leaves a gap the moment you need scannable barcode labels for the units you just received: the barcode, not the SKU, is what your scanner reads at the till and on the shelf. This guide shows how to close that gap and print barcode labels directly from a receiving run with LabelCraft.

Why native Shopify receiving matches on SKU

A SKU is your internal stock-keeping code; a barcode (usually an EAN-13 or UPC-A GTIN) is the scannable number printed on the product. Shopify's receiving flow reconciles an incoming transfer or shipment against your variants by SKU because the SKU is the field a purchase order and a supplier packing slip almost always share. The barcode field is optional and frequently blank on newly-received products.

So receiving updates your on-hand quantity correctly, but it does nothing to put a scannable barcode on the physical unit. If the variant's barcode is missing or wrong, that only surfaces later — at the checkout, when the scanner beeps at nothing.

Why SKU-matching is a problem for barcode labels

Two things go wrong when the receiving step only knows about SKUs:

How LabelCraft labels by barcode at a receiving run

LabelCraft's Receive & label page reads your native Shopify inventory shipments and lets you print a scannable barcode label for every received unit — one label per unit by default, with a per-line override. It resolves each line to a live variant and prints the variant's barcode, not its SKU, so the label scans to the right product.

When you receive against a supplier file rather than a clean Shopify transfer, LabelCraft's matcher reconciles that file to your shipment lines by barcode first, then SKU as a fallback — the reverse of native receiving. It also folds the common GTIN ambiguities: a leading zero on a UPC-A versus EAN-13, and zero-padded codes, are treated as the same number, so a 12-digit UPC and its 13-digit EAN form match instead of slipping past each other.

If a received variant has no barcode at all, LabelCraft can generate a valid EAN-13 or Code 128 for it before you print, so you never hand-key a number or print a blank label. And nothing is silent: a line that can't be matched, or a barcode too small to scan at your label size, is flagged before the roll runs.

Step-by-step: print barcode labels from a receiving run

  1. Open LabelCraft from your Shopify admin (Apps → LabelCraft) and go to Receive & label.
  2. Pick the incoming transfer or inventory shipment you are receiving. LabelCraft reads its lines and accepted quantities.
  3. Receiving against a supplier CSV instead? Import it and let the matcher reconcile the file to your lines by barcode first, then SKU; review the exceptions panel for anything unmatched.
  4. For any line whose variant has a missing or invalid barcode, use Generate missing barcodes to create a valid EAN-13 or Code 128 first.
  5. Choose the template that matches your label stock; the default label count follows the received quantity, with a per-line override.
  6. Click Generate PDF, then print at 100% / Actual size — never “fit to page” — so the barcode scans.

Matching a supplier file that has barcodes but blank SKUs

Supplier exports often arrive with the GTIN/barcode populated and your internal SKU column blank — the exact case native receiving can't reconcile. Import the file in LabelCraft and the matcher keys on the barcode, falling back to SKU only where the barcode is absent, so those lines map to the right variants instead of being dropped.

Because the matcher canonicalizes GTINs, a supplier's 12-digit UPC-A still matches your variant's 13-digit EAN-13 (and vice-versa), and a leading-zero difference doesn't break the match. Lines the supplier file genuinely doesn't cover are listed in the exceptions panel — never quietly skipped — so you can resolve them by hand.

Troubleshooting

A received variant has no barcode

Use Generate missing barcodes to create a valid GS1 EAN-13 (or a Code 128 of your SKU where that's your standard) before printing. LabelCraft writes the new barcode back to the variant, so the next receiving run already has it.

The supplier's barcode doesn't match the variant

Usually a leading-zero or UPC-A↔EAN-13 difference — LabelCraft's matcher folds these automatically. If a code still won't match, run the barcode check: a wrong check digit or a SKU mistakenly stored in the barcode field is the usual culprit, and the audit names the fix.

Some lines matched on SKU and some on barcode

That's expected and safe: the matcher prefers the barcode and falls back to the SKU per line, so a mixed file still reconciles fully. Every line that matched on neither is surfaced in the exceptions panel for you to resolve — nothing is matched on a guess.

Install free — 200 labels per month →

Receiving without Stocky, or matching a tricky supplier file? See the receiving barcode labels guide and the Stocky alternative guide, or contact LabelCraft support.

Related guides