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 stillPENDINGorPROCESSING. Send one refund at a time: before each refund, call List Subscription Payment
Refunds and wait until none of them isPENDINGorPROCESSING. - Send
idempotencyKeyso 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 stillPENDINGorFAILED), the amount is
invalid as in Refund Checkout Transaction, or theidempotencyKeywas already used with a different amount.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
