Comparison
In-app cancellation vs the Stripe customer portal
Stripe's customer portal is a solid, free, Stripe-hosted page where customers manage billing — including cancelling. BoolBul is a drop-in cancellation flow that runs inside your own app, asks why the customer is leaving, and offers the fix that matches their reason before they go. Here's how they differ, and when each one is the right call.
| BoolBul | Stripe customer portal | |
|---|---|---|
| Where it happens | Inside your app (modal on desktop, bottom sheet on phones), your branding and copy | A Stripe-hosted page the customer is redirected to, with Stripe's portal branding settings |
| Billing providers | Dodo Payments and Stripe (Paddle, Lemon Squeezy, Polar, Chargebee coming soon) | Stripe only |
| Exit survey | One-tap reasons asked first, mapped 1:1 to Stripe cancellation feedback; offers adapt to the answer | Optional reason list collected as part of cancelling, stored on the subscription |
| Retention offers | Discount or pause, ranked by reason (e.g. “not using it” sees pause first) | One retention coupon configured in portal settings; pause can be enabled separately |
| Way out | One-click cancel link on every screen, high-contrast, never hidden | Cancel flow inside the portal |
| Mobile apps | Hosted WebView page with a message bridge for React Native, Flutter, iOS and Android | Opens the hosted portal URL in a browser or WebView |
| Analytics | Saved MRR, save rate, top exit reasons and a CSV ledger in your BoolBul dashboard | Reasons on each subscription, Sigma queries and webhooks |
| If it's down | Fails open in 1.5 s: your normal cancellation runs | Customers wait for or retry the hosted page |
| Price | Pro free for 3 months for the first 100 SaaS, then $19 or $49 / month | Included with Stripe Billing |
Why keep the cancel flow in your app?
A redirect is a context switch: the customer leaves your product, lands on a generic billing page, and the only thing between them and “Cancel” is a single coupon. Inside your app you can show your own words, match the offer to the reason (a pause for someone who's not using it this month, a discount for someone who finds it too expensive) and record every answer next to the MRR it represents.
When the Stripe portal is enough
- You only bill with Stripe and are happy with one generic retention coupon.
- You need customers to update cards, download invoices and change plans in one hosted place — BoolBul doesn't replace that.
- You have very few cancellations and no time to add two server routes.
Many teams use both: the portal for invoices and payment methods, BoolBul on the “Cancel subscription” button.
How BoolBul applies offers on Stripe
Your server verifies a signed, single-use offer token and then calls Stripe with your own key: pause_collection with an automatic resumes_at for pauses, a single-use coupon added to the subscription's discounts for discounts, and cancel_at_period_end with cancellation_details.feedback for cancellations. See the server adapters guide.
Stripe features described from Stripe's public documentation, reviewed November 2026.
Try it on your own cancel button
First 100 SaaS founders get BoolBul Pro free for 3 months — no credit card.