Schedule retries for a chosen time
Book a retry on each of a set of past-due subscriptions for a time the operator chose, for the Subscription Billing day drawer.
The time is the operator’s and only the operator’s. Nothing in this platform scores when a charge is most likely to clear, so this endpoint neither picks the hour nor moves it: it writes the instant the caller sent. What it buys an operator is control over when a day’s failed renewals are charged again — out of a payday window, off an hour that already declined — not a prediction.
The retry processor drains bookings on its ordinary five-minute tick, so
nothing is charged when this returns. retry_at must be at least 5
minutes ahead, and within 23 hours: past that the processor stops
recognising the booking’s provenance and would fall back to its
automatic rules, which is a retry the operator did not ask for.
Booking does not reset the subscription’s decline count. An immediate retry does, because it is one hands-on attempt on one renewal; a booking is a batch gesture that can be repeated every morning, and resetting there would hold a subscription in dunning forever instead of letting it reach exhaustion.
Every token is answered. A token is scheduled when a retry is now booked for it, skipped when the subscription is known but cannot take one — with the reason — or failed when no subscription of that token belongs to the caller. A skip is not an error: a renewal that is not past due, will not be due by the chosen time, or sits on a payment method the processor told us to stop charging is reported as passed over.
Booking the same subscriptions for the same instant twice books one retry. Booking them for a different instant moves the existing booking, which is how a mistyped hour is corrected.
Authorizations
Bearer token authentication
Body
The subscription tokens to book, and the time to book them for.
Subscription tokens. The maximum counts the array as submitted, so
maxItems and the server's own refusal agree; duplicates are
collapsed after that bound is applied and each subscription is
answered once.
1 - 500 elementsWhen to retry, as an RFC3339 timestamp carrying its offset. The offset is the caller's to state rather than the server's to guess: a bare local hour from a drawer open in one timezone is a different instant on a server running in another.
The time is the operator's choice and nothing else. No model here scores when a charge is likeliest to clear, so the platform neither picks this hour nor adjusts it.
At least 5 minutes ahead — anything nearer is an immediate retry, which has its own endpoint — and no more than 23 hours ahead, the span the retry processor still recognises an operator's booking over.
"2026-09-15T18:00:00Z"
Response
Every token answered as scheduled, skipped, or failed
One entry per token sent, across three lists.
The instant the batch was booked for, in UTC. Echoed so a client states the booked hour from the server's answer rather than from the value it happened to send.
Subscriptions a retry is now booked for.
Subscriptions passed over, each carrying why.
Tokens that resolved to no subscription of the caller's, and subscriptions whose booking write was refused.