Texify

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.

Packing list with barcodes PDF preview

JSON schema

Fields this template expects.

FieldTypeRequiredDescription
order_numberstringYesOrder or shipment reference.
ship_toobjectYesDestination address.
packagesarrayYesPackages, weights, dimensions, and item rows.
notesstringNoWarehouse or customs notes.

API examples

POST LaTeX and JSON. Receive PDF bytes.

curl
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.pdf
Python
import 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)
Node fetch
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"].

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.

Sample 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"
}

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.