Packing lists
Packing list PDF API
Warehouse packing list with order details, destination, package counts, weights, and item rows. Built for ecommerce and fulfillment APIs. Send this LaTeX template and JSON data to Texify in one /render request.
JSON schema
Fields this template expects.
| Field | Type | Required | Description |
|---|---|---|---|
| order_number | string | Yes | Order or shipment reference. |
| ship_to | object | Yes | Destination address. |
| packages | array | Yes | Packages, weights, dimensions, and item rows. |
| notes | string | No | Warehouse or customs notes. |
API examples
POST LaTeX and JSON. Receive PDF bytes.
cat > packing-list-standard-payload.json <<'JSON'
{
"entrypoint": "main.tex",
"resources": {
"main.tex": "\\documentclass[10pt]{article}\n\\usepackage[margin=0.65in]{geometry}\n\\usepackage{array,booktabs}\n\\pagestyle{empty}\n\\begin{document}\n{\\Huge\\bfseries Packing List}\\\\[4pt]\nOrder [[ .order_number ]]\\\\[0.2in]\n\\noindent\\textbf{Ship to}\\\\\n[[ .ship_to.name ]]\\\\\n[[ .ship_to.address ]]\\\\[0.25in]\n[[ range .packages ]]\\section*{Package [[ .box ]] --- [[ .weight_lb ]] lb}\n\\begin{tabular}{p{0.22\\textwidth}p{0.45\\textwidth}r p{0.2\\textwidth}}\n\\toprule\nSKU & Item & Qty & Barcode\\\\\n\\midrule\n[[ range .items ]][[ .sku ]] & [[ .name ]] & [[ .quantity ]] & \\texttt{[[ with .barcode ]][[ . ]][[ end ]]}\\\\\n[[ end ]]\\bottomrule\n\\end{tabular}\n[[ end ]]\n[[ with .notes ]]\\vspace{0.2in}\\noindent\\textbf{Notes:} [[ . ]][[ end ]]\n\\end{document}"
},
"data": {
"order_number": "ORD-2026-8812",
"ship_to": {
"name": "Jordan Lee",
"address": "44 Pine St, Seattle"
},
"packages": [
{
"box": "1 of 2",
"weight_lb": 3.4,
"items": [
{
"sku": "TSHIRT-BLK-M",
"name": "Black tee",
"quantity": 2,
"barcode": ""
}
]
}
],
"notes": "Gift note enclosed"
}
}
JSON
curl -sS -X POST https://api.texify.dev/render \
-H "Content-Type: application/json" \
--data @packing-list-standard-payload.json \
--output packing-list-standard.pdfimport json
import requests
payload = json.loads(r'''{
"entrypoint": "main.tex",
"resources": {
"main.tex": "\\documentclass[10pt]{article}\n\\usepackage[margin=0.65in]{geometry}\n\\usepackage{array,booktabs}\n\\pagestyle{empty}\n\\begin{document}\n{\\Huge\\bfseries Packing List}\\\\[4pt]\nOrder [[ .order_number ]]\\\\[0.2in]\n\\noindent\\textbf{Ship to}\\\\\n[[ .ship_to.name ]]\\\\\n[[ .ship_to.address ]]\\\\[0.25in]\n[[ range .packages ]]\\section*{Package [[ .box ]] --- [[ .weight_lb ]] lb}\n\\begin{tabular}{p{0.22\\textwidth}p{0.45\\textwidth}r p{0.2\\textwidth}}\n\\toprule\nSKU & Item & Qty & Barcode\\\\\n\\midrule\n[[ range .items ]][[ .sku ]] & [[ .name ]] & [[ .quantity ]] & \\texttt{[[ with .barcode ]][[ . ]][[ end ]]}\\\\\n[[ end ]]\\bottomrule\n\\end{tabular}\n[[ end ]]\n[[ with .notes ]]\\vspace{0.2in}\\noindent\\textbf{Notes:} [[ . ]][[ end ]]\n\\end{document}"
},
"data": {
"order_number": "ORD-2026-8812",
"ship_to": {
"name": "Jordan Lee",
"address": "44 Pine St, Seattle"
},
"packages": [
{
"box": "1 of 2",
"weight_lb": 3.4,
"items": [
{
"sku": "TSHIRT-BLK-M",
"name": "Black tee",
"quantity": 2,
"barcode": ""
}
]
}
],
"notes": "Gift note enclosed"
}
}''')
response = requests.post(
"https://api.texify.dev/render",
json=payload,
timeout=90,
)
response.raise_for_status()
with open("packing-list-standard.pdf", "wb") as pdf:
pdf.write(response.content)import { writeFile } from "node:fs/promises";
const payload = {
"entrypoint": "main.tex",
"resources": {
"main.tex": "\\documentclass[10pt]{article}\n\\usepackage[margin=0.65in]{geometry}\n\\usepackage{array,booktabs}\n\\pagestyle{empty}\n\\begin{document}\n{\\Huge\\bfseries Packing List}\\\\[4pt]\nOrder [[ .order_number ]]\\\\[0.2in]\n\\noindent\\textbf{Ship to}\\\\\n[[ .ship_to.name ]]\\\\\n[[ .ship_to.address ]]\\\\[0.25in]\n[[ range .packages ]]\\section*{Package [[ .box ]] --- [[ .weight_lb ]] lb}\n\\begin{tabular}{p{0.22\\textwidth}p{0.45\\textwidth}r p{0.2\\textwidth}}\n\\toprule\nSKU & Item & Qty & Barcode\\\\\n\\midrule\n[[ range .items ]][[ .sku ]] & [[ .name ]] & [[ .quantity ]] & \\texttt{[[ with .barcode ]][[ . ]][[ end ]]}\\\\\n[[ end ]]\\bottomrule\n\\end{tabular}\n[[ end ]]\n[[ with .notes ]]\\vspace{0.2in}\\noindent\\textbf{Notes:} [[ . ]][[ end ]]\n\\end{document}"
},
"data": {
"order_number": "ORD-2026-8812",
"ship_to": {
"name": "Jordan Lee",
"address": "44 Pine St, Seattle"
},
"packages": [
{
"box": "1 of 2",
"weight_lb": 3.4,
"items": [
{
"sku": "TSHIRT-BLK-M",
"name": "Black tee",
"quantity": 2,
"barcode": ""
}
]
}
],
"notes": "Gift note enclosed"
}
};
const response = await fetch("https://api.texify.dev/render", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
signal: AbortSignal.timeout(90_000),
});
if (!response.ok) throw new Error(await response.text());
const pdf = Buffer.from(await response.arrayBuffer());
await writeFile("packing-list-standard.pdf", pdf);The template
LaTeX source sent as resources["main.tex"].
\documentclass[10pt]{article}
\usepackage[margin=0.65in]{geometry}
\usepackage{array,booktabs}
\pagestyle{empty}
\begin{document}
{\Huge\bfseries Packing List}\\[4pt]
Order [[ .order_number ]]\\[0.2in]
\noindent\textbf{Ship to}\\
[[ .ship_to.name ]]\\
[[ .ship_to.address ]]\\[0.25in]
[[ range .packages ]]\section*{Package [[ .box ]] --- [[ .weight_lb ]] lb}
\begin{tabular}{p{0.22\textwidth}p{0.45\textwidth}r p{0.2\textwidth}}
\toprule
SKU & Item & Qty & Barcode\\
\midrule
[[ range .items ]][[ .sku ]] & [[ .name ]] & [[ .quantity ]] & \texttt{[[ with .barcode ]][[ . ]][[ end ]]}\\
[[ end ]]\bottomrule
\end{tabular}
[[ end ]]
[[ with .notes ]]\vspace{0.2in}\noindent\textbf{Notes:} [[ . ]][[ end ]]
\end{document}Live render
Try sample data now.
Posts this LaTeX template and sample JSON to /render, then opens the returned PDF bytes.
{
"order_number": "ORD-2026-8812",
"ship_to": {
"name": "Jordan Lee",
"address": "44 Pine St, Seattle"
},
"packages": [
{
"box": "1 of 2",
"weight_lb": 3.4,
"items": [
{
"sku": "TSHIRT-BLK-M",
"name": "Black tee",
"quantity": 2,
"barcode": ""
}
]
}
],
"notes": "Gift note enclosed"
}FAQ
FAQ
Can I use Packing list as a packing list PDF API?
Yes. Copy the LaTeX template, send it in resources with your data to /render, and Texify returns PDF bytes.
Can I change colors, copy, or field names?
Yes. Edit the LaTeX source and JSON placeholders to match your data model and brand before posting to /render.
Does this render real PDF text?
Yes. Texify compiles LaTeX to PDF, so text remains selectable, searchable, and stable across environments.
Related templates
More LaTeX PDF templates.
Packing lists
Packing list with barcodes
Packing list that includes SKU barcode-ready payload text for scan-and-pack workflows. Keeps warehouse rows legible when orders span multiple pages.
Shipping labels
Shipping label 4×6
Standard 4×6 shipping label with large destination block, service level, tracking number, and barcode-ready text field. Built for warehouse apps and commerce backends.
Shipping labels
Return label
Return merchandise label with RMA, customer address, warehouse destination, and barcode-ready payload text. Useful for ecommerce returns and support flows.