An order is a single sale: a customer charged for one or more line items (products). Refunds happen at order level.

Tools

create_order

Create and immediately attempt to charge an order.

readOnlydestructiveidempotentopenWorld
falsefalsetruefalse

Required parameters: customer_id, payment_method_id, items (array of { product_id, quantity }). Optional: currency (defaults to usd), description, shipping_address_id/shipping_address, metadata, source, idempotency_key.

The response includes the order in succeeded or failed state, with the underlying transaction details. An order.succeeded or order.failed webhook will follow.

list_orders

List orders with filters (customer, status, date range) and cursor pagination.

readOnlydestructiveidempotentopenWorld
truefalsetruefalse

get_order

Get a single order, including its transactions and any refunds.

readOnlydestructiveidempotentopenWorld
truefalsetruefalse

When the order is a subscription charge (initial or recurring), the response also carries subscription_id, subscription_cycle, attempt_count (failed charge attempts), and next_retry_at (the next scheduled charge time, not an accelerated retry — null once the subscription is no longer active). These let an agent reason about a failed recurring charge — pair them with the order.failed webhook to drive a recovery flow, and call retry_order to re-attempt the charge before the next scheduled run.

refund_order

Refund all or part of a paid order.

readOnlydestructiveidempotentopenWorld
falsetruetruefalse

Required: order_id. Optional: amount (in cents; defaults to the full remaining balance), idempotency_key.

An MCP client should require human approval before calling refund_order in live mode — it permanently reverses captured funds.

retry_order

Re-attempt a failed charge (or a failed refund) on an existing order using the card on file. There is no body beyond the order — retry never switches the payment method; to charge a different card, create a new order.

readOnlydestructiveidempotentopenWorld
falsetruetruefalse

Required: order_id, idempotency_key. Only orders in failed (declined charge) or refund_failed (failed refund) state are eligible; any other state returns an error.

Because subscription cycles are themselves orders, retry_order also re-attempts a failed recurring charge and reconciles the cycle on success, so the daily billing cron will not charge the customer again. Correlate a failed cycle to its subscription via the order’s subscription_id / subscription_cycle. The response is the updated order — inspect status (a re-decline leaves it failed with an incremented attempt_count).

An MCP client should require human approval before calling retry_order in live mode — it moves real money by re-charging the customer’s card. Always pass an idempotency_key so a network retry of the tool call does not double-charge.