Request a refund or open a dispute
request_refundAsk for a refund, or open a dispute, on an order. Use it when an eSIM went unused or plans changed (voluntary refund), or when it was not delivered, does not work or was bought twice (dispute). Example: {order_id: "ord_...", reason: "not_working", details: "QR installs, no data after restart, iPhone 15 on iOS 17"}. Returns the decision {allowed, reason_code, human_readable} and, when credited, the refund to the wallet. Reasons "unused" and "changed_plans" are voluntary refunds under the refund policy. Reasons "not_delivered", "not_working" and "duplicate_purchase" open a dispute under the dispute policy, which can refund fully, partially, reject, or escalate to a human. A dispute about a delivered eSIM is credited automatically only when the supplier confirms it cancelled the eSIM; otherwise, and for partial refunds, it is escalated (outcome "escalate", reason DISPUTE_SUPPLIER_CANCEL_UNCONFIRMED). Orders the supplier has not confirmed yet are refused with ORDER_AWAITING_SUPPLIER (poll order_status). An order takes one escalated dispute at a time (DISPUTE_ALREADY_OPEN until a human decides it) and a limited number of disputes in all (DISPUTE_LIMIT_REACHED). Any agent of the principal that owns the order may ask. ORDER_CHANGED is retryable. After a full refund, order_status no longer returns the activation code. Denials return error.code = the policy reason_code.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"order_id": "<order_id>",
"reason": "<reason>"
},
"name": "request_refund"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | unused or changed_plans (voluntary refund); not_delivered, not_working or duplicate_purchase (dispute) | |
| details | No | Evidence, up to 1000 characters: what you tried, error messages, the device. It helps a dispute succeed | |
| agent_id | No | Your agent id (or X-Agent-Id header) | |
| order_id | Yes | Order id from purchase (order.order_id) or from an earlier order_status call | |
| agent_key | No | Secret returned by register_agent (or X-Agent-Key header) | |
| principal_id | No | The principal you act for (or X-Principal-Id header) |