Logistics and labels

Packing slip PDF API for fulfillment workflows

Generate packing slip PDFs from order, shipment, carton, and item data for ecommerce, 3PL, OMS, and warehouse fulfillment workflows.

PRIMARY API Template Render
ENDPOINT /api/v1/template-render
SYSTEMS OMS / WMS / 3PL backend / Shopify app backend
Job to be done

Render packing slips from shipment, recipient, item, and carton data so fulfillment teams can print or attach a consistent document for each outbound order.

When to use this API

  • Your OMS or WMS already has order items, quantities, recipient data, and shipment identifiers.
  • You need a PDF packing slip for warehouse print stations or customer parcel inserts.
  • You want one approved layout reused across warehouses, brands, or sales channels.
  • You may need a barcode or QR code for order lookup or return intake.

What it does not replace

  • You need to buy postage, rate a shipment, or create a carrier label.
  • You need warehouse inventory management rather than document rendering.
  • You need legal invoice or e-invoice semantics.

Which endpoint to call

PRIMARY

/api/v1/template-render

Template Render is the default path for this workflow.

SECONDARY 1

/api/v1/pdf/render

Use this when the workflow needs the related API path, template contract, or capabilities lookup.

Minimal request

POST /api/v1/template-render - packing_list template with one shipment.

{
  "template_id": "packing_list",
  "data": [
    {
      "shipment": {
        "number": "PL-2026-1001",
        "date": "2026-05-29"
      },
      "shipper": {
        "name": "Acme Warehouse",
        "address": "1200 Logistics Pkwy"
      },
      "consignee": {
        "name": "Receiver Inc.",
        "address": "123 Main St"
      },
      "items": [
        {
          "item_no": "1",
          "description": "Replacement filter",
          "quantity": "2",
          "unit": "pcs",
          "gross_weight": "1.2 kg",
          "net_weight": "1.0 kg"
        }
      ]
    }
  ]
}

What gPdf handles

  • Template Render for published packing slip layouts.
  • JSON Render for custom packing slip pages during design or one-off workflows.
  • Tables, item rows, address blocks, optional barcodes, and PDF output.
  • Deterministic reprints when the same data and template are used.

What your system owns

  • Order data, item quantities, shipment state, warehouse routing, and customer messaging.
  • Template field mapping, print station routing, and reprint policy.
  • Any carrier, customs, or invoice document that must travel with the parcel.

Production checklist

  1. Test the longest SKU, item name, and address combinations.
  2. Validate one-item, multi-carton, backorder, and partial shipment cases.
  3. Use Template Render after the packing slip layout is approved.
  4. Log template_id and X-Request-Id for each fulfillment print request.
  5. Keep carrier label generation separate from packing slip rendering.

Claim boundaries

  • gPdf renders the packing slip PDF; it does not manage inventory or fulfillment state.
  • A packing slip is not automatically a tax invoice or customs document.
  • Carrier label purchase and shipment rating remain outside gPdf.

Packing slips fit the template path

Packing slips usually have a stable structure: shipper, recipient, shipment number, item rows, and optional notes. That makes Template Render a strong fit after the layout is approved.

JSON Render still matters during design. It lets your team tune columns, spacing, barcode placement, and page breaks before publishing the stable template_id contract.

FAQ

Is a packing slip a separate gPdf endpoint?
No. Use Template Render for an approved packing slip template or JSON Render when your system describes the layout directly.
Can packing slips include barcodes?
Yes. gPdf can render barcode elements in the PDF. Your system owns the encoded order, carton, or return payload.
Does gPdf create carrier labels?
No. Carrier labels are a separate workflow. gPdf renders PDFs from the data your carrier or shipping system provides.
Can one request render multiple packing slips?
Template Render accepts a data array for multiple items in one request, within the public API limits documented for that endpoint.