Two refund modes
Query the live list at
GET /partner/v1/providers/refund-capability.
We refresh this monthly.
Per-order capability
Every/order/create response carries:
refund_required to choose your UX:
programmatic→ show “Refund now” button when the order hitsrefund_required.ticket→ show “Refund requested, takes up to 72 h. Provider: .” Don’t show a button.
Setting partner preferences at order creation
Confirming the refund
When you get theorder.refund_required event, call:
refund_window_hours. Past the window: 409 REFUND_WINDOW_EXPIRED
and the server applies the default you set at order creation.
What happens after
Arefunded webhook event fires with tx_out_hash pointing at the refund
transaction. The order is terminal.
Edge cases
refund_capability=noneon a 6th-tier exotic provider — currently zero such providers, but the enum value reserves the slot for future. If you see it, the order can still be refunded via support ticket onpartners@privataswap.com.- Provider goes down mid-refund — we move the order to
manual_reviewand our ops team executes manually. You’ll getprovider_outage_affecting_partneron the ops events channel.