Stripe Customer Portal — Self-Serve Billing
Change plan, update card, download past invoices — all from Stripe's hosted portal.
The Customer Portal is Stripe's hosted page that handles plan changes, payment updates, and invoices. We don't reinvent this UI — Stripe does it well, and customers' accounting systems already trust the layout. Settings → Billing → Manage subscription opens it in a new tab via a single-use signed URL, so there's no separate login.
What you can do there
Plan changes are immediate. Upgrade Pro to Business and Stripe charges the prorated difference on the spot. Downgrade and you keep Business until the end of the cycle. Card swaps, address updates, full PDF history — all in the portal.
Cancel goes to "downgrade to Free at the end of the current period." Your data stays during the active cycle; once you're on Free, retention trims to seven days and older time-series rows fall off via ClickHouse TTL. That's not a hard delete of your config — your servers and rules are still there, just with shorter history.
Who can open it
Owner and Billing Admin roles only. Regular org members see a read-only billing summary on the same page (current plan, next charge date) but the "Manage subscription" link doesn't appear for them. We did this because the portal can change plans, and you don't want a curious teammate to upgrade you.
Multi-org billing
Each MonPG organization is a separate Stripe customer with its own subscription. If you have a parent company with three orgs (one per business unit, say), you get three invoices. Most customers like this — accounting wants to see the cost split. If you'd rather have one consolidated invoice across orgs, we can move you to a contract-based Enterprise model where invoicing is unified. Email [email protected].
VAT
VAT lives under "Tax IDs" in the portal. EU customers paste their VAT number, we validate against VIES, and the reverse-charge exemption applies on the next invoice. Non-EU tax IDs are stored on the customer record but don't change billing.
Webhooks
MonPG subscribes to invoice.payment_succeeded, customer.subscription.updated, and customer.subscription.deleted on the Stripe side. Plan changes propagate to the MonPG UI within 60 seconds. If something looks out of sync after a portal change (rare but happens during Stripe-side latency), Settings → Billing → Force refresh re-pulls state from Stripe.