Skip to main content

Update Order Status

Use this API when Tally needs to update the status of one or more Mulltiply orders without making a separate API call for every order.

At A Glance

POST/v2/tally/orders/update-status
AreaDetail
Base URLhttps://api.mulltiply.org
Content typeapplication/json
AuthenticationAuthorization: Bearer YOUR_API_KEY
Request bodyObject containing order_status array
Processing behaviorBatch processing with per-order errors

Headers

Content-Type: application/json
Authorization: Bearer YOUR_API_KEY

Request Body

Request body
{
"order_status": [
{
"Order_id": 1001,
"Order_Status": "ORDER_ACCEPTED",
"reason": null
},
{
"Order_id": 1002,
"Order_Status": "ORDER_REJECTED_BY_SELLER",
"reason": "Item unavailable"
}
]
}

Request Fields

FieldTypeRequiredNotes
Order_idintegerYesExisting Mulltiply order ID.
Order_StatusstringYesMust be one of the allowed status values.
reasonstringConditionalRequired when status is ORDER_REJECTED_BY_SELLER.

Allowed Status Values

ValueMeaning
ORDER_ACCEPTEDSeller accepted the order.
ORDER_REJECTED_BY_SELLERSeller rejected the order.
ORDER_COMPLETED_BY_SELLERSeller marked the order as completed.

Processing Rules

  1. order_status is required.
  2. order_status must contain at least one item.
  3. Each order status update is validated independently.
  4. If one order fails, processing continues with the next order.
  5. Clean update objects are created internally; request mutations are avoided.
  6. Notifications and business side effects run for each successful update.
  7. Per-order errors are logged and returned without blocking the whole batch.

Status-Specific Behavior

ORDER_ACCEPTED

  • Validates seller authorization.
  • Checks seller points and eligibility.
  • Creates a database transaction.
  • Updates the order to accepted status.
  • Deducts seller take-rate points.
  • Sends notifications to seller and customer.
  • Triggers WhatsApp notification to retailer.
  • Cancels auto-rejection job if one was scheduled.

ORDER_REJECTED_BY_SELLER

  • Validates seller authorization.
  • Requires a reason.
  • Handles refund logic when the order was paid online.
  • Updates order milestone to rejected.
  • Sends notifications to seller and customer.
  • Triggers WhatsApp notification with rejection reason.
  • Reverses daily deals grabbed quantity.

ORDER_COMPLETED_BY_SELLER

  • Validates seller authorization.
  • Marks the order as completed.
  • Updates order status in the database.
  • Updates payout schedule status when the order was prepaid.

Example Requests

Accept One Order

Accept one order
{
"order_status": [
{
"Order_id": 1001,
"Order_Status": "ORDER_ACCEPTED"
}
]
}

Mixed Status Batch

Mixed status batch
{
"order_status": [
{
"Order_id": 1001,
"Order_Status": "ORDER_ACCEPTED"
},
{
"Order_id": 1002,
"Order_Status": "ORDER_REJECTED_BY_SELLER",
"reason": "Out of stock"
},
{
"Order_id": 1003,
"Order_Status": "ORDER_COMPLETED_BY_SELLER"
}
]
}

Bulk Rejection

Bulk rejection
{
"order_status": [
{
"Order_id": 1004,
"Order_Status": "ORDER_REJECTED_BY_SELLER",
"reason": "Inventory mismatch"
},
{
"Order_id": 1005,
"Order_Status": "ORDER_REJECTED_BY_SELLER",
"reason": "Customer not reachable"
}
]
}

cURL Example

cURL example
curl --location 'https://api.mulltiply.org/v2/tally/orders/update-status' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
"order_status": [
{
"Order_id": 1001,
"Order_Status": "ORDER_ACCEPTED"
}
]
}'

Responses

Success

Success response
{
"error": false,
"status": true,
"statusCode": 200,
"message": "Order statuses updated successfully",
"data": {
"successful": 3,
"failed": 0,
"errors": []
}
}

Partial Success

Partial success response
{
"error": false,
"status": true,
"statusCode": 200,
"message": "Order statuses updated successfully",
"data": {
"successful": 2,
"failed": 1,
"errors": [
{
"orderId": 1002,
"error": "Order not found in system"
}
]
}
}

Validation Error

Validation error
{
"error": true,
"status": false,
"statusCode": 400,
"message": "Order status is required"
}

Invalid Status Value

Invalid status response
{
"error": true,
"status": false,
"statusCode": 400,
"message": "Invalid order status",
"data": {
"successful": 1,
"failed": 1,
"errors": [
{
"orderId": 1006,
"error": "Invalid order status"
}
]
}
}

Error Handling

Request-Level Errors

ScenarioStatus codeMessage
Empty order_status array400Order status is required
Missing order_status field400Order status is required
Invalid JSON400Invalid JSON format
Unauthorized401Unauthorized

Order-Level Errors

ScenarioHandling
Order ID not foundAdded to per-order errors; batch continues.
Invalid status valueAdded to per-order errors; batch continues.
Authorization check failsAdded to per-order errors; batch continues.
Database operation failsAdded to per-order errors; batch continues.

Implementation Checklist

  • Send order_status as an array inside an object.
  • Include at least one order status item.
  • Use only supported status values.
  • Include reason for seller rejection.
  • Expect partial success when some orders fail validation.