Guide

Stripe pause_collection vs Pause Subscription: Which API Fits Your Save Offer?

Stripe documents two different ways to stop billing temporarily: pause payment collection on an otherwise active subscription, and pausing the subscription itself so status becomes paused. They are not interchangeable. Picking the wrong one breaks your access rules, webhook handlers, and the copy on your cancel-flow save screen.

This guide is for engineers wiring voluntary save offers in a custom cancel flow. Operator-facing pause vs cancel tradeoffs live in pause subscription vs cancel. End-to-end flow architecture: build a Stripe cancellation flow.

Last updated October 23, 2026

Side-by-side comparison

Verify current eligibility and field behavior in pause payment collection and pause subscriptions before you ship. Stripe changes billing-mode rules over time.

pause_collectionPause subscription API
Primary docPause payment collectionPause subscriptions
Typical statusSubscription status often unchangedStatus becomes paused
Invoice behaviorConfigurable (draft / uncollectible / void)Invoice generation stops per Stripe docs
Billing modeWider eligibility for collection pauseRequires flexible billing mode; state restrictions apply
Cancel-flow fitKeep access, defer paymentSuspend service and billing together

Use pause_collection when

  • The customer should keep product access during the pause window
  • You are deferring payment, not suspending the product relationship
  • You can set resumes_at and invoice behavior explicitly in API calls
  • Your retention offer copy promises “no charges until [date]” while staying subscribed

Use the pause subscription API when

  • Access should stop while billing is paused
  • The subscription is on flexible billing mode and passes Stripe eligibility checks
  • Your product treats paused as a distinct lifecycle state in webhooks and entitlements

If the subscription is in classic billing mode or a disallowed status, the pause subscription endpoint may fail — fall back to pause_collection or another save path.

Webhooks and internal state

Both paths emit subscription updates your handlers must understand. Map entitlements from the subscription object after each customer.subscription.updated — do not assume pause means canceled. See Stripe cancellation webhooks.

Customer Portal note

Self-serve portal capabilities differ from custom API flows. Portal configuration is covered in Stripe Customer Portal cancellation setup. Confirm whether pause is exposed in portal settings before promising parity with your embedded flow.

Apply pauses from your cancel flow

ChurnIntel applies billing pauses via pause_collection on accept — map them per cancellation reason in your embedded flow.