errand_create
Redeems thequote_id returned by errand_quote into a pending-payment order, returning the order ID, the cashier payment link, and the full order info you can show the user to confirm.
Order flow:
errand_quote → quote_id + each courier’s company_code / fee → errand_create → order_id + cashier_url → the user opens cashier_url to pay → once paid, the platform automatically dispatches a courier.Payment gate: this step does not dispatch a courier. A courier is only dispatched automatically after the user completes payment at the cashier. Calling this tool only turns the quote into a pending-payment order.
quote_id is single-use. It’s invalidated the moment it’s redeemed — reusing the same quote_id returns QUOTE_INVALID_OR_EXPIRED, and you’ll need to call errand_quote again.company_code must come from this quote’s results. It must be one of the quotes[].company_code values from this same errand_quote call, and it determines the amount actually charged (= that courier’s fee). Passing a company_code not in this quote returns COMPANY_NOT_IN_QUOTE.An unpaid order auto-closes after 2 minutes (
status becomes cancelled, pay_status becomes expired). If the user still completes payment after it closes, the full amount is automatically refunded.Parameters
Returns
The response also carries this order’s full order info, using exactly the same base fields as the order detail from errand_get_order and the entries returned by
errand_list_orders (status_desc / timeline / rider appear only when you query an in-flight order — a pending-payment order carries none of them) — available immediately, no extra lookup needed. The full order info includes:
For each field’s exact type and when it can be
null, see the order detail in errand_get_order.
Example response:
Error codes
See Error Handling for the full list.

