Skip to content

Fulfilment Orders

A fulfilment order tells Quiqup to pick, pack and ship stock it holds for you. See Fulfilment orders.

Create Order

Request

Creates a fulfilment order: an instruction to pick stock Quiqup already holds for you, pack it and ship it to your customer. The warehouse builds the parcels, so you send products, not parcels.

The order is created as pending and goes to the warehouse for picking straight away. There is no separate release call. Two kinds of order wait first: an export (origin and shipping countries differ) waits until its carrier is settled, and an order that needs a Saudi national address waits until the address is valid.

service_kind sets the picking and packing deadline from your account's cut-off times and selects the carrier:

  • partner_next_day: next day, the standard service, in the UAE and Saudi Arabia.
  • partner_same_day: same day, in the UAE only.
  • partner_4hr: within four hours, in Dubai only.
  • partner_export: international. The carrier is chosen by rules.
  • partner_store: store replenishment, business to business.
  • partner_return: a return. Use is_return instead, below.

Ask your account manager which services are enabled on your account.

To create a return, set is_return to true and point initial_order_id at the original order. The order is stored with service_kind partner_return and is not picked from your stock. Only a return can carry mark_as_ready_for_collection.

Send a uuid to make the create safe to retry: a repeat with the same uuid returns the original order. A reference with is_unique set to true cannot be reused by another order on your account.

Security
BearerAuth or OAuth2
Bodyapplication/json
billing_addressobject(AddressRequest)

An address on an order request.

billing_identifierstring

A free-text label carried on the order for billing, for example to tell apart several brands that share one account. Optional.

carrierstring

The carrier to ship with. Optional: normally the carrier is chosen for you.

currencystringrequired

Three-letter ISO 4217 code for payment_amount, for example AED or SAR. Required.

delivery_optionsArray of strings

Special delivery requirements. The only accepted value is customer_identification_photo. Optional.

incotermstring

For an export, the Incoterm the order ships under, for example DAP. Optional.

initial_order_idstring

For a return, the id of the original order. When you send it, the original order must exist on your account or the create fails. Optional.

is_returnboolean

Set to true to create a return order. The order is then created with service_kind partner_return, and it is not picked from your stock. Optional.

mark_as_ready_for_collectionboolean

Return orders only. Send true together with is_return true to create the return as ready_for_collection instead of pending, so it is collected without a further step. Sending true on any other order is rejected. A normal order needs no such flag: it goes to the warehouse for picking as soon as it is created.

notesstring

Delivery instructions for the courier, at most 255 characters. Optional.

origin_addressobject(AddressRequest)required

An address on an order request.

partner_order_idstringrequired

Your own reference for the order. Required.

payment_amountnumber

What the courier collects from the customer. Required, and must not be 0, when payment_mode is paid_on_delivery. For pre_paid, send 0 or omit it.

payment_modestring(PaymentMode)required

pre_paid when you have already taken payment, paid_on_delivery when the courier collects it.

Enum:"pre_paid""paid_on_delivery"
productsArray of objects(OrderProduct)required

The SKUs to pick and the quantity of each. Required. Every SKU must be a product on your account.

referencesArray of objects(OrderReference)

Your own identifiers for the order as label and value pairs, for example a marketplace order number. They are stored on the order and returned when you read it. Optional.

registration_numbersArray of objects(RegistrationNumber)

Customs and VAT registration numbers for an export, such as a Mirsal 2 code. Optional.

service_kindstring(ServiceKind)required

The delivery service of an order.

Enum:"partner_next_day""partner_same_day""partner_4hr""partner_export""partner_store""partner_return"
shipping_addressobject(AddressRequest)required

An address on an order request.

uuidstring

Optional idempotency key, a UUID. Retry a create with the same uuid and you get the original order back instead of a second one, which makes a timed-out request safe to resend. Any UUID spelling is accepted (upper or lower case, with or without dashes) and anything else is rejected. A uuid is scoped to your account, and one already used by another account is rejected. Omit it and every request creates a new order.

