AltorLabFree Scan →
HomeError CodesRECHARGE_SUBSCRIPTION_PAUSED_BILLING_ATTEMPTED
rechargeshopify

Recharge Billing Attempted on Paused Subscription

Root cause

Recharge's billing scheduler attempted to create a charge for a subscription that has PAUSED status — typically caused by a race condition between the pause and billing cycle events, an incorrect resume date calculation, or a manual admin action that reactivated billing without updating the subscription status.

Symptoms

How to fix it

1

Verify the subscription status in Recharge and confirm the pause

In Recharge Admin, open the subscription and confirm its current status is PAUSED. Check the subscription's charge history — locate the attempted charge and note its created_at timestamp. Compare this against the pause_until date: if the charge was attempted before the pause_until date expired, this is a billing logic error. If after, the subscription legitimately resumed and the charge is valid.

2

Refund any charge that was collected during an active pause

If the charge succeeded during an active pause period, issue a full refund immediately via Stripe Dashboard or Recharge Admin. Contact the customer proactively: 'We incorrectly billed you during your subscription pause. We have issued a full refund and corrected the error.' Do not wait for the customer to dispute — proactive refunds prevent chargebacks and preserve trust.

3

Audit your resume logic for the correct status transition

Review your subscription resume code. When a customer pauses a subscription, Recharge sets pause_until to a future date — the billing scheduler should respect this. Confirm that your integration does not call the subscription charge endpoint directly (bypassing Recharge's status check) and that the resume webhook correctly transitions status from PAUSED to ACTIVE before billing resumes. Add a status check gate: only allow charge creation for ACTIVE subscriptions.

Frequently asked questions

Can a race condition between pause and billing cause double billing?

Yes. If a billing cycle starts (Recharge begins creating the charge) at the same moment a pause is submitted via API, the charge may complete before the pause takes effect. Prevent this by implementing an idempotent pause lock: when a customer requests a pause, immediately update the subscription status to PAUSED via the API before acknowledging the pause — do not rely on asynchronous state propagation.

How does the customer's pause_until date interact with Recharge's billing scheduler?

Recharge's billing scheduler checks subscription status before creating each charge. A PAUSED subscription with a pause_until date in the future will not be billed. Once pause_until passes, Recharge automatically transitions the subscription to ACTIVE and resumes billing on the next scheduled date. If the resume results in a charge the customer did not expect, review how the resume date and next billing date are calculated.

Detect this error automatically

Free cross-stack scan finds all billing errors in 60 seconds.

Run Free Scan →