ForHosting KIT · Documents & PDF

Generate a packing slip

Order ORD-10482 with 2 item lines and 3 units in total becomes a numbered packing slip with the ship-to address and quantities, and no prices, taxes or billing details. Enter the order number, address and items. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon

Runs in your browser. Free, unlimited — your data never leaves this page.

Create a packing slip that belongs inside a shipment without turning it into an invoice. Supply an order number, a structured shipping address, and one or more item rows with quantities. The generator validates the shipment data, numbers each line, calculates total units, and returns both reusable structured fields and a clean plain-text document. Prices, taxes, payment terms, and billing details are deliberately excluded, keeping the result focused on fulfillment, recipient checks, and package contents.

Build the document from fulfillment data

A packing slip answers a practical warehouse question: what should be in this package, and where is it going? Start with the order number used by your store, warehouse, or order-management system. Then provide the recipient and destination as structured address fields so each part remains reusable after generation.

Add every packed product as its own row with a name, a positive whole-number quantity, and an optional SKU. The generator keeps the supplied row order, assigns visible line numbers, normalizes stray whitespace, and calculates both the number of distinct lines and the total number of units. The result includes a structured object for software workflows and a plain-text packing slip for printing, saving, or inserting into another document layout.

Because the algorithm does not invent missing shipment details, the generated document stays traceable to the information your fulfillment process supplied. A request with no item rows fails instead of creating an empty and potentially misleading shipment record.

Keep a packing slip distinct from an invoice

Packing slips and invoices may refer to the same order, but they serve different jobs. An invoice requests or records payment and commonly includes unit prices, discounts, taxes, totals, billing addresses, payment instructions, and legal terms. This capability intentionally produces none of those fields.

Its output identifies the document as a packing slip and contains only the order reference, ship-to destination, item identities, quantities, counts, and a printable representation of that information. That distinction is useful when a parcel is a gift, when purchasing staff should receive financial documents separately, or when warehouse workers do not need access to commercial terms. It also prevents downstream systems from treating a fulfillment insert as evidence of an amount due.

If you need accounting calculations or a customer payment document, use an invoice-specific workflow. Here, quantities are operational facts: they help a packer, recipient, or returns team compare physical contents with the order without exposing price information.

Validate, print, and automate consistently

Use the structured response when another system needs to archive the slip, map item lines into a PDF template, create a label packet, or compare packed quantities with scan results. Use the plain-text document when a simple human-readable insert is sufficient. Required address components are checked individually, while optional company, second address line, region, postal code, and SKU fields are omitted when blank rather than represented as null values.

Item quantities must be positive integers, which avoids ambiguous fractional or zero-unit rows in ordinary parcel fulfillment. The generator is deterministic: identical input produces identical output, with no network request, current timestamp, random identifier, inventory lookup, or product enrichment. Perform those checks in the appropriate inventory, address-validation, and carrier systems before treating the generated slip as authorization to dispatch a package.

Insert a slip in an ecommerce parcel

Turn confirmed fulfillment rows into a readable package insert without exposing product prices or payment details.

Support warehouse pick verification

Give packers numbered item lines and total units they can compare with the products placed in a carton.

Document replacement shipments

Create a contents record for a replacement or warranty parcel where an invoice would be inappropriate.

Does the packing slip include prices?

No. It intentionally excludes prices, discounts, taxes, payment terms, and invoice totals.

Can an item omit its SKU?

Yes. A product name and positive integer quantity are required, while the SKU is optional and omitted from output when blank.

Does this validate the postal address with a carrier?

No. It validates required fields and formats the supplied address, but it does not contact carriers or verify deliverability.

What is the difference between a packing slip and an invoice?

A packing slip lists what is in the box and where it is going; an invoice records payment with prices, taxes and terms. This document deliberately leaves out every financial detail, which helps when the parcel is a gift.

Can I print the packing slip and put it in the parcel?

Yes. Besides the reusable order details, you get a clean plain-text slip with the order number, the ship-to address and numbered item lines with quantities, ready to print or place in your own layout.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/doc/packing-slip-generate

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/doc/packing-slip-generate \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"order_number":"ORD-10482","shipping_address":{"name":"Morgan Lee","company":"Northwind Studio","address_line_1":"48 Harbor Street","address_line_2":"Suite 3B","city":"Portland","region":"ME","postal_code":"04101","country":"US"},"items":[{"name":"Canvas Tool Roll","quantity":2,"sku":"CTR-NAVY"},{"name":"Brass Measuring Gauge","quantity":1,"sku":"BMG-01"}]}'
{
  "order_number": "ORD-10482",
  "shipping_address": {
    "name": "Morgan Lee",
    "company": "Northwind Studio",
    "address_line_1": "48 Harbor Street",
    "address_line_2": "Suite 3B",
    "city": "Portland",
    "region": "ME",
    "postal_code": "04101",
    "country": "US"
  },
  "items": [
    {
      "name": "Canvas Tool Roll",
      "quantity": 2,
      "sku": "CTR-NAVY"
    },
    {
      "name": "Brass Measuring Gauge",
      "quantity": 1,
      "sku": "BMG-01"
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "doc.packing_slip_generate",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

max_mb25
max_pages200
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.
What happens if the item list is empty?

The request fails with an invalid-input error because a packing slip must contain at least one item.

What does an API request cost?

Each API request costs $0.002. The deterministic browser version can run without sending shipment data to a remote model.

Read the full KIT documentation →