Change several orders
const url = 'https://example.com/orders/bulk';const options = { method: 'POST', headers: { cookie: '__Host-bottle.session_token=<__Host-bottle.session_token>', 'Content-Type': 'application/json' }, body: '{"orderIds":["019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f"],"change":{"action":"reschedule","wantedOn":"2026-04-15"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/orders/bulk \ --header 'Content-Type: application/json' \ --cookie __Host-bottle.session_token=<__Host-bottle.session_token> \ --data '{ "orderIds": [ "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f" ], "change": { "action": "reschedule", "wantedOn": "2026-04-15" } }'One change made to every order named, up to 500: moved to another day, put on or taken off a round, marked paid, sent a payment link, cancelled, marked delivered, or confirmed from draft. Each is done by the same rules as doing it to that order alone, with the same emails, invoices and stock. One the change does not fit is left as it was and listed as skipped, with why; the rest still go. Rounds need rounds:write and a plan with rounds. Confirming drafts is for an owner or admin signed in.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
object
Move each to another day. Only placed and draft orders move; one already on a round comes off it first.
object
Put each on a round, move it to another, or take it off with null. Collections and orders that are not open are skipped. Needs rounds:write.
UUID v7
Example
019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8fobject
Mark each paid: cash for money in hand, transfer for a bank transfer. Orders already paid, cancelled, on account or billed by a shop are skipped.
object
Email each customer a link to pay. Orders with no email address, already paid, cancelled or billed by a shop are skipped.
object
Cancel each. Stock a shop sale took is put back and any unpaid invoice is voided. Delivered orders are skipped.
object
Mark each delivered or collected, with the empties each order expected back. Only placed orders are marked. deliveryMethod applies to every delivery, and delivery_partner takes each off any round it is waiting on, skipping any it may not take off. Left out, an order a delivery partner has is recorded as delivery_partner, and own_driver takes it off the partner; a collection is marked collected without one.
Own_driver: the business’s own driver delivered it. delivery_partner: another company delivered it for the business.
object
UUID v7
Example
019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8fThe day it is delivered, today or later.
Give each to a delivery partner for a day, taking it off any round still being planned or not yet out. Needs rounds:write. Only placed deliveries; collections and orders on a round that is out or finished are left alone.
object
Take each off its delivery partner, so it is waiting for a round again. Needs rounds:write. Orders already delivered are left alone.
object
Confirm each reviewed draft so it is placed. Owners and admins only, signed in.
Responses
Section titled “Responses”What was changed and what was skipped
object
object
UUID v7
object
UUID v7
Example
{ "done": [ { "orderId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f" } ], "skipped": [ { "orderId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "reason": "not_found" } ]}Not signed in
object
Example
{ "error": "not_found", "message": "Customer not found"}Not a member, or without the permission this needs
object
Example
{ "error": "not_found", "message": "Customer not found"}The round is not one of this business’s
object
Example
{ "error": "not_found", "message": "Customer not found"}Validation failed, or a line names something not sold
object
object
Example
{ "error": "validation", "issues": [ { "path": "email", "message": "Invalid email" } ]}