Skip to main content

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:
Use this before the order enters refund_required to choose your UX:
  • programmatic → show “Refund now” button when the order hits refund_required.
  • ticket → show “Refund requested, takes up to 72 h. Provider: .” Don’t show a button.

Setting partner preferences at order creation

Auto-conversion to a stable without explicit convert_to_stable_target is a regulatory issue (no user consent on the destination asset). We refuse it on the server side.

Confirming the refund

When you get the order.refund_required event, call:
Or:
Must be within refund_window_hours. Past the window: 409 REFUND_WINDOW_EXPIRED and the server applies the default you set at order creation.

What happens after

A refunded webhook event fires with tx_out_hash pointing at the refund transaction. The order is terminal.

Edge cases

  • refund_capability=none on 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 on partners@privataswap.com.
  • Provider goes down mid-refund — we move the order to manual_review and our ops team executes manually. You’ll get provider_outage_affecting_partner on the ops events channel.