> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.quivo.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a Fulfillment Order

This tutorial guides you step by step through creating a fulfillment order and triggering the "Pick & Pack" process in the warehouse for your products.

## Prerequisites

Before you start, make sure you have:

* **Session token:** A valid session token. See the [Authentication guide](/api-reference/authentication) to learn how to obtain one.
* **Seller ID:** Use the [`GET /sellers endpoint`](/api-reference/#tag/sellers) to find it.
* **Product SKU:** Create at least one product via the [`POST /articles endpoint`](/api-reference/#tag/articles) before ordering it.

<Note>
  All API examples in this guide use `${BASE_URL}` as a placeholder. Replace it with the correct base URL configured for the correct environment. For more information see [Environments page](/api-reference/environments).
</Note>

## Create the order request

To create an order, construct a JSON object that matches the `OrderPost` schema using the [`POST /orders endpoint`](/api-reference/#tag/orders).

You must provide four main fields in the payload:

1. **Seller Context:** Identifies the merchant account `sellerId`.
2. **Order Identifiers:** Unique IDs to track the order and prevent duplicates `orderIdentifier` and `orderReference`.
3. **Delivery Address:** The destination for the package `deliveryAddress`.
4. **Order Positions:** The list of items to ship `positions`, including SKUs, names, and quantities.

The following example shows an order payload with all required fields:

<Tabs>
  <Tab title="Request">
    Use this request to create a new fulfillment order with basic delivery and position data.

    ```bash theme={null}
    curl -X POST "${BASE_URL}/orders" \
      -H "X-Api-Key: <YOUR_STATIC_API_KEY>" \
      -H "Authorization: <YOUR_SESSION_TOKEN>" \
      -H "Content-Type: application/json" \
      -d '{
        "sellerId": <YOUR_SELLER_ID>,
        "orderIdentifier": "<YOUR_ORDER_IDENTIFIER>",
        "orderReference": "<YOUR_ORDER_REFERENCE>",
        "deliveryAddress": {
          "company": "<YOUR_COMPANY_NAME>",
          "name": "<RECIPIENT_NAME>",
          "email": "<RECIPIENT_EMAIL>",
          "street": "<YOUR_STREET_ADDRESS>",
          "city": "<YOUR_CITY>",
          "zip": "<YOUR_ZIP_CODE>",
          "countryIso2": "<YOUR_COUNTRY_CODE>"
        },
        "positions": [
          {
            "sku": "<YOUR_SKU>",
            "name": "<PRODUCT_NAME>",
            "quantity": <QUANTITY>
          },
          {
            "sku": "<YOUR_SKU>",
            "name": "<PRODUCT_NAME>",
            "quantity": <QUANTITY>
          }
        ]
      }'
    ```
  </Tab>

  <Tab title="Response">
    A successful request returns a `200 OK` status code and an `OrderPostResult` object.

    ```json theme={null}
    {
      "status": "OK",
      "message": "Order created successfully",
      "orderId": <YOUR_ORDER_ID>
    }
    ```

    Capture the `orderId` from the response. You need this ID to track the order status later.
  </Tab>
</Tabs>

<Tip>
  For the complete order request schema—including all required and optional fields—see the [Orders section in the API Reference](/api-reference/#tag/orders).
</Tip>

## Where to go next

Now that you have created the order, the warehouse team receives the Pick & Pack instruction automatically. Continue with these guides:

<CardGroup cols={2}>
  <Card title="Track an Order" icon="location-dot" href="/docs/quickstart/track-order">
    Monitor order status and retrieve tracking information when Quivo ships the order.
  </Card>

  <Card title="Manage Webhooks" icon="bell" href="/docs/webhooks/create-subscriptions">
    Set up webhooks to receive automatic notifications when order status changes or when Quivo generates tracking numbers.
  </Card>
</CardGroup>
