Refund Subscription Payment

Refunds one billing cycle of a subscription, in full or in part.

It finds the successful charge of the cycle for you and refunds it on the cycle's checkout, so you do not need the
checkout or transaction IDs. Note the plural /subscriptions/ in this path; every other subscription operation uses
/subscription/. Get the payment ID (RP-…) from List Subscription Payments.

Permission: Merchant Approver.

Rules

  • The amount rules are those of Refund Checkout Transaction: at least 0.01, the total refunded can never exceed the
    charge, and some checkouts accept only a refund of the full charge or cannot be refunded through the API.
  • Unlike Refund Checkout Transaction, this operation does not refuse a new refund while an earlier refund of the same
    cycle is still PENDING or PROCESSING. Send one refund at a time: before each refund, call List Subscription Payment
    Refunds and wait until none of them is PENDING or PROCESSING.
  • Send idempotencyKey so you can retry safely: a repeat returns the refund the first request created. Without a key, if the request timed out, call List Subscription Payment Refunds before you retry; never retry blindly.

What happens: the refund starts in PENDING and is processed asynchronously; follow it with the
refund-status-changed webhook event (/reference/refund-status-changed). The refund is typed SUBSCRIPTION and carries
the subscriptionId and subscriptionPaymentId, and the cycle gets hasRefunds: true. Refunding a cycle does not cancel
the subscription.

Errors

  • 400 VALIDATION_ERROR: as in Refund Checkout Transaction.
  • 404 NOT_FOUND: the subscription or the payment does not exist.
  • 409 VALIDATION_ERROR: the payment has no successful charge (it is still PENDING or FAILED), the amount is
    invalid as in Refund Checkout Transaction, or the idempotencyKey was already used with a different amount.
Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
string
required

The subscription ID (R-…).

string
required

The subscription payment ID (RP-…), from List Subscription Payments.

Body Params
number
required

The amount to refund in the currency of the transaction

string
required

The reason for the refund

string

Your own unique id for this refund. A request repeated with the same key on the same checkout returns the refund the first one created instead of refunding again. Reusing a key on that checkout for a different amount or transaction is refused.

Observation: required from 2027-01-18T00:00:00Z. From that instant a refund without this key is refused with a 400, so start sending it now.

Responses

Language
Credentials
Bearer
JWT
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json