Orders API
The Carriyo Orders API manages the customer order lifecycle from creation through fulfillment handoff. Create orders with line items and delivery details, split them across fulfillment locations, and cancel or update them before they ship.
Before you start
- Every request carries
Authorization: Bearer <token>,x-api-keyandtenant-id; see the Authentication API. merchantis the merchant's identifier, an uppercase code such asACME, not its display name.- Automatic allocation is off until the tenant's order management settings exist with
enable_automatic_order_allocation; until then every order is created inopen. - Allocation needs at least one location whose fulfillment coverage includes the delivery or collection address.
Order references
Every endpoint that takes an order in the path accepts either order_id, Carriyo's identifier, or partner_order_reference, your own. The value is matched against order_id first, then partner_order_reference; to keep the two from colliding, a partner_order_reference equal to an existing order_id is rejected with 400, so avoid partner references that could look like Carriyo ids. Fulfillment orders in the path work the same way with fulfillment_order_id and partner_fulfillment_order_reference; when more than one fulfillment order on the order carries the reference you pass, the request fails with 400, so use the id instead.
Idempotency
Write endpoints accept an optional Idempotency-Key request header for safe request replay when your integration retries after uncertain network outcomes. Replayed responses include Idempotent-Replayed: true. See https://carriyo.com/docs/api/idempotency/ for the full contract.
Orders
A customer order: the line items, customer and addresses, payment, and the fulfillment orders that carry the items to the customer.
Related: How orders move through their statuses
12 operations · 1 object
The Order object
The Order object represents a customer order in Carriyo — line items the customer purchased, shipping and billing addresses, payment, and the references that tie back to your e-commerce or OMS system.
An Order doesn't directly book a shipment. Instead, Carriyo splits the Order into one or more fulfillment orders allocated across your locations, and each fulfillment order produces one or more Shipments. For the full relationship model, see the Domain model.
Properties
- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
Related
- Create order — POST /orders
- List orders — GET /orders
- Get order — GET /orders/{order_id}
- Update order — PUT /orders/{order_id}
- E-commerce orders guide — full integration walkthrough
/ordersCreate order
Creates an order with its line items, customer and delivery details, and allocates it to fulfillment locations.
What happens.
- Carriyo validates the request and creates the order.
- Fulfillment orders come from your
fulfillment_orders, or from automatic allocation when you omit them. Allocation completes before the response. - With inventory management enabled, stock is reserved for the allocated items.
- The
ORDER_CREATEwebhook fires.
The response status is derived from the fulfillment orders: allocated when every fulfillment order has a location, partially_allocated when only some do, and open when none has one. A hold rule can return the order on_hold.
Validation problems on line items, addresses or fulfillment orders do not reject the request. They are recorded in error_details on the created order.
Line items. Each line is resolved against the product catalog by product_ref, then sku, then product_id. The response carries Carriyo's product_id and the product's inventory_key on every resolved line.
Delivery method. Each fulfillment order has one delivery_method:
DELIVERYusesdelivery_addressanddelivery_schedule.COLLECTIONusescustomer_collection_addressandcustomer_collection_schedule.DIGITALneeds neither.
The top-level delivery fields are request-only conveniences and are not stored on the order itself. They are copied onto the fulfillment orders Carriyo creates when you omit fulfillment_orders. To set them per fulfillment order, put them inside each entry.
An entry without its own delivery fields inherits the top-level delivery_method, delivery_type and delivery_option, then the top-level address and schedule for its method. Fields the entry sets always win. This inheritance happens on create only.
Allocation.
- Manual. A
fulfillment_ordersentry that names a location is left as sent. - Automatic. Entries with no location, and every fulfillment order when you omit
fulfillment_orders, are allocated by the engine, providedenable_automatic_order_allocationis on in the order management settings;DIGITALentries are never allocated. Stock counts only when inventory management is enabled. Radius coverage needscoordson the reference address.
With automatic allocation off, entries that name a location are allocated and the rest are open with fulfillment_location_missing in their error_details.
When no candidate can supply an item:
- with the order management setting
allow_partial_order_allocationon, the unsupplied items move to a separate fulfillment order whose items arecancelled, and the order still reportsallocated; - otherwise the fulfillment order stays as it was, with
auto_allocation_failedin itserror_detailsand anallocation_failure_reasonon each item. A coverage miss reportsOUT_OF_STOCK.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: create-order-requestrequiredResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
partner_order_referencealready exists in the tenant or equals an existingorder_id.- the merchant is unknown.
- the account's order quota is exhausted.
Need the full machine-readable spec? Download the OpenAPI document →
/ordersList orders
Returns a page of orders matching the search and filter parameters.
Behavior. search_string matches substrings of the order id and partner order reference.
Each request through the API counts one against the account's monthly order-list quota, a separate allowance from the order quota. The counter resets each calendar month, and a request that fails with a server error is not counted.
Related: Order status codes
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| search_string | string | No | The search string to find orders using order data such as order id and partner order reference. |
| merchant | string | No | The merchant parameter filters orders for a given merchant. This parameter can be used multiple times to filter results for multiple merchants. |
| creation_date_from | string | No | The start date in ISO 8601 format to filter the results using order creation date. |
| creation_date_to | string | No | The end date in ISO 8601 format to filter the results using order creation date. |
| update_date_from | string | No | The start date in ISO 8601 format to filter results, returning orders that were either created OR updated during this time period. |
| update_date_to | string | No | The end date in ISO 8601 format to filter results, returning orders that were either created OR updated during this time period. |
| page | string | No | The page number of the result set, starting from 0. Defaults to the first page (page 0). |
| page_size | string | No | The number of results to be included in the response, ranging from 10 to 100. Defaults to page size of 10. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
order-listNeed the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}Get order
Returns an order by order_id or partner_order_reference, with its fulfillment orders and line items.
Related: Order status codes
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}Update order
Applies a partial update to an order; line_items and fulfillment_orders are replaced as whole arrays.
Preconditions. The order must not be cancelled or on hold. Orders in processing, fulfilled or closed can still be updated.
What happens. The changes below are applied and the ORDER_UPDATE webhook fires.
Simple fields. These change only when present in the request; an empty string is ignored, not applied:
partner_order_reference,order_date,merchant,language,sales_channeltaxes_included,duties_includedbilling_address,customerpayment,discount_applications,shipping_lines
custom_attributes is merged per key, and a null value removes the key.
The order stores no delivery address of its own; delivery details live inside each fulfillment_orders entry. To change where a fulfillment order delivers after allocation, use its address endpoint.
Line items. line_items, when present, replaces the whole list. Include every line item you want to keep. To remove an item after allocation, cancel it on its fulfillment order.
Fulfillment orders. fulfillment_orders, when present, replaces the whole list too:
- A fulfillment order left out of the request is removed, even when it has fulfilled items; its pending reservations are released.
- One matched by
fulfillment_order_idorpartner_fulfillment_order_referenceis updated. - One with no match is created. Without a location it is left
openwithfulfillment_location_missingin itserror_details; update never runs the allocation engine.
Within a fulfillment order, send only line items in open or allocated status. fulfilled, cancelled and closed items are preserved automatically; one that is re-sent is not rejected but added again as a new pending item alongside the preserved one. Quantity reductions are recorded in removed_quantities.
A fulfillment order line item that matches no order line item is recorded in the fulfillment order's error_details rather than rejected.
Inventory. With inventory management enabled, reservations follow the allocation changes:
- stock is reserved for new fulfillment order allocations;
- stock is released for removed allocations;
- reservations are adjusted for quantity changes.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: update-order-requestrequired- Full replacement with preservation rules. ⚠️ Critical: Any fulfillment order NOT included in this array will be PERMANENTLY REMOVED. For each FO's line_items: - Only include items with pending statuses (
open,allocated,pick_in_progress,picked,pack_in_progress) - Items with terminal statuses (fulfilled,cancelled,closed) are automatically preserved
Responses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
- the order is
cancelled. - the order is on hold.
- another update changed the order first; re-read and retry.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/cancelCancel order
Cancels an order and every fulfillment order on it.
Preconditions. The order must be open, partially_allocated, allocated or on_hold; cancelling a held order releases the hold. For an order in processing, fulfilled or closed the request succeeds but nothing changes: the unchanged order is returned and the ORDER_CANCEL webhook still fires, so check status in the response.
What happens.
- Every fulfillment order line item becomes
cancelledwith thecancellation_reasonyou supply. - Open picks are cancelled.
- The order status becomes
cancelled. - The
ORDER_CANCELwebhook fires.
Order line item quantities are left as they were.
Inventory. With inventory management enabled and a fulfillment_location set on the fulfillment order, reserved is reduced by the cancelled quantity.
Related: Order status codes
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: cancel-order-request- Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
Responses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
cancelled.Schema: error-responseNeed the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/redactRedact order
Anonymises the personal data on an order and on the dropoff side of every linked shipment. The change is irreversible.
Preconditions. None. The order can be in any status, including on hold.
Webhooks. No webhook fires.
Related: What redaction removes
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Responses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/activityList order activity
Returns a paginated timeline of everything that has happened to an order.
Behavior. Each entry comes from one of three sources:
- Change logs — field-level edits, in
changes. - System logs — API calls and internal events, with timing and response code.
- Notifications — customer notifications, in
notification, withrequest_typeNOTIFICATION.
A change log and the system log that caused it merge into one entry. A system log with no change log appears on its own, without changes.
Housekeeping fields that change on every write, such as update_date and update_source, are left out of changes.
Related: Order webhook events
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| page_num | integer | No | Page of the timeline to return. Values below 1 fall back to 1. |
| rows_per_page | integer | No | Entries per page. Values above 100 are capped at 100. |
| sort | string | No | Orders entries by timestamp. Defaults to newest first. |
| source | array | No | Filters entries by what triggered them. Comma-separated, any match: `source=user,api`. - `all`: no filtering (default) - `user`: Dashboard and Fulfillment App activity - `api`: direct API calls - `webhook`: webhook deliveries and retries - `system`: everything else, such as carrier callbacks and internal services Unrecognized values are ignored. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
activity-responseNeed the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/on-holdHold order
Puts an order on hold so that it cannot be updated or fulfilled until the hold is released.
Preconditions. The order must be open, partially_allocated or allocated and not already on hold. A fulfillment order already on hold does not block the call; its hold is absorbed and released together with the order hold.
What happens.
- The order status becomes
on_hold, and everyopenorallocatedfulfillment order on it showson_holdtoo. on_hold_detailsrecords the hold; an earlier hold moves intohistory.- While the hold is active, updating the order and every fulfillment order operation except cancel return
400. - Cancelling a held order releases the hold.
- The
ORDER_ON_HOLDwebhook fires.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: on-hold-requestResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
- the order is not
open,partially_allocatedorallocated. - the order is already on hold.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/release-on-holdRelease order hold
Releases an active hold on an order and returns it to the status derived from its fulfillment orders.
Preconditions. The order must be on_hold.
What happens.
- The order returns to
open,partially_allocatedorallocatedas derived from its fulfillment orders. - Any hold on the order's individual fulfillment orders is released as well.
on_hold_detailsis kept with the release details.- The
ORDER_RELEASE_ON_HOLDwebhook fires.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: release-on-hold-requestResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
on_hold.Schema: error-responseNeed the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillFulfill entire order
Fulfills every pending item on the order in one call, whichever fulfillment orders they sit on.
Preconditions. The order may not be on hold, no fulfillment order with pending items may be on hold, and at least one item must be pending. Pending covers open, allocated, pick_in_progress, picked and pack_in_progress.
Open picks and packs. The call is refused while any fulfillment order it would fulfill has a pick that is open, processing or stopped, or a pack that is open or processing. Complete or cancel it first.
Scope. Every fulfillment order with pending items is fulfilled in full. Fulfillment orders with nothing pending are skipped, so an order that was already part fulfilled or part cancelled can still be completed in one call.
You cannot select items; every pending item is fulfilled. To fulfill one fulfillment order, or part of one, use the fulfillment order endpoint instead.
The order status is recalculated and the FULFILLMENT_ORDER_FULFILL webhook fires once for the whole call.
Shipments. Each fulfillment order that requires shipping becomes its own shipment, created and confirmed with the carrier. Two query parameters change that:
create_draft_shipment=trueleaves the shipments as drafts for review before booking.skip_shipping=truefulfills without creating any shipment.
If a shipment cannot be created, the fulfillment order is still fulfilled and records shipment_creation_failed in its error_details; retry it with the ship endpoint. If the carrier booking fails, the shipment is left in error with the reason in its own error_details; fix the cause and reprocess the shipment.
When items close. A fulfillment order requires shipping when its delivery method is DELIVERY, or COLLECTION from a location other than the one fulfilling it. Items close automatically only when it does not require shipping and the order did not come from Shopify. With skip_shipping=true on one that does require shipping, the items stay fulfilled for you to close yourself.
Payment split. When the order carries a payment, this call splits the part of it that it is fulfilling across the shipments it creates:
- by item value;
- by quantity when items have no prices;
- evenly when there is neither.
Items fulfilled by an earlier call and cancelled items are left out, so nothing is collected twice. The last shipment takes the rounding remainder.
A fulfillment order that creates no shipment, because it needs none or because skip_shipping is set, still takes a share, and that share is dropped with it. The shares therefore add up to the whole order payment only when the call fulfills the whole order and every fulfillment order it fulfills creates a shipment.
With no payment on the order, each shipment carries a zeroed payment: no currency, total_amount 0 and pending_amount 0.
Inventory. With inventory management enabled and stock_reduction_timing set to ON_ORDER_FULFILLED, on_hand and reserved are reduced by the fulfilled quantity.
Related: What fulfilling produces
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| create_draft_shipment | boolean | No | If true, creates draft shipments instead of immediately booking with a carrier. |
| skip_shipping | boolean | No | If true, fulfills the order without creating any shipment. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: fulfill-order-requestResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
- the order, or a fulfillment order with pending items, is on hold.
- a fulfillment order it would fulfill has an active pick or pack.
- nothing is pending.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/unfulfillUnfulfill entire order
Reverses every fulfillment on the order in one call, returning its items to allocated status.
Preconditions. Neither the order nor any of its fulfillment orders may be on hold, at least one item must be fulfilled, and the order must not have come from the Mirakl Connect connector.
Scope. Fulfillment orders with nothing fulfilled are skipped, so a part fulfilled order can be taken back in one call. To reverse a single fulfillment, use the fulfillment order endpoint instead.
What happens. For every fulfillment on the order, Carriyo:
- Cancels the associated shipments, if not already cancelled. A shipment that can no longer be cancelled does not stop the call; its items still return to
allocated. - Returns the line items to
allocated. - Clears their fulfillment id, shipment ids and partner reference.
- Merges items that share the same id and status.
- Recalculates the order status.
The FULFILLMENT_ORDER_UNFULFILL webhook fires once for the whole call.
Inventory. With inventory management enabled, on_hand is increased by the unfulfilled quantity; reserved is not changed and stock_reduction_timing is not consulted.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Responses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
- the order or any of its fulfillment orders is on hold.
- nothing on the order is fulfilled.
- the order came from the Mirakl Connect connector.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/bulk/importBulk import orders
Creates or updates several orders in one request; each row is processed independently.
Per row.
- A row whose
partner_order_referenceis new creates an order. A create behaves exactly as Create order, including allocation, reservation and theORDER_CREATEwebhook. - A row matching an existing order updates it when the order is
open,partially_allocatedorallocated; any other status rejects the row. An update behaves exactly as Update order, including theORDER_UPDATEwebhook. - Rows that share a
partner_order_referencewithin the same request are all rejected.
Processing continues past failed rows.
Limits. The request takes up to 20 orders by default. The limit is configurable per tenant, so chunk larger imports client-side.
Result per row. The response has one entry per row. A rejected row carries the error in reason and no order.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: bulk-order-import-requestrequiredResponses
An array of bulk-order-import-response. Each item has the following fields:
error-responseThe request was rejected. One of:
- the request body is malformed.
- the request exceeds the row limit.
Need the full machine-readable spec? Download the OpenAPI document →
Fulfillment Orders
A group of line items from one order fulfilled from one location with one delivery method. Every operation here except merge takes the order reference followed by the fulfillment order reference.
Related: How fulfillment orders, shipments and collections relate
15 operations · 0 objects
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/fulfillFulfill fulfillment order
Marks the items of a fulfillment order as fulfilled and creates a shipment for them.
Preconditions. Neither the fulfillment order nor its order may be on hold, and every named item must be pending. Pending covers open, allocated, pick_in_progress, picked and pack_in_progress.
Open picks and packs. Fulfilling is refused while the fulfillment order has a pick that is open, processing or stopped, or a pack that is open or processing. Complete or cancel it first.
What to send. line_items names the items, each with a quantity no greater than the quantity still pending. Identify each item by the order line item's id, or by product_id, product_ref or sku when that names exactly one line item on the fulfillment order. Omit it, or send no body, to fulfill every pending item at its full quantity. To fulfill every pending item across the whole order, use the order endpoint instead.
The items are marked fulfilled under a new fulfillment id, the order status is recalculated and the FULFILLMENT_ORDER_FULFILL webhook fires.
Shipments. When the fulfillment order requires shipping, its items become one shipment, created and confirmed with the carrier. Two query parameters change that:
create_draft_shipment=trueleaves it as a draft for review before booking.skip_shipping=truefulfills without creating a shipment at all.
If the shipment cannot be created, the fulfillment order is still fulfilled and records shipment_creation_failed in its error_details; retry it with the ship endpoint. If the carrier booking fails, the shipment is left in error with the reason in its own error_details; fix the cause and reprocess the shipment.
When items close. A fulfillment order requires shipping when its delivery method is DELIVERY, or COLLECTION from a location other than the one fulfilling it. Items close automatically only when it does not require shipping and the order did not come from Shopify. With skip_shipping=true on one that does require shipping, the items stay fulfilled for you to close yourself.
Payment split. There is no split: the shipment carries the full order payment, both the order total and the amount to collect on delivery. Only the order endpoint distributes payment across shipments.
Inventory. With inventory management enabled and stock_reduction_timing set to ON_ORDER_FULFILLED, on_hand and reserved are reduced by the fulfilled quantity.
Related: What fulfilling produces
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| create_draft_shipment | boolean | No | If true, creates a draft shipment instead of immediately booking with a carrier. |
| skip_shipping | boolean | No | If true, fulfills the order without creating a shipment. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: create-fulfillment-requestResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
- an item carries neither
idnor a product identifier. - a product identifier matches no line item on the fulfillment order, or matches more than one.
quantityis missing or below 1.line_itemsis empty.line_itemsis omitted and nothing on the fulfillment order is pending.- the fulfillment order has an active pick or pack.
- an item is not in a pending status.
- a quantity exceeds what is pending.
- the fulfillment order or its order is on hold.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/unfulfillUnfulfill fulfillment order
Reverses selected fulfillments on a fulfillment order, returning their items to allocated status.
Preconditions. Neither the fulfillment order nor its order may be on hold, and the order must not have come from the Mirakl Connect connector.
What to send. fulfillment_ids is required and lists the fulfillments to reverse; each must belong to the fulfillment order. partner_fulfillment_order_reference, when sent, replaces the fulfillment order's reference after the reversal. To reverse every fulfillment on the order, use the order endpoint instead.
What happens. For each fulfillment, Carriyo:
- Cancels the associated shipments, if not already cancelled. A shipment that can no longer be cancelled does not stop the call; its items still return to
allocated. - Returns the line items to
allocated. - Clears their fulfillment id, shipment ids and partner reference.
- Merges items that share the same id and status.
- Recalculates the order status.
The FULFILLMENT_ORDER_UNFULFILL webhook fires once for the whole call.
Inventory. With inventory management enabled, on_hand is increased by the unfulfilled quantity; reserved is not changed and stock_reduction_timing is not consulted.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: unfulfill-fulfillment-requestrequiredResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
fulfillment_idsis missing or empty.- a fulfillment id does not exist on the fulfillment order.
- the fulfillment order or its order is on hold.
- the order came from the Mirakl Connect connector.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/mergeMerge fulfillment orders
Moves line items from one fulfillment order into another.
Preconditions.
- Neither fulfillment order may contain fulfilled items or have active picks.
- Neither fulfillment order nor the order may be on hold.
- Both must share the same
fulfillment_location,delivery_type, delivery method anddelivery_option.
What to send.
sourcenames the fulfillment order and, inline_items, the items and quantities to move; a partial quantity moves and the source keeps the remainder.line_itemsis required; there is no merge-everything default. Identify each item by the order line item'sid, or byproduct_id,product_reforskuwhen that names exactly one line item on the source fulfillment order.destinationnames the fulfillment order to receive them.
What happens.
- A moved item merges into a matching destination item, or is added as
allocatedoropendepending on whether the destination has a location. - If every item leaves the source, the source fulfillment order is removed.
- The order status is recalculated and the
FULFILLMENT_ORDER_MERGEwebhook fires.
Inventory. Inventory is unchanged; items are only moved between fulfillment orders.
Related: Splits and merges
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: merge-fulfillment-order-requestrequiredResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
- an item carries neither
idnor a product identifier. - a product identifier matches no line item on the source fulfillment order, or matches more than one.
quantityis missing or below 1.- the source or destination contains fulfilled items.
- the source or destination has active picks.
- the source or destination, or the order, is on hold.
- the two differ in
fulfillment_location,delivery_type, delivery method ordelivery_option.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/splitSplit fulfillment order
Moves selected line items from a fulfillment order into a new fulfillment order.
Preconditions. Neither the fulfillment order nor its order may be on hold, and the fulfillment order must have no active picks. Only items in open or allocated status qualify.
What to send. line_items names the items and quantities to move. Identify each item by the order line item's id, or by product_id, product_ref or sku when that names exactly one line item on the fulfillment order.
fulfillment_location, by partner location id or code, orlocation_idsets the new fulfillment order's location. Omitted, the new fulfillment order takes the original's location.partner_fulfillment_order_referencesets your reference on the new fulfillment order. Send one: when you omit it the source's reference is copied, and a reference shared by two fulfillment orders can no longer address either.
What happens.
- The new fulfillment order gets its own
fulfillment_order_idand inherits the delivery details of the original. - Moved items are
allocatedwhen a location is set andopenotherwise. - The original's quantities are reduced, and items whose quantity reaches zero are removed.
- The order status is recalculated and the
FULFILLMENT_ORDER_SPLITwebhook fires.
Inventory. With inventory management enabled and a different location supplied, reservations for the moved items move to the new location.
Related: Splits and merges
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: split-fulfillment-requestrequiredResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
- an item carries neither
idnor a product identifier. - a product identifier matches no line item on the fulfillment order, or matches more than one.
quantityis missing or below 1.- an item is
fulfilled,cancelledorclosed. - a quantity exceeds what the item has.
- the fulfillment order or its order is on hold.
- the fulfillment order has active picks.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/shipShip fulfillment order
Creates a shipment for selected items of a fulfillment order.
Preconditions. Neither the fulfillment order nor its order may be on hold, and the fulfillment order must have a delivery or collection address. Items must be allocated, pick_in_progress, picked, pack_in_progress or fulfilled.
What to send. line_items is required and names the items and quantities to ship; their status does not change. Identify each item by the order line item's id, or by product_id, product_ref or sku when that names exactly one line item on the fulfillment order. The body takes the same fields as Create shipment; omit the carrier account to let automation rules choose.
What happens.
- Carriyo creates the shipment.
- It confirms the shipment with the carrier, unless
create_draft_shipment=trueleaves it as a draft for review before booking. - The shipment id is linked to the items.
- The
FULFILLMENT_ORDER_SHIP_LINE_ITEMSwebhook fires.
If the carrier booking fails, the shipment is left in error with the reason in its error_details; fix the cause and reprocess the shipment.
Inventory. Inventory is unchanged; it moves on fulfill and cancel.
Related: What fulfilling produces
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| create_draft_shipment | boolean | No | If true, creates a draft shipment instead of immediately booking with a carrier. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: ship-fo-line-items-requestrequiredResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
line_itemsis missing or empty.- an item carries neither
idnor a product identifier. - a product identifier matches no line item on the fulfillment order, or matches more than one.
quantityis missing or below 1.- an item is
open,cancelledorclosed. - a quantity exceeds what is available.
- the fulfillment order has no delivery or collection address.
- the fulfillment order or its order is on hold.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/update-locationUpdate fulfillment order location
Reassigns a fulfillment order to a different location.
Preconditions. Neither the fulfillment order nor its order may be on hold, and the fulfillment order must have no active picks.
What to send. fulfillment_location identifies the new location by partner_location_id or partner_location_code, resolved in that order. location_id is accepted as a flat alternative. Omit both to remove the current assignment.
What happens.
- Assigning a location: the fulfillment order's location is replaced,
openitems becomeallocated, and any earlier allocation failure is cleared. - Removing it:
allocateditems becomeopenandfulfillment_location_missingis recorded inerror_details. - The order status is recalculated and the
FULFILLMENT_ORDER_UPDATE_LOCATIONwebhook fires.
Inventory. With inventory management enabled, reservations are released at the old location and taken at the new one. Stock at the new location is not checked; the reservation is taken regardless.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: update-location-requestrequiredResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
- the fulfillment order has active picks.
- the fulfillment order or its order is on hold.
- no location is assigned and none is supplied.
error-responseThe request was rejected. One of:
- no order matches the id or reference.
- no fulfillment order on it matches the id or reference.
- the location cannot be resolved.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/update-delivery-methodUpdate fulfillment order delivery method
Switches a fulfillment order between DELIVERY, COLLECTION and DIGITAL, setting the matching address and schedule in one call.
Preconditions. The order must be open, partially_allocated or allocated, and neither it nor the fulfillment order may be on hold. delivery_method is required.
What each method sets. The body's address, scheduled_from, scheduled_to and delivery_option are stored according to the new delivery_method:
DELIVERY—addressbecomesdelivery_address;scheduled_fromandscheduled_tobecomedelivery_schedule;delivery_optionis applied. The collection address and schedule are cleared.COLLECTION—addressbecomescustomer_collection_address;scheduled_fromandscheduled_tobecomecustomer_collection_schedule. The delivery address, delivery schedule anddelivery_optionare cleared.DIGITAL— the address and schedule are left as they are anddelivery_optionis cleared.
Whichever method you set, delivery_type is taken from the body, so omitting it clears the existing value.
What happens. The fulfillment order is updated and the FULFILLMENT_ORDER_UPDATE_DELIVERY_METHOD webhook fires.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: update-fulfillment-order-delivery-method-requestrequired- How the order is delivered to the customer: -
DELIVERY: standard delivery to the customer's address (usesdelivery_addressanddelivery_schedule). -COLLECTION: customer collects the order from a specified location (usescustomer_collection_addressandcustomer_collection_schedule). -DIGITAL: no physical delivery; the order is fulfilled digitally.Values:DELIVERYCOLLECTIONDIGITAL
Responses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
- the order is not
open,partially_allocatedorallocated. - the fulfillment order or its order is on hold.
delivery_methodis missing.delivery_optiondoes not exist.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/update-addressUpdate fulfillment order address
Replaces the address on a fulfillment order according to its current delivery_method.
Preconditions. The fulfillment order must be open or allocated, and neither it nor its order may be on hold. address is required.
What happens.
DELIVERYandDIGITAL:addressreplacesdelivery_address.COLLECTION:addressreplacescustomer_collection_address.- Allocation is not re-run and reservations are unchanged, even when the new address is outside the current location's coverage; use Allocate fulfillment order if the new address needs a different location.
- The
FULFILLMENT_ORDER_UPDATE_ADDRESSwebhook fires.
To change the method itself, use the delivery-method endpoint first.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: update-fulfillment-order-address-requestrequiredResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
addressis missing.- the fulfillment order is not
openorallocated. - the fulfillment order or its order is on hold.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/update-scheduleUpdate fulfillment order schedule
Replaces the delivery or collection window of a fulfillment order with the supplied scheduled_from and scheduled_to.
Preconditions. Neither the fulfillment order nor its order may be on hold. There is no status precondition.
What happens. The window is replaced and the FULFILLMENT_ORDER_UPDATE_SCHEDULE webhook fires.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: update-fulfillment-order-schedule-requestrequiredResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseNeed the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/update-partner-referencesUpdate fulfillment order partner references
Sets your references on a fulfillment order or on its individual fulfillments.
Preconditions. Neither the fulfillment order nor its order may be on hold, and the fulfillment order must have no active picks.
What to send. Send one of:
partner_fulfillment_order_reference, your reference for the fulfillment order.fulfillments, a list offulfillment_idandpartner_fulfillment_referencepairs that set references on already fulfilled items.
When both are present only partner_fulfillment_order_reference is applied.
What happens. Nothing else on the fulfillment order changes. The FULFILLMENT_ORDER_UPDATE_PARTNER_FULFILLMENT_ORDER_REFERENCE webhook fires when the fulfillment order reference changed, and the FULFILLMENT_ORDER_UPDATE_PARTNER_FULFILLMENT_REFERENCES webhook when fulfillment references changed.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: update-fulfillment-order-partner-references-requestrequiredResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
- the fulfillment order has active picks.
- the fulfillment order or its order is on hold.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/cancelCancel fulfillment order line items
Cancels selected line items of a fulfillment order.
Preconditions. Only items in open or allocated status qualify; unfulfill a fulfilled item first. Cancellation is allowed while the fulfillment order or its order is on hold.
What to send. line_items and cancellation_reason are both required. line_items names the items and quantities to cancel, and the reason is recorded on each. Identify each item by the order line item's id, or by product_id, product_ref or sku when that names exactly one line item on the fulfillment order.
What happens.
- Each cancelled item's status becomes
cancelledwith the reason. - The fulfillment order's picks are cancelled when nothing is left to pick.
- When every item is cancelled the fulfillment order becomes
cancelledand its hold is released. - The order status is recalculated and the
FULFILLMENT_ORDER_CANCEL_LINE_ITEMSwebhook fires.
Inventory. With inventory management enabled and a fulfillment_location set on the fulfillment order, reserved is reduced by the cancelled quantity.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: cancel-fo-line-items-requestrequired- Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
Responses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
line_itemsis missing or empty.cancellation_reasonis missing.- an item carries neither
idnor a product identifier. - a product identifier matches no line item on the fulfillment order, or matches more than one.
quantityis missing or below 1.- an item is
fulfilled,closedor alreadycancelled. - a quantity exceeds what the item has.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/on-holdHold fulfillment order
Puts a single fulfillment order on hold without affecting the rest of the order.
Preconditions. The fulfillment order must be open or allocated and not already on hold, and its order must not be on hold.
What happens.
- The fulfillment order status becomes
on_hold; the order status is unchanged. on_hold_detailsrecords the hold; an earlier hold moves intohistory.- While the hold is active, every operation on that fulfillment order except cancel and release returns
400. - The
FULFILLMENT_ORDER_ON_HOLDwebhook fires.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: on-hold-requestResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
- the fulfillment order is not
openorallocated. - the fulfillment order is already on hold.
- the order is on hold.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/release-on-holdRelease fulfillment order hold
Releases an active hold on a single fulfillment order and returns it to the status derived from its line items.
Preconditions. The fulfillment order must be on_hold and its order must not be on hold.
What happens.
- The fulfillment order returns to
openorallocatedas derived from its line items. on_hold_detailsis kept with the release details.- The
FULFILLMENT_ORDER_RELEASE_ON_HOLDwebhook fires.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: release-on-hold-requestResponses
order- Current status of the order: -
open- Order created, not yet allocated -partially_allocated- Some items allocated to fulfillment locations -allocated- All items allocated to fulfillment locations -on_hold- Order is held and cannot be updated or fulfilled until the hold is released -processing- One or more fulfillment orders are being processed (picked, packed, shipped or partially fulfilled) -fulfilled- All items have been fulfilled -cancelled- Order has been cancelled -closed- Order is complete and closedValues:openpartially_allocatedallocatedon_holdprocessingfulfilledcancelledclosed - Why the order or its items were cancelled:
customer_cancellation(the customer asked),auto_allocation_failed(no location could be allocated),inventory_out_of_stock,staff_error,payment_issueorother. Carriyo setsinventory_out_of_stockorauto_allocation_faileditself on items that allocation auto-cancels.Values:customer_cancellationauto_allocation_failedinventory_out_of_stockstaff_errorpayment_issueother
error-responseThe request was rejected. One of:
- the fulfillment order is not
on_hold. - the order is on hold; release the order instead.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/allocateAllocate fulfillment order
Runs allocation for a single fulfillment order and, unless dry_run is true, applies the result to the order.
Preconditions. The fulfillment order must be open or allocated, neither it nor its order may be on hold, and its delivery_method must not be DIGITAL.
What to send. Two body flags decide whether a result is accepted:
allow_partial_order_allocationis read from the request only; omitted, partial results are accepted.allow_order_splittingdefaults to the order management setting of the same name; a value in the request overrides it.
What comes back. The response lists the proposed fulfillment orders: one per allocated location, plus one open fulfillment order holding any items that could not be allocated. committed says whether the result was applied.
When the result is applied. With dry_run false and the result accepted, committed is true and Carriyo:
- gives the existing fulfillment order the first proposal, keeping its
fulfillment_order_id; - creates a new fulfillment order for each further proposal;
- moves inventory reservations to the allocated locations when inventory management is enabled;
- recalculates the order status.
The FULFILLMENT_ORDER_ALLOCATE webhook fires only when the result is committed.
When nothing is saved. committed is false when dry_run is true or the result is rejected. A result is rejected when:
- it contains no items;
- items remain unallocated while
allow_partial_order_allocationis false; - it spans more than one location while
allow_order_splittingis false.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| dry_run | boolean | No | If true, returns the proposed allocation without saving anything. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Header parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | No | Optional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See https://carriyo.com/docs/api/idempotency/. |
Request body
application/jsonSchema: allocate-fulfillment-order-requestResponses
committed to see whether it was applied.Schema: allocation-responseerror-responseThe request was rejected. One of:
- the fulfillment order is not
openorallocated. - the fulfillment order or its order is on hold.
- its
delivery_methodisDIGITAL.
Need the full machine-readable spec? Download the OpenAPI document →
/orders/{orderReference}/fulfillment-orders/{fulfillmentOrderReference}/available-locationsList available locations
Lists the fulfillment locations the allocation engine would evaluate for a fulfillment order, with stock availability per item. Nothing is saved.
Behavior. Locations are sorted by availability (AVAILABLE, then PARTIALLY_AVAILABLE, then UNAVAILABLE), then by how many requested items they can supply, then by location_code. current marks the location currently assigned to the fulfillment order.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderReference | string | Yes | Carriyo `order_id` or your own `partner_order_reference`. The value is matched against `order_id` first, then `partner_order_reference`; if neither matches, the response is 404. |
| fulfillmentOrderReference | string | Yes | Carriyo `fulfillment_order_id` or your own `partner_fulfillment_order_reference`. The value is matched against `fulfillment_order_id` first, then `partner_fulfillment_order_reference`. A partner reference shared by more than one fulfillment order on the order returns 400. A value matching neither returns 404. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
available-locations-responseerror-responseThe request was rejected. One of:
- the fulfillment order has active picks.
- the fulfillment order has no line items.
Need the full machine-readable spec? Download the OpenAPI document →
Order Allocation Rules
Rules that decide how an order is split into fulfillment orders across your fulfillment locations, evaluated in sequence.
Related: How the allocation engine chooses locations
6 operations · 0 objects
/order-allocation-rulesCreate order allocation rule
Creates an order allocation rule.
Behavior. A new rule takes the sequence you send; nothing appends it last, and a lower sequence pre-empts existing rules because the lowest matched sequence wins. Duplicate sequences are not rejected; a duplicate name is.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonrequiredResponses
Need the full machine-readable spec? Download the OpenAPI document →
/order-allocation-rulesList order allocation rules
Lists the order allocation rules configured for the merchant, ordered by evaluation priority (sequence).
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
Need the full machine-readable spec? Download the OpenAPI document →
/order-allocation-rules/{rule_id}Get order allocation rule
Returns a single order allocation rule by its rule_id.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| rule_id | string | Yes | Allocation rule ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
Need the full machine-readable spec? Download the OpenAPI document →
/order-allocation-rules/{rule_id}Update order allocation rule
Replaces an order allocation rule.
Behavior. The request body fully replaces the existing rule; fields you omit are reset to defaults. The rule's evaluation priority is managed separately with Update rule sequence.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| rule_id | string | Yes | Allocation rule ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonrequiredResponses
Need the full machine-readable spec? Download the OpenAPI document →
/order-allocation-rules/{rule_id}Delete order allocation rule
Deletes an order allocation rule.
Behavior. Orders that would have matched this rule fall through to the next matching rule in evaluation order.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| rule_id | string | Yes | Allocation rule ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
Need the full machine-readable spec? Download the OpenAPI document →
/order-allocation-rules/sequencesUpdate rule sequence
Sets the priority order in which allocation rules are evaluated.
Behavior. Send only the rules to move; rules not in the body are untouched.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonrequiredResponses
Need the full machine-readable spec? Download the OpenAPI document →
Order Hold Rules
Rules that put a new order on hold automatically when it matches their conditions, so someone can review it before it is fulfilled.
Related: How an order is put on hold and released
8 operations · 0 objects
/order-hold-rulesCreate order hold rule
Creates an order hold rule.
What to send. rule_name, the conditions to match, and the hold_action to stamp on the hold. status defaults to ACTIVE and match_type to ALL. rule_id, rule_set_id, updated_by_user and the dates are assigned by Carriyo; values you send for them are ignored.
Sequence. A rule sent without sequence, or with 0, is placed after the highest sequence in use. Duplicate sequences are not rejected.
What happens. An ACTIVE rule applies to orders created from then on. A rule with no conditions never matches an order.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: order-hold-rulerequiredResponses
order-hold-ruleerror-responseThe request was rejected. One of:
rule_nameis missing.- another order hold rule already uses this
rule_name.
Need the full machine-readable spec? Download the OpenAPI document →
/order-hold-rulesList order hold rules
Lists the tenant's order hold rules, whatever their status. The list is not sorted; order the rules by sequence to get the evaluation order.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
An array of order-hold-rule. Each item has the following fields:
Need the full machine-readable spec? Download the OpenAPI document →
/order-hold-rules/activityList order hold rule activity
Lists the changes made to the tenant's order hold rules: rules created and updated, status changes and sequence changes, each with who made it and which fields changed.
What is covered. Only rules that still exist. When a rule is deleted, its entries leave the list.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| rule_set_id | string | No | Rule set to read activity for. Defaults to the tenant's rule set. |
| page_num | integer | No | Page to return, starting at `1`. Default `1`; a value below `1` is treated as `1`. |
| rows_per_page | integer | No | Entries per page. Default `20`; a value above `100` is treated as `100`. |
| sort | string | No | Order by time. Default `desc`, newest first; any value other than `asc` is treated as `desc`. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
order-hold-rule-activity-responseNeed the full machine-readable spec? Download the OpenAPI document →
/order-hold-rules/sequencesUpdate order hold rule sequence
Sets the order in which order hold rules are evaluated. Rules are evaluated in ascending sequence, and the first ACTIVE rule that matches places the hold.
What to send. One entry per rule to move. Rules you leave out keep their sequence, and an entry whose rule_id does not exist is ignored as long as at least one other entry resolves. Duplicate sequences are not rejected.
Activity. Mark the rule the user moved with primary: true. Its change is recorded as a sequence update; the other entries are recorded as realignments.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: order-hold-rule-sequences-requestrequiredResponses
order-hold-rule-sequences-requestrule_id values belong to a rule of the tenant, or the body is an empty array.Schema: error-responseNeed the full machine-readable spec? Download the OpenAPI document →
/order-hold-rules/{rule_id}Get order hold rule
Returns a single order hold rule by its rule_id.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| rule_id | string | Yes | Order hold rule ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
order-hold-ruleNeed the full machine-readable spec? Download the OpenAPI document →
/order-hold-rules/{rule_id}Update order hold rule
Replaces an order hold rule.
What to send. The full rule. The body replaces every condition and the hold_action; whatever you omit is removed. An omitted status becomes ACTIVE and an omitted match_type becomes ALL.
Sequence. Send the rule's current sequence. An omitted sequence is stored as 0, which moves the rule ahead of every other rule.
What is kept. rule_id, rule_set_id and creation_date.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| rule_id | string | Yes | Order hold rule ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: order-hold-rulerequiredResponses
order-hold-ruleerror-responseThe request was rejected. One of:
rule_nameis missing.- another order hold rule already uses this
rule_name.
Need the full machine-readable spec? Download the OpenAPI document →
/order-hold-rules/{rule_id}Delete order hold rule
Permanently deletes an order hold rule. Its entries are also removed from the rule activity.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| rule_id | string | Yes | Order hold rule ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
Need the full machine-readable spec? Download the OpenAPI document →
/order-hold-rules/{rule_id}/update-statusUpdate order hold rule status
Changes the status of an order hold rule without sending the rest of the rule. Set INACTIVE to stop the rule being evaluated and ACTIVE to resume it.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| rule_id | string | Yes | Order hold rule ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: order-hold-rule-status-requestrequiredResponses
order-hold-ruleerror-responseThe request was rejected. One of:
statusis missing.- the rule already has this
status.
Need the full machine-readable spec? Download the OpenAPI document →
Order Management Settings
The tenant-wide settings that switch automatic allocation and inventory management on, and set how orders are split, when stock moves, and when uncollected orders expire. A tenant has one settings record.
Related: How allocation uses these settings
4 operations · 0 objects
/order-management-settingsCreate order management settings
Creates the tenant's order management settings. A tenant has one settings record, so this call works only while none exists.
What to send. Every field is optional, and nothing is defaulted: a field you omit is stored unset. Send the full set of settings.
What happens. Automatic allocation is off until a record exists with enable_automatic_order_allocation set to true; until then every order is created in open.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: order-management-settingsrequiredResponses
order-management-settingserror-responseThe request was rejected. One of:
- the tenant already has order management settings.
- an
allocation_prioritiesentry has noallocation_priority_type, or has nosequenceor one below 1.
Need the full machine-readable spec? Download the OpenAPI document →
/order-management-settingsGet order management settings
Returns the tenant's order management settings.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
order-management-settingsNeed the full machine-readable spec? Download the OpenAPI document →
/order-management-settingsUpdate order management settings
Replaces the tenant's order management settings.
What to send. The full settings. The body replaces every setting, and a field you omit comes back as null. That applies to enable_automatic_order_allocation, enable_inventory_management, stock_reduction_timing, stock_increase_timing and allocation_priorities as much as to the rest.
What is kept. creation_date and creation_source stay as they were. update_date and update_source are set from this call.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: order-management-settingsrequiredResponses
order-management-settingserror-responseThe request was rejected. One of:
- the tenant has no order management settings.
- an
allocation_prioritiesentry has noallocation_priority_type, or has nosequenceor one below 1.
Need the full machine-readable spec? Download the OpenAPI document →
/order-management-settingsDelete order management settings
Deletes the tenant's order management settings.
What happens. The record is removed, and Get order management settings answers 404 until settings are created again. Settings created afterwards are a new record with a new creation_date.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
Need the full machine-readable spec? Download the OpenAPI document →