Place Order
Creates a new order with product, customer, and shipping details.
POST
/api/v1/device-hub/place-orderDescription
Submit an order to deploy IT assets to employees. Specify the products, shipping method, and recipient details to create a new deployment order.
Request
Headers
| Header | Value | Required |
|---|---|---|
| Authorization | Bearer <token> | Yes |
| Content-Type | application/json | Yes |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| products | array | Yes | List of products to order |
| products[].name | string | Yes | Exact product title from inventory |
| products[].quantity | integer | Yes | Quantity to order |
| string | Yes | Customer email address | |
| firstname | string | Yes | Customer first name |
| lastname | string | Yes | Customer last name |
| shipping_address | string | Yes | Street address for delivery |
| shipping_city | string | Yes | City for delivery |
| shipping_state | string | Yes | State/Province (if applicable) |
| shipping_zip | string | Yes | Postal/ZIP code |
| shipping_country | string | Yes | Country code (ISO2, e.g., US) |
| phone_number | string | Yes | Contact number of the recipient |
| expedite_shipping | string / null | No | Shipping method (e.g., "2nd Day Air", "Overnight"). Must match warehouse options. |
| is_signature_required | boolean | No | Whether delivery signature is required (US and CA only) |
| shipment_protection_enabled | boolean | No | Whether to add shipment protection to the order. Defaults to false when omitted. Only supported for orders fulfilled from US, Canada, Germany, and UK warehouses. |
| shipment_protection_declared_value | number | Conditional | Declared value used for shipment protection. Required and must be greater than 0 and not exceed 50,000 when shipment_protection_enabled is true. Ignored when shipment_protection_enabled is false. |
| tag | object / string | No | Optional accounting tags. May be a JSON object or JSON-encoded string. |
| tag.cost_center_code | string | No | If a cost center with this code does not exist for your company, a new cost center is created and linked to the order. |
| tag.department | string | No | If a department with this name does not exist for your company, a new department is created and linked to the order. Alias: tag.department_name. |
| tag.gl_code | string | No | GL code. Max 50 characters. |
| tag.po_number | string | No | PO number. Max 50 characters. |
| tag.site | string | No | Site. Max 100 characters. |
| tag.custom_field_1 | string | No | Custom field 1. Max 255 characters. |
| tag.custom_field_2 | string | No | Custom field 2. Max 255 characters. |
Response Fields
| Field | Type | Description |
|---|---|---|
| message | string | Confirmation message |
| data.order_number | string | Unique order number |
| data.products | array | Ordered products with details |
| data.products[].name | string | Product name |
| data.products[].qty | integer | Quantity ordered |
| data.products[].price | number | Unit price |
| data.products[].image | string | URL to product image |
Notes
- The products[].name value must exactly match the title returned from the Inventory List endpoint
- If expedite_shipping is specified, it must match one of the shipping options from the warehouse
- Valid shipping options: "UPS Ground", "2nd Day Air", "Overnight"
- is_signature_required only applies to US and CA shipments
- Shipment protection is only supported for orders fulfilled from US, Canada, Germany, and UK warehouses
- When shipment_protection_enabled is true, shipment_protection_declared_value is required and must be greater than 0 and not exceed 50,000
- When shipment_protection_enabled is false (or omitted), any shipment_protection_declared_value sent is ignored and no protection is stored
- The order_number can be used to track the order status
- Ensure the shipping_country uses ISO2 country codes (e.g., US, CA, GB)
- The tag object is optional; when omitted, no order_tags row is created
- If a cost center with tag.cost_center_code does not exist for your company, a new cost center is created and linked to the order
- If a department with tag.department (or tag.department_name) does not exist for your company, a new department is created and linked to the order
- Use GET /api/v1/departments to list existing department names, or pass a new name to create one
Related Endpoints
Did this page help you?
Request
curl -X POST 'https://uat.unduit.com/api-exposed/api/v1/device-hub/place-order' \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
--data-raw '{
"products": [
{
"name": "Dell OptiPlex 7010 Micro",
"quantity": 1
}
],
"email": "test@test.com",
"firstname": "John",
"lastname": "Doe",
"shipping_address": "123 Main St",
"shipping_city": "Chicago",
"shipping_state": "IL",
"shipping_zip": "60601",
"shipping_country": "US",
"phone_number": "+1-555-0123",
"expedite_shipping": "2nd Day Air",
"shipment_protection_enabled": true,
"shipment_protection_declared_value": 479.99,
"tag": {
"cost_center_code": "CC-001",
"department": "Engineering",
"gl_code": "GL-100",
"po_number": "PO-99",
"site": "NYC",
"custom_field_1": "Project Atlas",
"custom_field_2": "Q3 onboard"
}
}'Success Response (200)
{
"message": "Thank you for placing the order",
"data": {
"order_number": "725491327",
"products": [
{
"name": "Dell OptiPlex 7010 Micro",
"qty": 1,
"price": 479.99,
"image": "https://example.com/images/dell-optiplex-7010.png"
}
]
}
}