Request
Send aPOST request to /refunds. Only payment_id is required — omit amount for a full refund.
Response
A successful call returns a200 with a refund object. The fields that matter right now:
What to do next
A refund does not settle synchronously. PollGET /refunds/{refund_id} until the status settles.
Status reference
Common errors
Payment not in succeeded status
Payment not in succeeded status
Refunding a payment that is not in
succeeded status.Amount exceeds captured total
Amount exceeds captured total
Refunding more than the captured amount.
Mistaking pending for a failure
Mistaking pending for a failure
Assuming
pending means the refund failed — it means it is still in progress.Next steps
Payouts
Send money to a recipient instead of reversing a payment.
Quickstart
Create and confirm your first payment.
Mandates and recurring
Set up recurring charges against a stored mandate.
Wallet payments
M-Pesa, Airtel, and MTN MoMo payments.