Packing slip parsing API
Warehouses and 3PLs drown in packing slips and shipping labels — each order arrives with a document that has to be reconciled against what was purchased and what physically shipped. The AIDataParser packing slip parsing API converts those documents into structured JSON: order number, ship date, carrier, tracking number, ship-to address, and an array of shipped items with SKUs and quantities. Define your schema and every slip, from any vendor, returns in the same shape.
This is what makes inbound receiving and shipment verification automatable. Each shipped line is a discrete object, so comparing the packing slip against the original purchase order — catching short-ships and wrong SKUs — becomes a programmatic diff instead of a clipboard task. Carrier and tracking fields feed straight into delivery-tracking logic without manual copy-paste.
For logistics platforms and fulfillment agents, POST the slip by photo or PDF, get structured data back for one credit, and use review_needed to flag smudged or partial scans on the dock. Because extraction is schema-first rather than per-vendor templated, onboarding a new supplier's slip format needs zero new parsing code.
Fields you can extract from a packing slip
order_numberstringAssociated order ID.
ship_datestringDate shipped.
carrierstringShipping carrier.
tracking_numberstringCarrier tracking ID.
ship_tostringDestination address.
itemsarraySKU and quantity shipped.
Example request
POST the packing slip by URL, upload, or base64, with a JSON Schema describing the output you want.
curl -X POST https://aidataparser.com/v1/parse/document \
-H "Authorization: Bearer adp_live_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/packing-slip.pdf",
"schema": {
"type": "object",
"properties": {
"order_number": {
"type": "string"
},
"ship_date": {
"type": "string"
},
"carrier": {
"type": "string"
},
"tracking_number": {
"type": "string"
},
"ship_to": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"sku": {
"type": "string"
},
"quantity": {
"type": "number"
}
}
}
}
}
}
}'Example response
The data field is guaranteed to match your schema.
{
"object": "parse.document",
"data": {
"order_number": "SO-77213",
"ship_date": "2026-07-08",
"carrier": "UPS",
"tracking_number": "1Z999AA10123456784",
"ship_to": "88 Market St, Austin, TX 78701",
"items": [
{
"sku": "WIDGET-BLK",
"quantity": 12
},
{
"sku": "GADGET-02",
"quantity": 3
}
]
},
"confidence": "high",
"review_needed": false,
"credits_charged": 1,
"credits_remaining": 49
}FAQ
Can it read the tracking number and carrier off a shipping label?
Yes. Include carrier and tracking_number in your schema and both are extracted, ready to feed into delivery-tracking or notification logic.
Does it help catch short-ships?
Yes. Shipped items are returned as discrete SKU/quantity objects, so you can diff the packing slip against the purchase order programmatically to flag missing or wrong items.
What if a slip is smudged or partially scanned?
Confidence drops and review_needed is set so a person can verify it, and no credit is charged when extraction fails outright.