Packing slips
Packing slip · Hello Minimalist
Minimal packing slip with repeated header and footer section
Use templateTemplate library
Choose a packing slip, add your branding, and connect each order’s data. Present items, quantities, and fulfillment notes in a document that travels inside the package.
Packing slips
Minimal packing slip with repeated header and footer section
Use templatePacking slips
A4 portrait boutique packing slip with a replaceable logo image, billing and shipping addresses, order details, repeatable product rows with images, an automatic quantity count, gift notes, and a centered contact and social footer. Includes sample branding and product imagery.
Use templatePacking slips
A4 landscape (297 × 210 mm) packing slip with a dynamic order barcode, ship-to address, order and shipping details, repeatable item rows with product thumbnails, and notes. Includes editable sample content and optional image URL bindings.
Use templateNo designs match your search.
Prepare every order
Organize what the warehouse needs to check and what the customer should find inside the package.
Connect the order reference, shipping date, and delivery name and address. Keep the reference visible on orders spanning several pages.
Use a dynamic table for SKUs, descriptions, and quantities. For partial shipments, distinguish the quantity ordered from the quantity packed in this shipment.
Add packing instructions, observations, and a reference for the team that prepared the parcel.
Adjust the page size, margins, and branding. Test a short order and one with many items before publishing.
Open a packing slip on this page and save a copy in your team’s project.
Bind the address and reference to your data and configure the table rows for the order’s items.
Publish your copy and generate a packing slip per shipment from the app or with your template ID in the API.
Your data, your layout
This order has two items with ordered and packed quantities. Adapt the example to the references and fields in your own system.
The order fields are illustrative: each design may use a different schema. Match the names to “Schema & default data” in your copy and replace template_id with your published template’s ID.
Download packing-slip-request.json Understand data field bindings{
"template_id": "YOUR_PUBLISHED_TEMPLATE_ID",
"expiry_minutes": 60,
"data": {
"order": {
"number": "ORD-2048",
"ship_date": "2026-10-30",
"recipient": {
"name": "Alex Morgan",
"address": "18 Example Street",
"city": "Portland",
"postal_code": "97201",
"country": "US"
},
"items": [
{
"sku": "MUG-01",
"description": "Ceramic mug",
"ordered_quantity": 2,
"packed_quantity": 2
},
{
"sku": "TOTE-02",
"description": "Canvas tote",
"ordered_quantity": 1,
"packed_quantity": 1
}
],
"instructions": "Pack fragile items separately.",
"packed_by": "Warehouse team"
}
}
}From template to PDF
Save the file as packing-slip-request.json, replace the template ID, and adapt its data. Create an API token with documents:create and documents:read and access to that template. Run these commands from your terminal or server.
export SHIPPDF_API_TOKEN='YOUR_API_TOKEN'
curl --fail-with-body https://api.shippdf.com/v1/documents \
-H "Authorization: Bearer $SHIPPDF_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: packing-ORD-2048" \
--data-binary @packing-slip-request.jsonA successful request uses one generation credit and returns HTTP 202 with a queued document. Keep the token out of browser code. Reuse the idempotency key only when retrying the same request; use a new one for a different document.
{"id":"doc_example","status":"queued","pdf_url":null}export SHIPPDF_DOCUMENT_ID='YOUR_RETURNED_DOCUMENT_ID'
curl --fail-with-body \
"https://api.shippdf.com/v1/documents/$SHIPPDF_DOCUMENT_ID" \
-H "Authorization: Bearer $SHIPPDF_API_TOKEN"Use the actual ID from your response. If the status is queued or processing, wait before checking again. When it is completed, open the returned pdf_url. If it is failed, inspect failure before generating again.
{"id":"doc_example","status":"completed","expiry_minutes":60,"pdf_url":"https://…/document.pdf"}The example sets expiry_minutes: 60 for one-hour download links. Read the same document again to get a fresh link without generating another PDF.
Yes. Configure a dynamic table and test page breaks with a long order. Check references, headers, and quantities in the preview.
The layout is editable. Choose the columns your workflow needs: SKUs, descriptions, and quantities may be enough, and you can add prices when needed.
Send ordered and packed quantities as separate fields and display them in the table. The template presents your data; it does not update your inventory.
They are different documents. A packing slip describes the order’s contents. Use an address-label template on the outside and obtain postage from your carrier.
Choose a design, connect your items, and preview the document before publishing.