Skip to main content

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
AreaDetail
Base URLhttps://api.mulltiply.org
Content typeapplication/json
AuthenticationAuthorization: Bearer <token>
API styleGraphQL
Main operationorders(input: OrderListInput)

Headers

Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

Request Variables

VariableTypeDescription
pagenumberPage number, starting at 1.
limitnumberNumber of orders per page.
fromDateYYYY-MM-DDInclude orders from this date.
toDateYYYY-MM-DDInclude 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 fieldDescription
orderIdMulltiply internal order identifier.
orderNumberHuman-readable order number, such as ORD-1001.
mulltiplyOrderNumberShort encoded order reference.
orderStatusCurrent order status.
currencyCodeOrder currency, such as INR.
orderTotalOrder value before rounding.
orderTaxAmountTotal tax applied to the order.
totalItemsInOrderCount of line items in the order.

Sync ID Mapping

EntityPathDescription
Product variantnodes[].orderItems[].offer.offerSyncIdThird-party variant ID or internal SKU code.
Item / productnodes[].orderItems[].item.itemSyncIdExternal item or product identifier.
Shop / outletnodes[].shop.syncIdOutlet identifier assigned during retailer/shop sync.
Retailernodes[].retailer.syncIdBuyer identifier assigned during retailer sync.
Shop retailernodes[].shop.retailerSyncIdRetailer associated with the shop.

Always use the retailer object as the primary buyer identity carrier.

Processing Rules

  1. Request the first page with page: 1.
  2. Continue requesting pages until pageInfo.hasNext is false.
  3. Check orderStatus before processing an order.
  4. Use offer.offerSyncId to match ordered variants to the external catalogue.
  5. Use item.itemSyncId to match the parent product.
  6. Use shop.syncId to identify the ordering outlet.
  7. Use retailer.syncId to identify the buyer.
  8. If retailer.syncId is null, fall back to retailer.phone.

Status Values

ValueDescription
ORDER_ACCEPTEDOrder confirmed and ready for processing.
CANCELLEDOrder has been cancelled.
DELIVEREDOrder 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

FieldUsed for
orderIdInternal order reference.
orderStatusDecide whether the order needs processing.
nodes[].shop.syncIdMatch outlet to external system.
nodes[].retailer.syncIdMatch buyer to external system.
nodes[].orderItems[].offer.offerSyncIdMatch product variant to catalogue.
nodes[].orderItems[].item.itemSyncIdMatch parent product to catalogue.
nodes[].orderItems[].skuIdInternal SKU reference.
orderTotalOrder value before rounding.
orderTaxAmountTotal tax applied.
pageInfo.hasNextPagination control.

Implementation Checklist

  • Store the last requested date range for repeatable polling.
  • Paginate until hasNext is false.
  • Process only relevant orderStatus values.
  • Map item and offer sync IDs before creating fulfillment records.
  • Persist enough external references to avoid duplicate downstream processing.