On the due date
1
The subscription becomes past_due
On the first failure, in the same transaction as the attempt. You receive
payment.failed and subscription.past_due. The invoice stays open with
lastPaymentError set.2
Retries are scheduled
Three automatic attempts, on the customer’s default payment method, read again each
time:
Each retry is a new request on the customer’s phone.
attemptCount and nextAttemptAt
on the invoice follow the schedule.3
A success settles it
The invoice becomes
paid, the subscription goes back to active and you receive
subscription.activated — the only path that emits this event, along with
retry-payment.4
After the third, nothing
The subscription stays
past_due, indefinitely. No automatic cancellation, no move to
unpaid or uncollectible. It is up to you: retry on demand,
cancel, or wait.Special cases
A prolonged
past_due leaves the customer with their rights: nothing in Yabetoo cuts them
off. If your product must restrict an unpaid customer’s access, do it on subscription.past_due,
and restore it on subscription.activated.Reading the state of an unpaid subscription
GET /v1/subscriptions/{id}:status: "past_due",currentPeriodEndalready advanced.GET /v1/subscriptions/{id}/invoices: the cycle’sopeninvoice, withattemptCount,nextAttemptAt,lastPaymentError.GET /v1/invoices?subscription_id=sub_...&status=open: the same, paginated.