When a subscription renews, OurPay advances it to the next billing cycle first, then attempts to charge the customer’s default payment method for the new order. If that charge fails, the subscription moves to past_due and enters OurPay’s automated payment recovery (dunning) flow instead of being canceled straight away. This page explains exactly what happens during that window, how to give yourself breathing room before benefits are revoked, and what levers you have to help the customer recover.

The retry schedule

As soon as the first renewal charge fails:
  1. The subscription’s status moves from active to past_due, and past_due_at is stamped with the time of the failure.
  2. OurPay emails the customer and links them to the Customer Portal so they can inspect the affected subscription and order.
  3. The renewal order stays open with next_payment_attempt_at set to the next retry time.
OurPay then retries the charge on a fixed schedule, starting from the time of the first failure: If a retry succeeds, the failed order is paid. The subscription returns to active once all of its pending orders have been paid (past-due subscriptions keep cycling, so there can be more than one). If all four retries fail — or the processor reports that the saved payment method cannot be retried — OurPay stops retrying and revokes the subscription. Its status moves to canceled and benefits are revoked (subject to the grace period below).

Benefit revocation grace period

By default, benefits follow the subscription’s status strictly: the moment the subscription leaves active, benefits are revoked. For many businesses that’s harsh — a single failed renewal shouldn’t instantly lock a paying customer out while they resolve the payment problem. OurPay has an organization-level grace period that holds off benefit revocation while a subscription is in past_due. You can set it under Settings → Subscriptions → Grace period for benefit revocation. The available values are:
  • Immediately (default) — revoke benefits as soon as the subscription leaves active.
  • After 2 days
  • After 7 days
  • After 14 days
  • After 21 days — benefits stay granted for the full length of the retry schedule.
The grace period is measured from past_due_at. While it’s in effect the subscription is still past_due (so you can differentiate it in your own app), but the customer retains access to their benefits. Once the grace period expires — or the subscription is revoked for good — benefits are revoked on the next check.
The grace period only delays benefit revocation. It does not change the retry schedule, and it does not keep the subscription active. If you want to treat past-due subscribers specially (for example, with a banner or a reduced feature set), listen for the subscription.updated webhook and branch on status === "past_due".

Helping customers recover

The current PayPal-only portal cannot attach a replacement PayPal payment method through its legacy card widget. Automatic retries continue against the vaulted PayPal method already on the subscription. Do not tell a customer that changing a method in the portal will recover the renewal. The backend can schedule an immediate retry after a supported payment-method update, but only use that path after a new PayPal approval flow has completed and the replacement method is visible in OurPay. Things you can do from your side:
  • Link to the Customer Portal so the customer can inspect the failed order and subscription state.
  • Issue a refund on the original failed order if you want to credit the customer for the lost time while keeping the subscription.
  • Reschedule the renewal to give the customer extra time before the next attempt.
  • Revoke the subscription manually if you’ve decided not to pursue recovery.