Skip to main content
Automatic retries have their schedule (Failed payments). This route is for when you do not want to wait for it: the customer tells you “I topped up my account, try again”, or gave you a new number.

What happens

The subscription’s latest unpaid order is retried on its existing payment intent — no new invoice, no new intent. A payment request is pushed to the provided number, and the call waits for the customer’s answer (~100 s). If the customer had approved a previous request after the initial call’s window, the payment is recognized as is: no second request goes out.

The response

200
On success, subscription.status is still past_due (or unpaid) in the response. It is not a stale read: activation is asynchronous, done by the payment event’s handler a few tens of milliseconds later. The subscriptionActivationPending: true field says so. To act on the activation, listen to subscription.activated — this is the only path that emits it.
On failure: success: false, status: "failed" (or processing), error carries the reason, canRetry: true. The subscription’s status does not change.
A failed on a cycle invoice counts as an attempt in the automatic retry schedule and reschedules the next one; a processing (the customer did not answer) does not count. On the creation invoice (subscription_create), there is no automatic retry: only this route can settle it.

Errors

This route returns its business refusals as 400 with a { "error": "…" } body — a different shape from the other routes: