Orders & Delivery
An order is created when a buyer visits a product page. It starts as pending (checkout opened), transitions to paid on payment, and reaches fulfilled when delivery is complete.
Order lifecycle
Orders move through five states:
Managed fulfillment
PENDING → PAID → FULFILLED happens automatically. ListBee creates an access grant and delivers the content on payment confirmation. Both order.paid and order.fulfilled webhooks fire.
External fulfillment
PENDING → PAID happens automatically. Your app receives the order.paid webhook and handles delivery. Call POST /v1/orders/{id}/deliver when done — this transitions the order to FULFILLED and fires order.fulfilled.
For physical goods, call POST /v1/orders/{id}/ship first to record tracking info, then deliver when complete.
Fulfillment tracking
External orders have a fulfillment_status field that tracks delivery progress:
Managed orders skip straight to fulfilled — there’s no intermediate state.
Deliver an order
POST /v1/orders/{id}/deliver marks an external order as fulfilled. Optionally push generated content for ListBee to deliver to the buyer.
Ship an order
POST /v1/orders/{id}/ship records shipping information on a paid order. Use this for physical goods before marking the order as fulfilled.
This fires an order.shipped webhook event.
List orders
GET /v1/orders returns orders in reverse chronological order with cursor-based pagination.
Paginate with the cursor from the previous response:
Get an order
GET /v1/orders/{id} returns a single order.
Filter orders
Key fields
Next steps
- Fulfillment modes — managed vs external, when to use each.
- Webhooks — get notified on
order.paid,order.shipped,order.fulfilled. - Checkout schema — collect custom data from buyers.