Returns the delivery options that match a given order or cart at checkout time.
Delivery options are configured per merchant in the Carriyo dashboard. Each option declares the carrier account that fulfils it, a shipping fee, an estimated delivery window, and a set of optional conditions. This endpoint evaluates the configured conditions against the order details you supply and returns the matching options — typically rendered to the shopper as the delivery choices on the checkout page.
Both DELIVERY and COLLECTION options can be returned. The shopper has not chosen between them at this point — customer represents where the customer is, not where the order is being delivered. For DELIVERY options the customer's location is also the delivery destination; for COLLECTION options it's used to find applicable collection points.
Provide one of the following:
| Field | When to use |
|---|---|
order |
Inline order details, when no order has been created in Carriyo yet — the typical live checkout flow. |
order_id |
Carriyo's internal order ID, when the order already exists in Carriyo. |
partner_order_reference |
Your own reference for an order that already exists in Carriyo. |
When order_id or partner_order_reference is supplied, Carriyo loads the persisted order and uses its data for condition evaluation. When order is supplied, only the fields required by the conditions you've configured need to be present.
Each condition only applies when the merchant has configured it on a delivery option. The corresponding order field is read only if such a condition exists, so callers only need to populate the fields relevant to the rules in use.
| Condition (configured on the option) | Evaluated against |
|---|---|
| Working days / blackout days | order.order_date (defaults to now); timezone derived from order.customer.country |
| Customer geography | order.customer.{country, state, city, area} |
| Order value range | order.payment.order_total |
| Weight range | Sum of order.line_items[].weight (converted to kg) |
| Payment type | Derived: CASH_ON_DELIVERY if order.payment.payment_on_delivery > 0, otherwise PRE_PAID |
| Fulfillment location | order.fulfillment_location (free-form, or partner_location_id for a configured Carriyo location) |
An array of matching delivery options, each with its carrier account, computed shipping fee, and estimated arrival window. The array is empty if no configured option matches the supplied order.
The delivery options that match the supplied order.
The most common scenario. A shopper is at checkout, no order yet exists in Carriyo. The request supplies the customer's location (for customer-geography rules and timezone), payment.order_total (for order-value range rules), and line_items with weights (for weight range rules). Fulfillment location is omitted — Carriyo will fall back to the merchant's default sourcing.
{- "order": {
- "merchant": "ACME",
- "payment": {
- "currency": "AED",
- "order_total": 285
}, - "customer": {
- "country": "AE",
- "state": "DUBAI",
- "city": "DUBAI",
- "area": "DOWNTOWN-DUBAI"
}, - "line_items": [
- {
- "id": "line-1",
- "sku": "TSHIRT-BLK-M",
- "quantity": 2,
- "weight": {
- "value": 0.25,
- "unit": "kg"
}
}, - {
- "id": "line-2",
- "sku": "JEANS-W32-L32",
- "quantity": 1,
- "weight": {
- "value": 0.6,
- "unit": "kg"
}
}
]
}
}Three options are returned: two DELIVERY options and one COLLECTION option (customer collects from a store).
Known limitation: the response does not currently include the collection-point address for
COLLECTIONoptions. The shopper's UI typically resolves the collection point separately (e.g., a store locator keyed off the same merchant + customer geography). This is being tracked as a separate enhancement.
[- {
- "type": "DELIVERY",
- "code": "STD",
- "name": "Standard Delivery",
- "description": "Delivered in 2–4 working days",
- "carrier_account_id": "ca-aramex-uae-001",
- "shipping_fee": {
- "amount": 15,
- "currency": "AED"
}, - "estimated_arrival_from": "2026-05-07T09:00:00.000Z",
- "estimated_arrival_to": "2026-05-09T18:00:00.000Z"
}, - {
- "type": "DELIVERY",
- "code": "NEXT_DAY",
- "name": "Next Day Delivery",
- "description": "Order before 6pm for next working day",
- "carrier_account_id": "ca-fetchr-uae-001",
- "shipping_fee": {
- "amount": 25,
- "currency": "AED"
}, - "estimated_arrival_from": "2026-05-06T09:00:00.000Z",
- "estimated_arrival_to": "2026-05-06T18:00:00.000Z"
}, - {
- "type": "COLLECTION",
- "code": "STORE_PICKUP",
- "name": "Collect From Store",
- "description": "Free pickup from a participating store",
- "carrier_account_id": "ca-acme-self-collect",
- "shipping_fee": {
- "amount": 0,
- "currency": "AED"
}, - "estimated_arrival_from": "2026-05-06T10:00:00.000Z",
- "estimated_arrival_to": "2026-05-06T22:00:00.000Z"
}
]