Orders

Methods for reading and changing the orders of the current shop: a filtered list, a single order, updates, status changes and cancellation. Every method is synchronous: the result comes back straight away.

Order list

GET /api/merchant-service/orders/list

Returns the shop's orders page by page. Every filter is optional. The default sorting is by creation date, newest first.

BASH
curl "https://admin.mobiusapp.io/api/merchant-service/orders/list?status_code=in_progress&payed=true&limit=50" \ -H "Authorization: Bearer <token>"

Query parameters

Parameter Type Description
limit integer Page size, 1 to 100 (25 by default).
page integer Page number (1 by default).
id integer Exact match on the order id.
customer string Substring search over the customer's contact details.
status_code string Exact match on the status code.
payment_id integer Filter by payment method.
delivery_id integer Filter by delivery method.
person_type string individual or legal.
payed boolean Paid or unpaid.
canceled boolean Cancelled or not.
created_at_from string Date from, in d.m.Y form (for example 01.06.2026).
created_at_to string Date to, in the same form.
sort_by string id, created_at or price.
sort_dir string asc or desc.

The response

A list wrapper with data, links and meta (see Pagination). Every data element is a brief order card:

JSON
{ "data": [ { "id": 1024, "created_at": "2026-06-20T12:30:00Z", "price": 3980, "delivery_price": 300, "bonus_spent": 0, "person_type": "individual", "status_code": "in_progress", "status_label": "In progress", "status_updated_at": "2026-06-20T13:00:00Z", "payed": true, "payed_updated_at": "2026-06-20T12:35:00Z", "canceled": false, "canceled_updated_at": null, "customer": { "name": "John", "phone": "+70000000000", "email": "john@example.com" }, "payment": { "id": 3, "title": "Online payment" }, "delivery": { "id": 5, "title": "Courier", "pickup_point": null, "location": { "id": 77, "name": "London" } } } ], "links": { "first": "...", "last": "...", "prev": null, "next": "..." }, "meta": { "current_page": 1, "per_page": 25, "total": 118, "last_page": 5 } }

Single order

GET /api/merchant-service/orders/item/{id}

Returns the full information about an order: the customer, the order fields, the payment, the delivery and the basket contents.

BASH
curl https://admin.mobiusapp.io/api/merchant-service/orders/item/1024 \ -H "Authorization: Bearer <token>"

Key data fields:

Field Description
id, created_at The identifier and date of the order.
person_type individual or legal.
customer_comment The customer's comment.
status An object { code, label, updated_at }.
payed, payed_updated_at The paid flag and when it last changed.
canceled, canceled_updated_at The cancelled flag and when it last changed.
price The order total.
items_price The sum of the items, without delivery.
delivery_price The delivery price.
bonus_spent Bonuses redeemed.
user The customer: { id, name, phonenumber, email }, or null.
customer_fields The filled order fields: a list of { code, title, type, value }.
payment Payment: { id, title, handler, payload }.
delivery Delivery: { id, title, type, price, pickup_point, location }.
basket The basket contents: a list of lines.

delivery.type is courier or pickup. For pickup, delivery.pickup_point is filled ({ id, title, address, phonenumber, worktime }); for a courier, delivery.location ({ id, name }).

The full schema is in the OpenAPI documentation.

If the order is not found in the current shop context, 404 is returned.

Updating an order

POST /api/merchant-service/orders/update/{id}

Every field is optional: send only what needs changing. Fields not present in the body stay as they were. At least one field must be sent. The response carries the full order card, as in Single order.

BASH
curl -X POST https://admin.mobiusapp.io/api/merchant-service/orders/update/1024 \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "payed": true, "delivery_price": 300, "basket": [ { "product_external_id": "SKU-100", "quantity": 2, "price": 1990, "currency": "RUB" } ] }'

Request fields

Field Type Description
person_type string individual or legal.
customer_comment string | null The customer's comment.
customer_payload object A full replacement of the order field data.
payment_id integer | null The payment method.
delivery_id integer | null The delivery method.
delivery_price number | null The delivery price (not less than 0).
pickup_point_id integer | null The pickup point by internal id.
pickup_point_external_id string | null The pickup point by external id.
location_id integer | null The delivery location.
payed boolean The paid flag.
basket array A full replacement of the basket.

Replacing the basket

If basket is sent, the basket is rewritten in full and the order total is recalculated automatically: price = sum(quantity × price) + delivery_price. Sending an empty array [] clears the basket.

For a product, give at least one of product_id and product_external_id: the lookup goes by internal id first and then by external id within the current shop. A pickup point works the same way: pickup_point_id and pickup_point_external_id.

Timestamps

If payed is sent and differs from the current value, payed_updated_at is updated to the current moment.

Errors

422 for a validation error (format) or a business error (a product or pickup point was not found by the given id). 404 if the order does not exist.

Changing the status

POST /api/merchant-service/orders/status/{id}

Changes the order status. The status is given in the status field as a status code. The lookup goes by internal status code first and then by external status code within the current shop.

BASH
curl -X POST https://admin.mobiusapp.io/api/merchant-service/orders/status/1024 \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "status": "in_progress" }'

The response:

JSON
{ "success": true, "data": { "id": 1024, "status_code": "in_progress", "status_label": "In progress", "status_updated_at": "2026-06-21T10:20:00Z" } }

If the given status matches the current one, the record is not updated and status_updated_at stays as it was. If no status with that code is found, a business error (422) is returned. If the order does not exist, 404.

Cancelling an order

POST /api/merchant-service/orders/cancel/{id}

Marks the order as cancelled (canceled = true) and updates the cancellation timestamp. The method is idempotent: calling it again for an already cancelled order changes nothing. The order status is not affected: use the status method for that.

BASH
curl -X POST https://admin.mobiusapp.io/api/merchant-service/orders/cancel/1024 \ -H "Authorization: Bearer <token>"
JSON
{ "success": true, "data": { "id": 1024, "canceled": true, "canceled_updated_at": "2026-06-21T10:25:00Z" } }

If the order does not exist, 404.

Related pages

Updated 04.09.2026 18:04
Was this page helpful?