Outbound Order GraphQL
Use this GraphQL endpoint to read outbound Mulltiply orders and map them back to external systems through sync IDs on retailer, shop, item, and offer data.
At A Glance
POST
/v2/graphql| Area | Detail |
|---|---|
| Base URL | https://api.mulltiply.org |
| Content type | application/json |
| Authentication | Authorization: Bearer <token> |
| API style | GraphQL |
| Main operation | orders(input: OrderListInput) |
Headers
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
Request Variables
| Variable | Type | Description |
|---|---|---|
page | number | Page number, starting at 1. |
limit | number | Number of orders per page. |
fromDate | YYYY-MM-DD | Include orders from this date. |
toDate | YYYY-MM-DD | Include orders up to this date. |
Example Request
curl --request POST \
--url 'https://api.mulltiply.org/v2/graphql' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"query": "query ($input: OrderListInput) { orders(input: $input) { pageInfo { total page hasNext limit } nodes { orderId orderNumber orderStatus retailer { syncId phone } shop { syncId retailerSyncId shopName } orderItems { id skuId quantity offer { offerSyncId finalPriceWithTax } item { itemName itemSyncId } } } } }",
"variables": {
"input": {
"page": 1,
"limit": 10,
"fromDate": "2026-03-24",
"toDate": "2026-03-24"
}
}
}'
Full Query Shape
query ($input: OrderListInput) {
orders(input: $input) {
pageInfo {
total
page
hasNext
limit
}
nodes {
orderId
mulltiplyOrderNumber
deliveryType
companyId
storeId
retailerName
retailer {
id
name
firstName
lastName
phone
whatsapp
syncId
}
isActionable
orderNumber
currencyCode
orderTotal
orderTotalFinal
orderTaxAmount
orderCessAmount
appliedPoints
totalExtraCharges
roundOff
orderStatus
totalItemsInOrder
isDeleted
shop {
id
syncId
retailerSyncId
shopName
}
orderItems {
id
skuId
quantity
offer {
id
offerSyncId
finalPriceWithTax
}
item {
id
itemName
itemSyncId
}
sku {
itemId
skuNickName
images
tags
offers {
id
skuId
offerSyncId
purchasePrice
mrpPriceAmount
currency
priceRange
}
itemSellingUnits {
id
name
mulltiplier
isBaseUnit
skuId
}
}
}
}
}
}
Order Fields
| GraphQL field | Description |
|---|---|
orderId | Mulltiply internal order identifier. |
orderNumber | Human-readable order number, such as ORD-1001. |
mulltiplyOrderNumber | Short encoded order reference. |
orderStatus | Current order status. |
currencyCode | Order currency, such as INR. |
orderTotal | Order value before rounding. |
orderTaxAmount | Total tax applied to the order. |
totalItemsInOrder | Count of line items in the order. |
Sync ID Mapping
| Entity | Path | Description |
|---|---|---|
| Product variant | nodes[].orderItems[].offer.offerSyncId | Third-party variant ID or internal SKU code. |
| Item / product | nodes[].orderItems[].item.itemSyncId | External item or product identifier. |
| Shop / outlet | nodes[].shop.syncId | Outlet identifier assigned during retailer/shop sync. |
| Retailer | nodes[].retailer.syncId | Buyer identifier assigned during retailer sync. |
| Shop retailer | nodes[].shop.retailerSyncId | Retailer associated with the shop. |
Always use the retailer object as the primary buyer identity carrier.
Processing Rules
- Request the first page with
page: 1. - Continue requesting pages until
pageInfo.hasNextisfalse. - Check
orderStatusbefore processing an order. - Use
offer.offerSyncIdto match ordered variants to the external catalogue. - Use
item.itemSyncIdto match the parent product. - Use
shop.syncIdto identify the ordering outlet. - Use
retailer.syncIdto identify the buyer. - If
retailer.syncIdis null, fall back toretailer.phone.
Status Values
| Value | Description |
|---|---|
ORDER_ACCEPTED | Order confirmed and ready for processing. |
CANCELLED | Order has been cancelled. |
DELIVERED | Order has been delivered. |
Example Response
{
"data": {
"orders": {
"pageInfo": {
"total": 16,
"page": 1,
"hasNext": true,
"limit": 1
},
"nodes": [
{
"orderId": "1001",
"mulltiplyOrderNumber": "ORDER-REF-1001",
"deliveryType": "REGULAR",
"orderNumber": "ORD-1001",
"orderStatus": "ORDER_ACCEPTED",
"currencyCode": "INR",
"orderTotal": 1000.0,
"orderTaxAmount": 50.0,
"totalItemsInOrder": 2,
"shop": {
"id": 2001,
"syncId": "00003",
"retailerSyncId": "RET-2001",
"shopName": "Demo Outlet"
},
"retailer": {
"id": 3001,
"name": "Demo Buyer",
"phone": "9999901003",
"syncId": "RET-2001"
},
"orderItems": [
{
"id": "5001",
"offer": {
"offerSyncId": "OFFER-2001",
"finalPriceWithTax": 500
},
"item": {
"itemName": "Demo Product",
"itemSyncId": "ITEM-2001"
}
}
]
}
]
}
}
}
Source Data Checklist
| Field | Used for |
|---|---|
orderId | Internal order reference. |
orderStatus | Decide whether the order needs processing. |
nodes[].shop.syncId | Match outlet to external system. |
nodes[].retailer.syncId | Match buyer to external system. |
nodes[].orderItems[].offer.offerSyncId | Match product variant to catalogue. |
nodes[].orderItems[].item.itemSyncId | Match parent product to catalogue. |
nodes[].orderItems[].skuId | Internal SKU reference. |
orderTotal | Order value before rounding. |
orderTaxAmount | Total tax applied. |
pageInfo.hasNext | Pagination control. |
Implementation Checklist
- Store the last requested date range for repeatable polling.
- Paginate until
hasNextisfalse. - Process only relevant
orderStatusvalues. - Map item and offer sync IDs before creating fulfillment records.
- Persist enough external references to avoid duplicate downstream processing.