---
search:
  tags:
    - Orders
    - POST
seo:
  description: >-
    Places an order for one or more products from a supplier. Reference for the
    POST /orders endpoint in the Sibi API.
sidebar:
  label: Create order
  badge: POST
title: Create order
type: openapi-operation
---
Places an order for one or more products from a supplier.

Sensible defaults are applied for anything not specified: the fulfillment method defaults to standard delivery, the delivery date to the earliest available, the distribution center to the closest one, and quantity to 1 per line item. Validation runs before placement — the supplier, line items, options, fulfillment choices, and payment method are all checked, and the request is rejected with a specific error code when something doesn't hold together.

Pass an `idempotencyKey` to make retries safe: resubmitting the same order with the same key within 5 minutes returns the existing order instead of creating a duplicate. This matters on failure: a 5xx response or a timeout does not guarantee the order was not placed, so retry only with the same `idempotencyKey` — a retry without one can create a duplicate order.

Validation failures return 400 with one of these codes: `VALIDATION_ERROR`, `INVALID_SUPPLIER`, `PRODUCTS_NOT_FOUND`, `PRODUCTS_DISCONTINUED`, `INVALID_PRODUCT_OPTIONS`, `INVALID_UNIT_OF_MEASURE`, `ADDON_WITH_ID_NOT_AVAILABLE`, `ADDON_WITH_TITLE_NOT_AVAILABLE`, `CONFLICTING_WARRANTY_INPUT`, `WARRANTY_SKU_NOT_AVAILABLE_FOR_PRODUCT`, `NO_AVAILABLE_WARRANTIES_FOR_PRODUCT`, `INVALID_FULFILLMENT_METHOD`, `NO_AVAILABLE_DELIVERY_METHODS`, `NO_AVAILABLE_FULFILLMENT_DATES`, `INVALID_REQUESTED_DELIVERY_DATE`, `NO_AVAILABLE_PAYMENT_METHODS`, `NO_DISTRIBUTION_CENTER_FOUND`, `INVALID_SUBSCRIBERS`, `DELIVERY_ADDRESS_PROVIDED_FOR_PICKUP`, `INVALID_DELIVERY_ADDRESS`.

`POST /orders`

**Request body** (`application/json`)

