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

# Create Manual Order

Logs an offline order (e.g., walk-in customer, phone order) directly from your backend/pos.

### Authorizations

<ParamField header="X-Shop-API-Key" type="string" required>
  Your Secret API Key (`sk_live_...` or `sk_test_...`) generated from the Developer dashboard. Must be kept secret.
</ParamField>

### Path Parameters

<ParamField path="shopId" type="string" required>
  The unique UUID of the shop.
</ParamField>

### Request Body (JSON)

<ParamField body="customerName" type="string" required>
  Customer name.
</ParamField>

<ParamField body="customerPhoneNumber" type="string" required>
  Customer contact phone number. Must be valid.
</ParamField>

<ParamField body="totalPrice" type="number" required>
  Total price in Kobo.
</ParamField>

<ParamField body="paymentStatus" type="string">
  `pending` or `paid`.
</ParamField>

<ParamField body="orderStatus" type="string">
  `confirmed`, `delivered`, etc.
</ParamField>

<ParamField body="orders" type="array" required>
  Ordered items list containing `productId`, `variantId`, and `orderProductQty` (min 1).
</ParamField>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "status": "success",
    "message": "Order created successfully",
    "data": {
      "id": 502,
      "orderStatus": "delivered",
      "paymentStatus": "paid",
      "reference": "ORD-502-XYZ"
    }
  }
  ```

  ```json 400 Bad Request theme={null}
  {
    "message": "FORM_VALIDATION_ERROR",
    "code": 400,
    "validationErrors": [
      {
        "path": [
          "orders",
          0,
          "orderProductQty"
        ],
        "message": "Quantity must be at least 1"
      }
    ]
  }
  ```
</ResponseExample>
