Template gallery / packing-slip

packing-slip

Letter-size packing slip: order and ship-to blocks, ordered / shipped / backordered quantities per line, carton manifest, and a returns note. No prices by default. Table headers repeat across pages.

chromium default PDF 18 top-level fields 1 unit per page

Rendered preview of the packing-slip template
Rendered by Galley from the example payload below, at 816px wide , scale 2.

Fields

The full JSON Schema is below. Required fields are marked; anything missing comes back as a 422 naming the path, the expected type and a value that would be accepted.

Field Type Required Description
order_number string required
shipment_number string optional This shipment, when an order ships in more than one.
purchase_order string optional
ordered_on string (date) optional
shipped_on string (date) optional
carrier string optional
service string optional
tracking_number string optional
shipped_from string optional
accent string optional
notice string optional
returns_policy string optional
backorder_note string optional
shipper object { name, address, email, phone, … } required
ship_to object { name, company, address, phone } required
bill_to object { name, address, email } optional Defaults to ship_to.
line_items array of object { sku, description, detail, carton, … } required
cartons array of object { number, weight, dimensions, tracking_number } optional

Default render options

Applied unless you override them. Options are part of the cache key.

page_size "Letter"
margin "0.5in"
print_background true

Example payload

This exact object renders the preview above. It is also what the API echoes back in a validation error, so an agent can repair a payload without a round trip to the docs.

example.jsonjson
{
  "order_number": "SO-44120",
  "shipment_number": "SHP-44120-1",
  "purchase_order": "PO-24118",
  "ordered_on": "2026-09-11",
  "shipped_on": "2026-09-16",
  "carrier": "Atlantic Freight",
  "service": "2-Day Air",
  "tracking_number": "1Z999AA10123456784",
  "shipped_from": "Jacksonville DC",
  "shipper": {
    "name": "Galley Supply Co.",
    "address": "2727 Jean Lafitte Dr, Fernandina Beach, FL 32034",
    "email": "orders@galleysupply.test",
    "phone": "(904) 555-0110"
  },
  "ship_to": {
    "name": "Lena Ortiz",
    "company": "Acme Robotics",
    "address": "100 Market St, Floor 9, Dock B, Austin, TX 78701",
    "phone": "(512) 555-0163"
  },
  "bill_to": {
    "name": "Acme Robotics — Accounts Payable",
    "address": "PO Box 2211, Austin, TX 78767",
    "email": "ap@acme.test"
  },
  "line_items": [
    {
      "sku": "TIL-3060-MW",
      "description": "Matte white wall tile, 3x6",
      "detail": "Dye lot 22-A. 12 pcs per carton.",
      "carton": "1–3",
      "quantity_ordered": 46,
      "quantity_shipped": 46
    },
    {
      "sku": "TIL-1212-HEX",
      "description": "Hex mosaic floor tile, 12x12 sheet",
      "carton": "4",
      "quantity_ordered": 62,
      "quantity_shipped": 62
    },
    {
      "sku": "SET-MOD-50",
      "description": "Modified thin-set mortar, 50 lb",
      "carton": "5",
      "quantity_ordered": 14,
      "quantity_shipped": 14
    },
    {
      "sku": "GRT-URE-9",
      "description": "Urethane grout, Delorean Gray, 9 lb",
      "detail": "Two pails held at the DC — colour batch pending.",
      "carton": "5",
      "quantity_ordered": 6,
      "quantity_shipped": 4
    },
    {
      "sku": "MEM-UNC-323",
      "description": "Uncoupling membrane, 323 sq ft roll",
      "carton": "6",
      "quantity_ordered": 1,
      "quantity_shipped": 1
    },
    {
      "sku": "VAN-3621-OAK",
      "description": "White oak vanity, 36 in., undermount cut",
      "detail": "Ships separately from the millwork shop.",
      "quantity_ordered": 1,
      "quantity_shipped": 0
    },
    {
      "sku": "TOP-QTZ-3722",
      "description": "Quartz vanity top, 37x22, eased edge",
      "carton": "7",
      "quantity_ordered": 1,
      "quantity_shipped": 1
    }
  ],
  "cartons": [
    {
      "number": "1",
      "weight": "41.0 lb",
      "dimensions": "18 x 14 x 10 in",
      "tracking_number": "1Z999AA10123456784"
    },
    {
      "number": "2",
      "weight": "41.0 lb",
      "dimensions": "18 x 14 x 10 in",
      "tracking_number": "1Z999AA10123456785"
    },
    {
      "number": "3",
      "weight": "38.4 lb",
      "dimensions": "18 x 14 x 10 in",
      "tracking_number": "1Z999AA10123456786"
    },
    {
      "number": "4",
      "weight": "52.6 lb",
      "dimensions": "16 x 16 x 12 in",
      "tracking_number": "1Z999AA10123456787"
    },
    {
      "number": "5",
      "weight": "76.2 lb",
      "dimensions": "20 x 16 x 14 in",
      "tracking_number": "1Z999AA10123456788"
    },
    {
      "number": "6",
      "weight": "29.5 lb",
      "dimensions": "44 x 6 x 6 in",
      "tracking_number": "1Z999AA10123456789"
    },
    {
      "number": "7",
      "weight": "88.0 lb",
      "dimensions": "40 x 26 x 6 in",
      "tracking_number": "1Z999AA10123456790"
    }
  ],
  "notice": "Inspect all cartons before signing. Note any visible damage on the carrier's delivery receipt; concealed damage must be reported within 5 business days.",
  "returns_policy": "Returns accepted within 30 days in original packaging. Start a return at galleysupply.test/returns with the order number above. Tile is non-returnable once a carton is opened."
}

