How It Works
Sending Portal Access
Via Dashboard
Send a portal link directly to a customer:- Navigate to Customers → [Customer Name]
- Click Send Portal Link or Send Billing Email
- Customer receives email with secure link
- Link expires after 1 hour (configurable)
Via Your Application
Work with your development team to create portal sessions programmatically. See the Portal API Reference for technical details.What Customers Can Do
View Invoices
Customers can see all their invoices:- Current and past invoices
- Invoice status (paid, pending, overdue)
- Download invoice PDFs
- View line item details
Update Payment Method
Customers can manage their payment methods:- Add new credit card
- Update existing card
- Set default payment method
- Add bank account (if enabled)
View Subscription
Customers can see their subscription details:- Current plan and pricing
- Billing cycle dates
- Next invoice date
- Contract terms
Self-Service Changes
If enabled, customers can:- Upgrade to a higher plan
- Downgrade to a lower plan
- Add or remove seats
- Cancel subscription
Portal Configuration
Settings → Customer Portal
Configure what customers can do:| Feature | Description |
|---|---|
| View Invoices | See invoice history |
| Download PDFs | Download invoice PDFs |
| Update Payment | Change payment method |
| View Subscription | See subscription details |
| Self-Serve Changes | Allow plan changes |
| Cancel Subscription | Allow self-cancellation |
| View Usage | See metered usage |
Enabling Self-Service
- Navigate to Settings → Customer Portal
- Under Self-Serve Options:
- Enable Allow Upgrades
- Enable Allow Downgrades (optional)
- Enable Allow Cancellation (optional)
- Select which plans customers can switch between
- Save settings
Branding
Customize the portal appearance:- Navigate to Settings → Branding
- Upload your logo
- Set primary colors
- Configure footer text
- Preview the portal
Portal Sessions
Session Expiration
Portal links expire after 1 hour by default. Configure this in Settings → Customer Portal → Session Duration.Security
- Each link is unique and single-use
- Sessions are tied to a specific customer account
- No login required (link contains secure token)
Webhooks
Receive notifications when customers take action:| Event | When Sent |
|---|---|
subscription.activated | Subscription changed |
subscription.canceled | Customer canceled |
payment.updated | Payment method updated |
Common Use Cases
”Manage Billing” Button
Add a button in your app that takes customers to the portal:- Create a
/billingroute in your application - When accessed, create a portal session and redirect
- Set the return URL to bring customers back to your app
Payment Method Update
Send customers directly to update their payment:- Create portal session with initial page set to “payment_methods”
- Customer lands directly on payment update screen
Invoice Access
Give customers quick access to invoices:- Create portal session with initial page set to “invoices”
- Customer can view and download all invoices
Troubleshooting
Portal Link Not Working
- Check the link hasn’t expired (default: 1 hour)
- Verify the customer account exists
- Create a new portal session
Customer Can’t See Invoices
- Verify the customer has invoices
- Check that “View Invoices” is enabled in portal settings
Self-Service Changes Not Available
- Check that self-service is enabled in Settings → Customer Portal
- Verify the plans allow self-service changes
- Ensure the customer’s current plan permits changes
Best Practices
Easy Access
Add a clear “Manage Billing” link in your app navigation.
Brand Consistently
Configure branding so the portal matches your app.
Limit Self-Service
Control which changes customers can make on their own.
Handle Webhooks
Listen for portal events to keep your app in sync.