Order JSON → packing slip
Packing slips from the order JSON you already have.
Shops, 3PLs, and SaaS post a packing-slip or invoice payload. Slipmill returns a branded US Letter PDF. Two locked templates. You never design a thing.
POST /v1/render
{
"template": "packing-slip",
"brand": {
"name": "Northline Goods",
"accent": "#9E2A22",
"address": "18 Mercer Street\nHoboken, NJ 07030"
},
"data": {
"order_id": "NL-10428",
"date": "2026-08-31",
"ship_to": {
"name": "Cedar & Pine Outfitters",
"address": "440 Warehouse Ave, Dock 3",
"city": "Newark",
"region": "NJ",
"postal": "07105",
"country": "US"
},
"from": {
"name": "Northline Goods",
"address": "18 Mercer Street\nHoboken, NJ 07030"
},
"items": [
{
"sku": "TOTE-12",
"name": "Canvas tote — natural",
"qty": 12
},
{
"sku": "INK-RED",
"name": "Stamp pad, warehouse red",
"qty": 2
},
{
"sku": "TWILL-01",
"name": "Twill apron",
"qty": 4
}
],
"notes": "Leave on dock if closed. Pack totes upright.",
"tracking": "1Z999AA10123456784"
}
}Three steps. Then print.
01
Copy your Slipmill key
The first key is created when you sign in. Send it as x-sm-key. It is not an OpenAI key and not a line in someone else’s .env.
02
POST packing-slip JSON
Order id, ship-to, from, line items. Optional logo URL and a hex accent. Unknown templates are rejected.
03
Take the PDF
Synchronous application/pdf. One render is one PDF. Starter prints a small Slipmill footer; paid plans do not.
Two templates. That’s the product.
Slipmill is not a generic PDF API, not a marketing-graphics tool, and not a bring-your-own-HTML renderer. The packing slip and the invoice are code we own. You send data. We print it.
Packing slip
Order, ship-to, from, SKUs, qty, optional notes and tracking.
Invoice
Line amounts in cents. We print tax if you send it. We do not calculate tax.