Skip to main content

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.

Carrier integrations fill this in for you

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:

ReasonUse it when
Out of stockYou can't source the item yet
Address incorrectThe shipping address needs confirming
Fraud riskThe order needs review before it goes out
Pending paymentYou're waiting for money to clear
OtherAnything 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:

ActionWhat it does
Resend download linksEmails the customer their links again
Revoke downloadsDeactivates the links — use for chargebacks or abuse
Restore downloadsReactivates the same links after a revoke

Cancelling an order automatically revokes its digital downloads.


API reference

ActionEndpoint
Pack itemsPOST /v1/order/fulfillment/:orderId
Edit trackingPOST /v1/order/fulfillment/:orderId/edit-tracking
Hold / release itemsPOST /v1/order/fulfillment-hold/:orderId
Cancel a fulfillmentPOST /v1/order/fulfillment/:orderId/cancel/:fulfillmentId
Packing slipPOST /v1/order/packing-slip/:orderId
Resend downloadsPOST /v1/order/vendor/:orderId/resend-download
Revoke downloadsPOST /v1/order/vendor/:orderId/revoke-downloads
Restore downloadsPOST /v1/order/vendor/:orderId/restore-downloads