Render it

With an API keyshell
curl -sS https://api.galleyrender.com/v1/render \
  -H "Authorization: Bearer $GALLEY_API_KEY" \
  -H 'content-type: application/json' \
  -d '{
  "template": "packing-slip@1",
  "format": "pdf",
  "data": "… the example payload above …"
}'
With no API key, over MCPshell
# No API key. The first call mints a 50-render trial.
curl -sS https://mcp.galleyrender.com/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "render",
      "arguments": {
        "template": "packing-slip",
        "format": "pdf",
        "data": { … see the example payload above … }
      }
    }
  }'

Pin the version — packing-slip@1 — in anything you ship. Publishing a new version never changes an old one. Render endpoint reference →

Try a free tool

Renders the example payload on the production service. No account, no key.

JSON Schema

schema.json (18 top-level properties)
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Packing slip",
  "type": "object",
  "required": [
    "order_number",
    "shipper",
    "ship_to",
    "line_items"
  ],
  "additionalProperties": true,
  "properties": {
    "order_number": {
      "type": "string",
      "examples": [
        "SO-44120"
      ]
    },
    "shipment_number": {
      "type": "string",
      "description": "This shipment, when an order ships in more than one.",
      "examples": [
        "SHP-44120-1"
      ]
    },
    "purchase_order": {
      "type": "string",
      "examples": [
        "PO-24118"
      ]
    },
    "ordered_on": {
      "type": "string",
      "format": "date",
      "examples": [
        "2026-09-11"
      ]
    },
    "shipped_on": {
      "type": "string",
      "format": "date",
      "examples": [
        "2026-09-16"
      ]
    },
    "carrier": {
      "type": "string",
      "examples": [
        "Atlantic Freight"
      ]
    },
    "service": {
      "type": "string",
      "examples": [
        "2-Day Air"
      ]
    },
    "tracking_number": {
      "type": "string",
      "examples": [
        "1Z999AA10123456784"
      ]
    },
    "shipped_from": {
      "type": "string",
      "examples": [
        "Jacksonville DC"
      ]
    },
    "accent": {
      "type": "string",
      "examples": [
        "#334155"
      ]
    },
    "notice": {
      "type": "string",
      "examples": [
        "Inspect all cartons before signing. Note any visible damage on the carrier's delivery receipt; concealed damage must be reported within 5 business days."
      ]
    },
    "returns_policy": {
      "type": "string",
      "examples": [
        "Returns accepted within 30 days in original packaging. Start a return at galleysupply.test/returns with the order number above. Tile is non-returnable once a carton is opened."
      ]
    },
    "backorder_note": {
      "type": "string",
      "examples": [
        "Backordered items ship at no additional freight charge as soon as stock arrives."
      ]
    },
    "shipper": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "examples": [
            "Galley Supply Co."
          ]
        },
        "address": {
          "type": "string",
          "examples": [
            "2727 Jean Lafitte Dr, Fernandina Beach, FL 32034"
          ]
        },
        "email": {
          "type": "string",
          "format": "email",
          "examples": [
            "orders@galleysupply.test"
          ]
        },
        "phone": {
          "type": "string",
          "examples": [
            "(904) 555-0110"
          ]
        },
        "logo_url": {
          "type": "string",
          "format": "uri",
          "examples": [
            "https://example.com/logo.png"
          ]
        }
      }
    },
    "ship_to": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "examples": [
            "Lena Ortiz"
          ]
        },
        "company": {
          "type": "string",
          "examples": [
            "Acme Robotics"
          ]
        },
        "address": {
          "type": "string",
          "examples": [
            "100 Market St, Floor 9, Dock B, Austin, TX 78701"
          ]
        },
        "phone": {
          "type": "string",
          "examples": [
            "(512) 555-0163"
          ]
        }
      }
    },
    "bill_to": {
      "type": "object",
      "description": "Defaults to ship_to.",
      "properties": {
        "name": {
          "type": "string",
          "examples": [
            "Acme Robotics — Accounts Payable"
          ]
        },
        "address": {
          "type": "string",
          "examples": [
            "PO Box 2211, Austin, TX 78767"
          ]
        },
        "email": {
          "type": "string",
          "format": "email",
          "examples": [
            "ap@acme.test"
          ]
        }
      }
    },
    "line_items": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": [
          "description",
          "quantity_ordered"
        ],
        "properties": {
          "sku": {
            "type": "string",
            "examples": [
              "TIL-3060-MW"
            ]
          },
          "description": {
            "type": "string",
            "examples": [
              "Matte white wall tile, 3x6"
            ]
          },
          "detail": {
            "type": "string",
            "examples": [
              "Dye lot 22-A. 12 pcs per carton."
            ]
          },
          "carton": {
            "type": "string",
            "description": "Which carton the line is packed in.",
            "examples": [
              "1–3"
            ]
          },
          "quantity_ordered": {
            "type": "number",
            "minimum": 0,
            "examples": [
              46
            ]
          },
          "quantity_shipped": {
            "type": "number",
            "minimum": 0,
            "description": "Anything short of ordered prints as backordered.",
            "examples": [
              46
            ]
          }
        }
      }
    },
    "cartons": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "number"
        ],
        "properties": {
          "number": {
            "type": "string",
            "examples": [
              "1"
            ]
          },
          "weight": {
            "type": "string",
            "examples": [
              "41.0 lb"
            ]
          },
          "dimensions": {
            "type": "string",
            "examples": [
              "18 x 14 x 10 in"
            ]
          },
          "tracking_number": {
            "type": "string",
            "examples": [
              "1Z999AA10123456784"
            ]
          }
        }
      }
    }
  }
}