A QR code on every box, generated from your ERP
Packaging runs are printed months before they reach a shelf. Create one dynamic code per SKU or per batch when the print order is raised, and keep the right to change where it points for as long as the box exists.
curl -X POST https://api.qravio.app/api/public/v1/qrcodes/bulk \
-H "Authorization: Bearer $QRAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"name": "SKU 4471 batch 2026-09A",
"type": "website",
"category": "dynamic",
"content": {
"url": "https://example.com/p/4471?batch=2026-09A"
},
"destinations": [
{
"target_url": "https://example.com/p/4471?batch=2026-09A"
}
],
"client_ref": "sku-4471-batch-2026-09A"
},
{
"name": "SKU 4472 batch 2026-09A",
"type": "website",
"category": "dynamic",
"content": {
"url": "https://example.com/p/4472?batch=2026-09A"
},
"destinations": [
{
"target_url": "https://example.com/p/4472?batch=2026-09A"
}
],
"client_ref": "sku-4472-batch-2026-09A"
}
]
}'How the integration works
Your ERP or PLM calls the API when a print job is approved, using the SKU and batch number as the client_ref. The response carries the short code and a scannable SVG to drop into the dieline. When a batch is recalled or a promotion ends, one PATCH repoints every box in that batch.
- 1Create an API key in your workspace under Developers (Pro or Agency plan).
- 2When a print job is approved, send its SKUs and batch numbers to POST /qrcodes/bulk, 50 per request, with the batch number as client_ref.
- 3Place each response preview_url (a scannable SVG) into the packaging artwork.
- 4After launch, PATCH a code destination to point a batch at a recall notice, a recipe or a reorder page.
What you get
Batch-level recalls
One code per batch means a recall can repoint exactly the affected boxes, not the whole product line.
Retry-safe imports
A client_ref this workspace has already used returns the existing code instead of a duplicate, so a failed ERP job can simply run again.
Scans by market
GET /qrcodes/{id}/analytics shows where each batch is being scanned, which tells you where it actually sold.
Your domain on the box
Attach a verified custom domain with custom_domain_id so the printed link carries your brand.
What each plan allows
Every call counts against the monthly quota, and a bulk request counts one call per item. Static codes use calls but not the dynamic QR allowance.
| Plan | API calls | Dynamic QRs | Webhooks |
|---|---|---|---|
| Free, Starter | No API access | n/a | No |
| Pro | 3,000 a month | 300 | Scan, lead, scan limit |
| Agency | 25,000 a month | No cap | Adds scan milestones |
Prices are on the pricing page.
Packaging API FAQ
Should I make one code per unit or per batch?
Per batch or per SKU for most brands. Per-unit serialisation works too, but every code is one API call and one dynamic QR, so size it against your plan: Agency allows 25,000 calls a month with no cap on dynamic QRs.
What happens to printed boxes if I change the destination?
Nothing on the box changes. The printed pattern encodes a short link, and the destination behind it updates as soon as you save.
Can I get a print-quality file?
Every QR in a response has a preview_url that returns a scannable SVG. Vector PDF export, including multi-code print sheets, is in the dashboard.
Other things teams build
Tickets
Issue a unique QR code per ticket from your booking system, stop it working after the event, and pause it when a ticket is refunded.
Restaurant tables
Generate a QR code for every table across every outlet from your POS, and see which tables and outlets get scanned, and when.
Inventory
Tag every asset with a QR code generated from your inventory system. Static codes for permanent labels, dynamic codes when the record can move.
Certificates
Put a verification QR code on every certificate you issue, generated from your LMS or credential system. Static codes do not count against your plan allowance.
Loyalty
Issue a personal QR code per loyalty member from your CRM, and receive a webhook each time it is scanned.
Campaigns
Generate a tracked QR code for every placement, store or channel in a campaign, with UTM tags and a schedule, from your own tools.
SaaS products
Add editable, tracked QR codes to your own product. Create them on behalf of your customers, organise them per account, and show scan analytics in your UI.
Start generating codes
Create an account, upgrade to Pro or Agency, and make a key under Developers in your workspace.