Payments
Refunds
Refund all or part of a captured payment, refund in the original currency, and track refunds through to the shopper.
A refund returns money to the shopper's original payment method. You can refund the whole payment or part of it, as many times as you need, until the full captured amount is returned.
This is preview documentation for a prototype. Endpoints, fields and keys are illustrative.
Create a refund
Refund by order or by payment. Leave out amount to refund everything that's left.
curl https://api.international-orders.com/v1/refunds \
-u sk_test_51Hx...: \
-H "Idempotency-Key: refund-rma-2207" \
-H "Content-Type: application/json" \
-d '{
"order": "ord_7Hc2kQ9xL4mP",
"amount": 4500,
"reason": "requested_by_customer",
"metadata": { "rma": "2207" }
}'
{
"id": "rf_9Lm4pX7sB2tC",
"object": "refund",
"order": "ord_7Hc2kQ9xL4mP",
"payment": "pay_3Jd8nT2wK6rV",
"amount": 4500,
"currency": "EUR",
"status": "pending",
"reason": "requested_by_customer",
"created": "2026-10-03T14:20:05Z"
}
Refunds are always in the currency the shopper paid in. The shopper gets back exactly what you refund, whatever the exchange rate has done since.
Refund status
| Status | Meaning |
|---|---|
pending | Accepted and sent to the payment network |
succeeded | The network has confirmed the refund |
failed | The refund couldn't reach the shopper, for example a closed account |
cancelled | You cancelled it before it was sent |
You receive refund.created straight away and refund.succeeded or refund.failed when the network responds. See Webhooks.
How long refunds take
| Method | Time to reach the shopper |
|---|---|
| Cards | 5 to 10 business days |
| Digital wallets | 1 to 3 business days |
| Bank transfers | 1 to 5 business days |
| Vouchers and cash-based methods | Needs the shopper's bank details |
For methods that can't be refunded to the source, such as cash vouchers, the refund moves to requires_action and we email the shopper a secure link to enter bank details.
Duties, taxes and FX
When an order included landed cost, a full refund also returns the duties and taxes the shopper paid. For a partial refund, pass include_duties: true to return the duties for the refunded items too.
You are refunded the FX margin on refunds made within 24 hours of capture. After that, the refund is converted at the current rate, so the amount debited from your balance in your settlement currency may differ slightly from what you received.
Refunds and your balance
Refunds are taken from your available balance in the settlement currency. If your balance can't cover a refund, it waits in pending until incoming payments top it up, or you can add funds from the dashboard.
Failed refunds
A failed refund returns the money to your balance and includes a failure_reason. Contact the shopper for another way to return their money, then send a payout if needed.