Packing lists
Packing list with barcodes PDF API
Packing list that includes SKU barcode-ready payload text for scan-and-pack workflows. Keeps warehouse rows legible when orders span multiple pages. 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-with-barcodes-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-9910",
"ship_to": {
"name": "Nora Kim",
"address": "77 Lake Ave, Chicago"
},
"packages": [
{
"box": "1 of 1",
"weight_lb": 6.2,
"items": [
{
"sku": "MUG-WHT",
"barcode": "000123456789",
"name": "White mug",
"quantity": 6
}
]
}
],
"notes": "Scan each SKU before sealing"
}
}
JSON
curl -sS -X POST https://api.texify.dev/render \
-H "Content-Type: application/json" \
--data @packing-list-with-barcodes-payload.json \
--output packing-list-with-barcodes.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-9910",
"ship_to": {
"name": "Nora Kim",
"address": "77 Lake Ave, Chicago"
},
"packages": [
{
"box": "1 of 1",
"weight_lb": 6.2,
"items": [
{
"sku": "MUG-WHT",
"barcode": "000123456789",
"name": "White mug",
"quantity": 6
}
]
}
],
"notes": "Scan each SKU before sealing"
}
}''')
response = requests.post(
"https://api.texify.dev/render",
json=payload,
timeout=90,
)
response.raise_for_status()
with open("packing-list-with-barcodes.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-9910",
"ship_to": {
"name": "Nora Kim",
"address": "77 Lake Ave, Chicago"
},
"packages": [
{
"box": "1 of 1",
"weight_lb": 6.2,
"items": [
{
"sku": "MUG-WHT",
"barcode": "000123456789",
"name": "White mug",
"quantity": 6
}
]
}
],
"notes": "Scan each SKU before sealing"
}
};
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-with-barcodes.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-9910",
"ship_to": {
"name": "Nora Kim",
"address": "77 Lake Ave, Chicago"
},
"packages": [
{
"box": "1 of 1",
"weight_lb": 6.2,
"items": [
{
"sku": "MUG-WHT",
"barcode": "000123456789",
"name": "White mug",
"quantity": 6
}
]
}
],
"notes": "Scan each SKU before sealing"
}FAQ
FAQ
Can I use Packing list with barcodes 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
Warehouse packing list with order details, destination, package counts, weights, and item rows. Built for ecommerce and fulfillment APIs.
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.