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| Area | Detail |
|---|---|
| Base URL | https://api.mulltiply.org |
| Content type | application/json |
| Authentication | Authorization: Bearer YOUR_API_KEY |
| Request body | Object containing order_status array |
| Processing behavior | Batch processing with per-order errors |
Headers
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
Request Body
- JSON Body
- cURL
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"
}
]
}
Order status update request
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":1234,"Order_Status":"ORDER_ACCEPTED","reason":null}]}'
Request Fields
| Field | Type | Required | Notes |
|---|---|---|---|
Order_id | integer | Yes | Existing Mulltiply order ID. |
Order_Status | string | Yes | Must be one of the allowed status values. |
reason | string | Conditional | Required when status is ORDER_REJECTED_BY_SELLER. |
Allowed Status Values
| Value | Meaning |
|---|---|
ORDER_ACCEPTED | Seller accepted the order. |
ORDER_REJECTED_BY_SELLER | Seller rejected the order. |
ORDER_COMPLETED_BY_SELLER | Seller marked the order as completed. |
Processing Rules
order_statusis required.order_statusmust contain at least one item.- Each order status update is validated independently.
- If one order fails, processing continues with the next order.
- Clean update objects are created internally; request mutations are avoided.
- Notifications and business side effects run for each successful update.
- 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
| Scenario | Status code | Message |
|---|---|---|
Empty order_status array | 400 | Order status is required |
Missing order_status field | 400 | Order status is required |
| Invalid JSON | 400 | Invalid JSON format |
| Unauthorized | 401 | Unauthorized |
Order-Level Errors
| Scenario | Handling |
|---|---|
| Order ID not found | Added to per-order errors; batch continues. |
| Invalid status value | Added to per-order errors; batch continues. |
| Authorization check fails | Added to per-order errors; batch continues. |
| Database operation fails | Added to per-order errors; batch continues. |
Implementation Checklist
- Send
order_statusas an array inside an object. - Include at least one order status item.
- Use only supported status values.
- Include
reasonfor seller rejection. - Expect partial success when some orders fail validation.