Key advantages
Yuno’s Smart Retries offer several benefits that enhance payment processes and revenue recovery:- Data-driven decision-making: Uses a proven retry schedule, or machine-learning-based retry timing via the
SMARTstrategy. - Enhanced revenue retrieval: Increases the chances of successfully collecting payments.
- Decreased subscriber turnover: Minimizes disruptions and involuntary subscriber departures.
- Flexible logic: Allows customization of retry schedules to maximize success opportunities.
- Comprehensive approach: Works in conjunction with other revenue recovery strategies.
Retry schedule
By default, Yuno applies the fixed retry schedule below. Each delay is measured from the previous attempt, not cumulatively from the first attempt. You can also switch to machine-learning-based retry timing, which adapts the moment of each retry per transaction, by settingstrategy to SMART — see Machine-learning retry timing.
The last retry is attempted roughly 9.2 days after the initial failed charge.
Customization
Every business model is unique, so we allow merchants to define specific rules to enhance the flexibility of our retry schedule. You can set theretries structure when creating the subscription, and change it later on an existing subscription with Update Subscription — every field except cancel_on_exhausted_retries, which is create-only:
Updating retries on an existing subscriptionUpdate Subscription accepts the same
retries object (a sent schedule replaces the stored one as a whole). The change applies the next time retries are scheduled: a billing cycle already running its retries finishes on the configuration it started with, and the new configuration takes effect from the next cycle.The maximum number of retries equals your environment’s configured retry schedule length: 6 in production. Sandbox is currently limited to 5 and is being aligned to match production.
strategy: DEFAULT applies the fixed schedule above. Use SMART for machine-learning-based retry timing, or CUSTOM_SCHEDULE together with the schedule array to define your own delays.Machine-learning retry timing
Setstrategy to SMART to have Yuno’s machine-learning model choose when each retry is attempted, instead of using the fixed schedule. The model weighs signals such as the decline reason, the country, the card issuer and the payment provider to pick the moment most likely to succeed.
SMART changes retry timing only. It does not change how many retries you get: amount still controls that, and the same per-environment maximum applies. Any schedule array sent alongside strategy: SMART is ignored.
Machine-learning timing is applied from the second retry onward. The first retry always uses the standard delay from the fixed schedule above.
If a timing decision is not available in time, the retry falls back to the fixed schedule above. Retries are never skipped or dropped because of this — only their timing changes.
SMART is available to all accounts.Subscriptions awaiting recovery
Where thePAST_DUE status is enabled for the account, a failed recurring charge moves the subscription from ACTIVE — or from TRIALING — to PAST_DUE and emits a subscription.past_due webhook. The subscription keeps billing and can still be canceled while it is there; the next successful charge returns it to the status it came from and emits the matching subscription.active or subscription.trialing event.
Where the status is not enabled, a failed charge leaves the subscription in ACTIVE while the retries run, and only the payment.purchase webhook reports the decline. Contact your Yuno representative to have PAST_DUE enabled.
Canceling a subscription when retries run out
By default, when every retry for a billing cycle has been attempted and none succeeded, the subscription stays in its current status and billing rolls forward to the next cycle. A subscription backed by a permanently dead card therefore keeps generating failed charges indefinitely. Setcancel_on_exhausted_retries to true at creation to change that:
- Sets the subscription status to
CANCELED. - Sets
cancellation_sourcetoRETRIES_EXHAUSTED. - Stops all future scheduled billing for the subscription.
- Sends one
SUBSCRIPTION.CANCELwebhook.
stop_on_hard_decline ending the cycle early after a hard decline. In both cases cancellation_source is RETRIES_EXHAUSTED.
cancel_on_exhausted_retries defaults to false. If you omit it, subscriptions behave exactly as they do today. No existing subscription changes behavior.cancel_on_exhausted_retries can only be set at creation. Update Subscription rejects a value different from the stored one with 400 (The field 'retries.cancel_on_exhausted_retries' can only be set when the subscription is created); the rest of the retries object stays updatable.This flag applies to renewal cycles. Subscriptions created with
initial_payment_validation: true already cancel themselves when their first payment fails, and that path reports cancellation_source as SYSTEM rather than RETRIES_EXHAUSTED.