Packing Slip
Render one per shipped order from your fulfilment events, with the ship-to address, items by SKU and quantity, what follows later, and a barcode of the order number.
PDF, Letter, from 1 credit
Output

Variables
items[].backorderednumber0items[].detailtextForest greenitems[].nametextRidgeline 2-person tentitems[].quantitynumber1items[].skutextFH-TNT-2P-GRNmerchant.addresstext1420 Industrial Waymerchant.citytextPortland, OR 97210, United Statesmerchant.emailtextmerchant.logoUrltextdata:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 44 44%22%3E%3Crect width=%2244%22 height=%2244%22 rx=%229%22 fill=%22%23166534%22/%3E%3Cpath d=%22M22 10l9 14h-6l7 10H12l7-10h-6z%22 fill=%22%23fff%22/%3E%3C/svg%3Emerchant.nametextFernhill Supply Co.notetextThanks for your order. Keep this slip for returns within 30 days.order.datetext2026-10-14order.numbertextFH-2026-48213order.packagestext1order.shipMethodtextGround, 3 to 5 business daysorder.shippedOntext2026-10-15shipTo.addresstext218 Alder Street, Apt 4BshipTo.citytextDenver, CO 80203shipTo.companytextshipTo.countrytextUnited StatesshipTo.nametextJordan Ellis
Send any of these in modify. Anything you leave out prints the sample value, and the response lists it in warnings.
Render it
Save the template to your account first. Saving gives you its ID.
curl --request POST \
--url https://api.ojo.so/v1/pdf/template \
--header 'Authorization: Bearer <your API key>' \
--header 'Content-Type: application/json' \
--data '{
"templateId": "<YOUR_TEMPLATE_ID>",
"modify": {
"merchant": {
"name": "Fernhill Supply Co.",
"address": "1420 Industrial Way",
"city": "Portland, OR 97210, United States",
"email": "[email protected]"
}
}
}'What's included
- Code 128 order barcode
- SKU and quantity, no prices
- US Letter, one page


