Skip to content
Draft: the API is under development and may change before the first release

Refunds

POST /refunds refunds a succeeded payment. It requires an Idempotency-Key.

{ "payment_id": "pay_0192f3a1", "amount": 25000, "reason": "Customer request" }
  • amount is in minor units. Omit it for a full refund.
  • Cards are refunded through the provider.
  • Other families are refunded as a payout to the payer’s account, so destination is required (same object as in Payouts). The account must belong to the payer of the original payment.
  • Our fee is not returned by default.
  • The amount is not more than the paid amount minus what was already refunded (refunded_amount on the payment).
  • available balance covers the refund, otherwise 422 insufficient_balance.
  • The merchant has no debt.

created, processing, succeeded, failed, canceled, returned.

  • For cards, created reserves the amount, succeeded sends the money to the payer, and failed or canceled release the reserve.
  • For other families the refund status follows the payout (payout_id is set). If the payout is returned, the refund is returned too and the money comes back to your balance.

Events: refund.created, refund.processing, refund.succeeded, refund.failed, refund.returned. GET /refunds can be filtered by payment_id.