The query is HTML
HTML to packing slip? POST JSON instead.
You searched for HTML to packing slip. The mill does not convert HTML. You POST order JSON. We return a branded US Letter packing slip as application/pdf.
The query says HTML. The mill says JSON. That is the whole fork. Slipmill is not DocRaptor. It is not PDFShift. Those products take markup you own and print it. We own two locked templates: packing-slip and invoice. You never send HTML or CSS.
People type HTML to packing slip when a shop already has a theme block, a Liquid snippet, or a PHP page that looks like a slip. They want that page turned into a PDF. That is the HTML-to-PDF category. The category compare lives on Vs HTML-to-PDF. This page owns the query you typed.
If you already serialize the order — id, ship-to, from, SKU, qty — you do not need the HTML page. Map those fields into the packing-slip schema. POST /v1/render. Header x-sm-key. The response is application/pdf, US Letter, synchronous. One request is one slip.
A locked template is the product. Header, ship-to, items, optional notes and tracking. brand.name, optional brand.accent, and on paid plans an optional https logo_url. Starter prints a small Slipmill footer. Pro and Scale drop it. You do not drag a box. You do not upload a plate.
We do not ship the carton. We do not buy postage. We do not talk to a carrier. We do not print a customs form. We do not run a tax engine. The packing slip is the sheet in the box. The invoice is the other locked template, cents as sent, if you need billing paper.
Keep your HTML mill if the document is art-directed and you want to maintain CSS. Come here if the document is a packing slip and you want to stop maintaining CSS. Shops, 3PLs, and custom backends that already have order JSON are the customer.
Validate the shape on the packing-slip JSON tool if you want. Then get a key and POST. Fail closed on a bad key or a bad body. The live sample PDF is at /sample. The schema is in the docs. The mill prints what you send.
curl
curl -X POST https://slipmill.com/v1/render \
-H "x-sm-key: YOUR_SLIPMILL_KEY" \
-H "Content-Type: application/json" \
-d '{
"template": "packing-slip",
"brand": {
"name": "Northline Goods",
"accent": "#9E2A22",
"address": "18 Mercer Street, Hoboken, 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, Hoboken, NJ 07030"
},
"items": [
{ "sku": "TOTE-12", "name": "Canvas tote — natural", "qty": 12 }
]
}
}' \
--output packing-slip.pdfQuestions
No. We do not accept HTML or CSS. Two locked templates we own. You POST JSON.
Order JSON: brand, ship-to, from, line items. POST /v1/render with x-sm-key. US Letter application/pdf back.
On /vs/html-to-pdf. That page owns HTML-to-PDF as a category. This page owns the HTML-to-packing-slip query.