# QR codes on a packing slip

> A packing-slip QR code should carry the order ID in its URL, so returns, reorders and support open already knowing the order. Generate one code per slip at fulfilment time via bulk or API. Packing-slip codes reach a customer who has just opened their parcel — the highest-attention print placement a shop owns.

Source: https://useqr.app/docs/ecommerce/qr-code-on-a-packing-slip · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## Why the packing slip is prime placement

Reason it through rather than reaching for a statistic: the person reading a packing slip
has just opened a parcel they paid for and chose to receive. They are holding your
document, alone, with their phone within reach, at the exact moment questions arise —
does it fit, how do I return it, where is the rest of my order. No poster, advert or
pack-shelf placement gets a reader in that state. The
[unboxing insert](/docs/ecommerce/qr-code-in-the-unboxing-experience) shares the moment
but not the context: the packing slip is *about this order*, which is what makes its code
uniquely useful.

## The order ID belongs in the URL

The difference between a generic code and a good one is one query parameter:

```
example.com/order?id=SO-183742
```

Scanning opens a page that already knows the order — items, dates, return eligibility —
with no login-and-search hunt. From that one order-aware page, hang the actions in order
of real-world frequency:

1. **Start a return or exchange** — prefilled with the order's items; the
   [returns flow](/docs/ecommerce/qr-code-for-returns-and-exchanges) takes over.
2. **Support with context** — a contact form that arrives at your helpdesk already
   carrying the order ID. This quietly removes the single most common support
   back-and-forth ("what's your order number?").
3. **Delivery status** for the rest of a split shipment.
4. **Reorder** — one tap to re-buy consumables.
5. **Referral or review**, if you must — but one slip, one primary action; the
   [referral programme](/docs/ecommerce/qr-code-for-referral-programs) usually earns a
   separate insert.

Use an opaque token rather than a guessable sequential ID if the page shows anything
personal, or require a postcode confirmation on first open — an order URL is a mild
bearer credential.

## Generating a code per slip

Because the URL varies per order, the code is generated at fulfilment time:

- **Integrated**: your WMS or shop platform renders the code onto the slip template.
  The [keyless API](/docs/developers/free-qr-code-api-no-key) makes this a one-line
  image tag — `https://useqr.app/api/v1/qr?data=...&size=300` — with no key to rotate.
- **Batched**: export the day's orders and run them through [the bulk generator](/bulk)
  or `POST /api/v1/qr/batch` (**up to 1,000 per request**), then mail-merge onto slips —
  the [spreadsheet workflow](/docs/how-to/how-to-make-qr-codes-from-a-spreadsheet)
  scales surprisingly far.

Packing slips usually come off laser printers (fine at any sensible size) or **thermal
printers** — where module size floors bite. On a 203 DPI thermal head keep modules at
**0.5 mm or more**; the [thermal printing guide](/docs/print/thermal-printer-qr-codes)
has the full numbers. **2 × 2 cm** is the working size for a document read at 25–30 cm,
with a label that names the action: "Scan to manage this order".

## What not to do

Do not print five codes on one slip — return, review, follow, refer, reorder — because
five calls to action are none. One order-aware code with the actions behind it beats the
sticker-sheet approach. Keep marketing honest and secondary on a document whose job is
operational trust: the customer is checking their order, and the code should serve that
first. [Verify the slip template's code decodes](/validate) off a real printed slip,
not the PDF proof, before rollout.

## FAQ

### What should a QR code on a packing slip link to?
An order page with the order ID passed in the URL, offering returns, delivery status, support with the order context attached, and reorder. One order-aware code outperforms multiple single-purpose codes competing on the slip.

### How do I generate a different QR code for every order?
Render it at fulfilment time from your platform via an image API, or batch-generate from an order export — bulk tools and batch endpoints handle up to a thousand codes per request — and merge onto the slip template.

### Do QR codes print reliably on thermal packing slips?
Yes, within limits: at 203 DPI keep modules at 0.5 mm or larger and the payload short. Test a real printed slip, because thermal density and darkness settings change scan reliability.

### Is it safe to put the order number in the QR URL?
Use an opaque token or add a light verification step, such as confirming the delivery postcode, before showing personal details. An order URL is a bearer credential and packing slips get discarded in public bins.

## Try it

- https://useqr.app/url
- https://useqr.app/bulk
- https://useqr.app/validate
