Refundability
Not every charge can be refunded. Check theis_refundable field on a charge before attempting a refund. A charge is refundable when:
- Its status is
SUCCEEDEDorACCEPTED, and - The payment method supports refunds.
Issue a refund
POST /api/v1/payments/refundsAuthentication: API key or dashboard session
Request body
The ID of the charge to refund.
Your reference for this refund. Maximum 128 characters. Used to identify the refund in your system and for idempotency.
Partial refund amount in the charge’s settlement currency. Omit to issue a full refund.
Description of why the refund is being issued. Maximum 500 characters. Displayed in your dashboard.
Who bears the refund processing fee. Accepted values:
ORG, CUSTOMER. Defaults to your organization’s configured fee handling.Destination wallet address for crypto refunds. Required when refunding a crypto charge. Maximum 255 characters.
Optional key to prevent duplicate refunds on retry. Maximum 255 characters. If you submit the same
idempotency_key twice, the second request returns the original refund.Test mode only. Forces a specific refund outcome. Accepted values:
success, failed.Response
Unique identifier for the refund.
The charge this refund is associated with.
Your reference from the request.
Current refund status. Starts as
PENDING. Transitions to SUCCEEDED when the refund is processed, or FAILED if it cannot be completed.The amount requested for refund in the settlement currency.
The amount actually refunded. May differ from
requested_amount if fees were deducted. Null while the refund is still pending.The processing fee applied to this refund.
Who bears the refund fee:
ORG or CUSTOMER.ISO 8601 datetime when the refund completed. Null until the refund reaches a terminal status.
Get a refund
Retrieve a refund by its ID.GET /api/v1/payments/refunds/{refund_id}
Get a refund by charge
Look up the refund associated with a specific charge.GET /api/v1/payments/payins/{charge_id}/refund
List refunds
Retrieve a paginated list of all refunds for your organization.GET /api/v1/payments/refunds
Query parameters
Number of refunds to return. Range: 1–100.
Number of refunds to skip for pagination.
Filter by refund status:
PENDING, SUCCEEDED, or FAILED.Response
Error cases
| Scenario | HTTP status | Error |
|---|---|---|
| Charge ID not found | 404 | Charge not found |
| Charge is not refundable | 400 | Charge status is not eligible for refund |
Duplicate reference or idempotency_key | Returns the original refund | — |
| Invalid partial amount | 400 | Amount must be greater than 0 |