curl -i -X POST \
  https://platform-api.quiqup.com/api/fulfilment/orders \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "currency": "AED",
    "notes": "Call on arrival",
    "origin_address": {
      "address1": "Warehouse 7, Example Industrial Area",
      "city": "Dubai",
      "country_code": "AE",
      "first_name": "Example",
      "last_name": "Brand",
      "name": "Example Brand",
      "phone": "+971500000003",
      "state": "Dubai"
    },
    "partner_order_id": "ORD-10045",
    "payment_amount": 249.5,
    "payment_mode": "paid_on_delivery",
    "products": [
      {
        "quantity": 2,
        "sku": "TSHIRT-BLK-M"
      },
      {
        "quantity": 1,
        "sku": "MUG-WHT"
      }
    ],
    "references": [
      {
        "is_unique": true,
        "label": "marketplace_order_id",
        "value": "MP-778812"
      }
    ],
    "service_kind": "partner_next_day",
    "shipping_address": {
      "address1": "Villa 12, Street 4",
      "address2": "Al Wasl",
      "city": "Dubai",
      "country_code": "AE",
      "email": "sara.ahmed@example.com",
      "first_name": "Sara",
      "last_name": "Ahmed",
      "phone": "+971500000001",
      "state": "Dubai"
    },
    "uuid": "3f6c1a52-8d2e-4b7a-9c1d-5e8f7a6b4c3d"
  }'

Responses

Success response

Bodyapplication/json
billing_addressobject(CreateFulfilmentOrderAddressResponse)

An address on an order.

carrierstring

The carrier the order ships with.

created_atstring, (date-time)

When the order was created.

currencystring

Three-letter ISO 4217 code for payment_amount.

delivery_optionsArray of strings

Special delivery requirements, for example customer_identification_photo.

errorsArray of objects

Problems recorded against the order, each as a set of key and value strings.

idstring

The order id, a number sent as a string. It is the id you pass to GET and PATCH, and order.* webhooks carry the same number as payload.id.

incotermstring

The Incoterm of an export.

initial_order_idstring

For a return, the original order's id.

is_returnboolean

Whether this is a return order.

notesstring

Delivery instructions for the courier.

origin_addressobject(CreateFulfilmentOrderAddressResponse)

An address on an order.

parcelsArray of objects(ParcelResponse)

The parcels the warehouse packed the order into.

partner_order_idstring

Your own reference for the order.

payment_amountnumber

What the courier collects from the customer.

payment_modestring(PaymentMode)

pre_paid when you have already taken payment, paid_on_delivery when the courier collects it.

Enum:"pre_paid""paid_on_delivery"
picking_order_createdboolean

True once the order has been sent to the warehouse for picking.

productsArray of objects(OrderProductResponse)

List of products included in the order.

referencesArray of objects(OrderReference)

The references attached to the order when it was created.

service_kindstring

The delivery service: partner_next_day, partner_same_day, partner_4hr, partner_export, partner_store or partner_return. A return order reports partner_return.

shipping_addressobject(CreateFulfilmentOrderAddressResponse)

An address on an order.

statusstring(OrderStatus)

Status of an order. pending (created, and waiting for or in the warehouse), problematic (a stock or warehouse problem that needs attention), wms_on_hold (held in the warehouse system) and picking_started occur only on fulfilment orders. From ready_for_collection the order follows the shared order lifecycle.

Enum:"pending""ready_for_collection""picking_started""out_for_collection""out_for_return""at_depot""received_at_depot""in_transit""out_for_delivery""collection_failed"
status_reasonstring

Why the order is in its current status, for example the warehouse error behind problematic.

tracking_urlstring

Tracking page for the order.

tracking_url_advancestring

Tracking page with more detail.

updated_atstring, (date-time)

When the order was last changed.

uuidstring

The order UUID. order.* webhooks carry it as payload.uuid.

Response
{ "created_at": "2026-10-16T08:12:44Z", "currency": "AED", "id": "26000001", "is_return": false, "origin_address": { "address1": "Warehouse 7, Example Industrial Area", "city": "Dubai", "country_code": "AE", "first_name": "Example", "last_name": "Brand", "name": "Example Brand", "phone": "+971500000003", "state": "Dubai" }, "parcels": [], "partner_order_id": "ORD-10045", "payment_amount": 249.5, "payment_mode": "paid_on_delivery", "picking_order_created": false, "products": [ { … }, { … } ], "references": [ { … } ], "service_kind": "partner_next_day", "shipping_address": { "address1": "Villa 12, Street 4", "address2": "Al Wasl", "city": "Dubai", "country_code": "AE", "email": "sara.ahmed@example.com", "first_name": "Sara", "last_name": "Ahmed", "phone": "+971500000001", "state": "Dubai" }, "status": "pending", "tracking_url": "https://track-parcel.quiqup.com/3f6c1a52-8d2e-4b7a-9c1d-5e8f7a6b4c3d", "updated_at": "2026-10-16T08:12:44Z", "uuid": "3f6c1a52-8d2e-4b7a-9c1d-5e8f7a6b4c3d" }