Refund a card payin
Returns money to the cardholder and reverses the credit on your balance. Only card-acquired payins in status credited can be refunded (refund_not_supported on the other rails) — and only once their balance is actually available: a credited payin whose settlement is still pending (settlement_pending: true, balance lands at settle_at) is declined with 422 settlement_pending. The gross amount is debited: the fee and the FX spread of the original payin are NOT refundable. idempotency_key is mandatory; a replay returns the same refund with idempotency_hit and never sends a second refund to the processor. Requires OTP when the caller is a session (API keys are exempt).
Authorizations
Session JWT (from register/login) or API key (pk_...).
X-API-Key: <token> is accepted as an alternative header.
Headers
One-time-use OTP token (see the OTP guide). Only for session callers.
Path Parameters
Body
Response
Replay of the same idempotency key — the SAME refund, with idempotency_hit.
chargeback is imposed by the issuer — it is booked automatically and may leave the balance negative.
refund, void, chargeback pending, completed, failed Currency of the original payin.
Amount debited from the USDT balance. The fee and the FX spread of the original payin are NOT refunded.
account, admin, issuer Present when status is failed — the debit was reversed in full.
Present while the refund is pending — the outcome is resolved by reconciliation and is never re-dispatched.
Present in the payin_refunded webhook — the USDT balance after the movement (can be negative on a chargeback).