- `supplier` (string) — The supplier to order from, identified by its slug. Required unless the deprecated \`seller\` is sent.
- `seller` (string) — Deprecated: use \`supplier\` instead. Ignored when \`supplier\` is also sent.
- `address` (OrderAddress, required) — The address must correspond to a valid property in the system. If the address is not valid, the request fails with an error.
- `lineItems` (OrderLineItemInput[], required) — The products to order. At least one line item must be specified, and at most 100.
- `contactInfo` (OrderContactInfo, required) — Contact information for the customer receiving the order.
- `fulfillmentMethodId` (string) — Fulfillment method id for the order. If not provided, defaults to standard delivery.
- `fulfillmentMethodType` (string) — Fulfillment method type for the order. Defaults to 'DELIVERY' when both are available.
- `deliveryAddress` (object)
- `shipToOfficePropertyId` (string) — Removed. Use \`deliveryAddress\`. Sending it fails with a 400.
- `requestedDeliveryDate` (string) — The date the customer wants the order delivered. If not provided, defaults to the earliest available. If the provided date is not available, the request fails with an error.
- `poNumber` (string) — A reference number of the caller's choosing. It does not need to be a number.
- `specialInstructions` (string) — Free-form instructions for fulfillment.
- `distributionCenterId` (string) — If omitted the order is placed in the closest distribution center.
- `paymentMethodId` (string, required) — The payment method to charge. Must be one of the available payment methods for this caller.
- `idempotencyKey` (string) — A unique identifier for the order. If the same order is submitted multiple times within 5 minutes with the same idempotency key, the API returns the existing order and does not create a new one.
- `subscribers` (object[]) — An optional list of subscribers to receive updates about the order in addition to the user account that placed the order. Pass an empty list to opt out of status notifications.
- `warrantyOrderPaymentMethodId` (string) — If provided, this payment method is used for the warranty sub-order instead of the parent order's \`paymentMethodId\`. Must be one of the warranty-order payment methods available to this caller.

Request body example:

```json
{
  "supplier": "ge",
  "seller": "ge",
  "address": {
    "line1": "1630 W Guadalupe Rd",
    "line2": "Ste 101",
    "city": "Gilbert",
    "stateOrProvince": "AZ",
    "postalCode": "85233",
    "country": "USA"
  },
  "lineItems": [
    {
      "sku": "GDF510PSRSS",
      "quantity": 1,
      "unitOfMeasure": "Each",
      "options": [
        {
          "key": "ppg-paint-color",
          "value": "PPG1105-3"
        }
      ],
      "addonIds": [
        "string"
      ],
      "addonTitles": [
        "string"
      ],
      "warrantySku": "string",
      "applyWarrantyCoverage": true
    }
  ],
  "contactInfo": {
    "firstName": "John",
    "lastName": "Doe",
    "email": "john.doe@example.com",
    "phone": "1234567890"
  },
  "fulfillmentMethodId": "sibi-sibi-default-delivery",
  "fulfillmentMethodType": "DELIVERY",
  "deliveryAddress": {
    "line1": "1630 W Guadalupe Rd",
    "line2": "Ste 101",
    "city": "Gilbert",
    "stateOrProvince": "AZ",
    "postalCode": "85233",
    "country": "USA"
  },
  "shipToOfficePropertyId": "string",
  "requestedDeliveryDate": "2026-09-01",
  "poNumber": "PO-123456",
  "specialInstructions": "The lock code is 1234",
  "distributionCenterId": "string",
  "paymentMethodId": "MANUFACTURER_CREDIT",
  "idempotencyKey": "string",
  "subscribers": [
    {
      "email": "updates@example.com"
    }
  ],
  "warrantyOrderPaymentMethodId": "string"
}
```

**Responses**

- `201` — The order was created.
- `400` — Bad request - Invalid input data. See the operation description for the possible error codes.
- `401` — Unauthorized - Missing or invalid authentication
- `403` — Forbidden - the token was minted for the other environment, is not a Public REST API token, or does not carry the scope this operation requires
- `500` — Internal server error

Response example, 201:

```json
{
  "id": "SIBI-12345678",
  "orderUrl": "https://web.sibipro.com/orders/SIBI-12345678",
  "warrantyOrderId": "string",
  "warrantyOrderUrl": "string"
}
```

Response example, 400 · validationError:

```json
{
  "code": "VALIDATION_ERROR",
  "message": "Invalid input parameters"
}
```

Response example, 400 · invalidSupplier:

```json
{
  "code": "INVALID_SUPPLIER",
  "message": "Unknown supplier \"acme\""
}
```

Response example, 400 · productsNotFound:

```json
{
  "code": "PRODUCTS_NOT_FOUND",
  "message": "The following products were not found: not-a-real-sku"
}
```

Response example, 401:

```json
{
  "code": "UNAUTHORIZED",
  "message": "Missing or invalid authentication token"
}
```

Response example, 403 · environmentMismatch:

```json
{
  "code": "TOKEN_ENVIRONMENT_MISMATCH",
  "message": "A test token was used against the production API. Test tokens only work against the Sibi test environment; use a production token here."
}
```

Response example, 403 · restTokenRequired:

```json
{
  "code": "REST_TOKEN_REQUIRED",
  "message": "This endpoint only accepts Public REST API tokens. Create one at https://developer.sibipro.com."
}
```

Response example, 403 · insufficientScope:

```json
{
  "code": "INSUFFICIENT_SCOPE",
  "message": "The presented token is missing the `create:orders` scope, which this endpoint requires. Create a token with the scopes you need at https://developer.sibipro.com."
}
```

Response example, 500:

```json
{
  "code": "INTERNAL_SERVER_ERROR",
  "message": "An unexpected error occurred"
}
```
