Order Processing
Use this API to register orders from an external commerce platform in Mulltiply. The request supports batching, so multiple orders can be sent in a single call.
At A Glance
POST
/v2/orders/process-thirdparty-orders| Area | Detail |
|---|---|
| Base URL | https://api.mulltiply.org |
| Content type | application/json |
| Authentication | x-api-key request header |
| Request body | Array of order objects |
| Required nested objects | customer, lineItems |
Headers
Content-Type: application/json
x-api-key: YOUR_API_KEY
Request Body
- JSON Body
- cURL
Request body
[
{
"syncId": "external://order/ORD-1001",
"customer": {
"syncId": "external://customer/CUST-1001"
},
"lineItems": [
{
"lineItemSyncId": "external://line-item/LINE-1001",
"quantity": 9,
"variantSyncId": "external://variant/VAR-1004"
}
],
"platform": "SHOPIFY",
"paymentStatus": "PAID",
"fulfillmentStatus": "FULFILLED"
}
]
Order processing request
curl --request POST \
--url 'https://api.mulltiply.org/v2/orders/process-thirdparty-orders' \
--header 'Content-Type: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--data '[{"syncId":"external://order/ORD-1001","customer":{"syncId":"external://customer/CUST-1001"},"lineItems":[{"lineItemSyncId":"external://line-item/LINE-1001","quantity":9,"variantSyncId":"external://variant/VAR-1004"}],"platform":"SHOPIFY","paymentStatus":"PAID","fulfillmentStatus":"FULFILLED"}]'
Order Mapping
| API field | Source field | Description |
|---|---|---|
syncId | Third-party order ID | Unique order identifier from the source platform. |
platform | Source platform name | Originating platform, for example SHOPIFY. |
paymentStatus | Third-party payment status | Whether the order has been paid. |
fulfillmentStatus | Third-party fulfillment status | Whether the order has been fulfilled. |
Customer Mapping
| API field | Source field | Description |
|---|---|---|
customer.syncId | Third-party customer ID | Unique customer identifier from the source platform. |
Additional customer fields such as name, email, and phone can be included when
available, but the source document treats customer.syncId as the core link.
Line Item Mapping
| API field | Source field | Description |
|---|---|---|
lineItems[].lineItemSyncId | Third-party line item ID | Unique ID for the order line item. |
lineItems[].quantity | Line item quantity | Number of units purchased. |
lineItems[].variantSyncId | Product variant ID | Unique product variant identifier. |
Processing Rules
- Send orders as an array.
- Include a stable, unique
syncIdfor every order. - Preserve third-party ID formats exactly as received from the source system.
- Include
customer.syncIdfor customer matching. - Include at least one line item for every order.
- Use
variantSyncIdto match purchased variants back to synced products/SKUs.
Status Values
Payment Status
| Value | Description |
|---|---|
PAID | Order has been fully paid. |
NOT_PAID | Order has not been paid. |
Fulfillment Status
| Value | Description |
|---|---|
FULFILLED | Order has been fulfilled. |
UNFULFILLED | Order has not been fulfilled. |
Final Payload Example
Final payload
[
{
"syncId": "external://order/ORD-1001",
"customer": {
"syncId": "external://customer/CUST-1001"
},
"lineItems": [
{
"lineItemSyncId": "external://line-item/LINE-1001",
"quantity": 9,
"variantSyncId": "external://variant/VAR-1004"
},
{
"lineItemSyncId": "external://line-item/LINE-1002",
"quantity": 10,
"variantSyncId": "external://variant/VAR-1003"
}
],
"platform": "SHOPIFY",
"paymentStatus": "PAID",
"fulfillmentStatus": "FULFILLED"
}
]
Source Data Checklist
| Source field | Source | Used for |
|---|---|---|
| Order ID | Third-party API | syncId |
| Customer ID | Third-party API | customer.syncId |
| Line Item ID | Third-party API | lineItems[].lineItemSyncId |
| Product Variant ID | Third-party API | lineItems[].variantSyncId |
| Quantity | Third-party API | lineItems[].quantity |
| Payment Status | Third-party API | paymentStatus |
| Fulfillment Status | Third-party API | fulfillmentStatus |
| Platform | Integration configuration | platform |
Response
Response with non-processable order
{
"error": false,
"status": true,
"statusCode": 200,
"responseTimestamp": "2026-03-19T07:38:42.800Z",
"data": {
"validRowsCount": 1,
"nonProcessableOrders": [
{
"orderData": {
"customer": {
"syncId": "external://customer/CUST-1001"
},
"lineItems": [
{
"lineItemSyncId": "external://line-item/LINE-1001",
"quantity": 9,
"variantSyncId": "external://variant/VAR-1004"
}
],
"platform": "SHOPIFY",
"paymentStatus": "PAID",
"fulfillmentStatus": "FULFILLED"
},
"error": "SyncId is required",
"row": 2,
"itemName": "SyncID is not present"
}
]
}
}
Implementation Checklist
- Confirm every order has a stable third-party order ID.
- Confirm every order has a customer ID.
- Confirm every order has at least one line item.
- Confirm every line item has a line item ID, quantity, and product variant ID.
- Confirm platform and status values match supported values.
- Send a JSON array, even when syncing one order.