Fulfillment
Fulfillment is per item, not per order. Every order carries a fulfillment record listing each item, how many units were ordered, and how many have been packed. The order-level status is rolled up from those items.
Packing items
Open the order and pack the quantities you're shipping. You can pack part of an item — five of ten shirts today, five next week.
Each pack updates the item:
- Packed quantity reaches the ordered quantity → item is Fulfilled
- Packed less than ordered → item is Partially fulfilled
And the order rolls up: all items fulfilled → Fulfilled; some → Partially fulfilled; all on hold → On hold; otherwise Unfulfilled.
Guards
You cannot pack more units than were ordered. Attempting it fails with INVALID_PACK_QUANTITY and tells you how many are actually available. The check accounts for what you've already packed, so repeated partial fulfillments can't drift past the ordered quantity.
Items on hold cannot be packed (ITEM_ON_HOLD). Release the hold first.
Tracking numbers
Add a tracking company, tracking number, and tracking URL when you pack, or afterwards with edit tracking.
Tracking lives on the item, so a split shipment can carry different tracking per item. When every item shares the same tracking, the order view collapses it into a single shipment.
Adding a tracking number writes a timeline entry and is what the customer's shipping-notification email links to.
If you've connected Bosta or Mylerz, the tracking number and URL are written automatically when the shipment is created. You only enter tracking manually for carriers TakeTheme doesn't integrate with. See Carriers.
Holds
Put an item on hold when it can't ship yet. Holds are per item and carry a reason:
| Reason | Use it when |
|---|---|
| Out of stock | You can't source the item yet |
| Address incorrect | The shipping address needs confirming |
| Fraud risk | The order needs review before it goes out |
| Pending payment | You're waiting for money to clear |
| Other | Anything else |
Holding every item sets the order to On hold. Releasing a hold returns the item to Unfulfilled — releasing does not pack it.
Cancelling a fulfillment
Cancelling resets items to Unfulfilled and clears their packed quantities, putting the order back to a pre-packing state. Cancel the whole fulfillment, or a single item within it.
This is a bookkeeping correction — it does not recall a parcel from a carrier, and it does not restock inventory.
Packing slips
Generate a printable packing slip for an order at any point. It renders the order, its items, and the shipping address for the person picking the order.
Digital products
Digital items have no packing step. They are auto-fulfilled at order creation, and their download links are issued as soon as payment is recorded — immediately for online payments, or when you mark a COD/manual order paid.
Three actions are available on any order with digital items:
| Action | What it does |
|---|---|
| Resend download links | Emails the customer their links again |
| Revoke downloads | Deactivates the links — use for chargebacks or abuse |
| Restore downloads | Reactivates the same links after a revoke |
Cancelling an order automatically revokes its digital downloads.
API reference
| Action | Endpoint |
|---|---|
| Pack items | POST /v1/order/fulfillment/:orderId |
| Edit tracking | POST /v1/order/fulfillment/:orderId/edit-tracking |
| Hold / release items | POST /v1/order/fulfillment-hold/:orderId |
| Cancel a fulfillment | POST /v1/order/fulfillment/:orderId/cancel/:fulfillmentId |
| Packing slip | POST /v1/order/packing-slip/:orderId |
| Resend downloads | POST /v1/order/vendor/:orderId/resend-download |
| Revoke downloads | POST /v1/order/vendor/:orderId/revoke-downloads |
| Restore downloads | POST /v1/order/vendor/:orderId/restore-downloads |
Related
- Order lifecycle
- Editing orders — including why a fully-fulfilled order can't be edited
- Carriers