Billing UX Map
Purpose
This document maps the first real billing UX for org and portal before implementation starts.
It is intentionally focused on the first working billing experience, not every later finance edge case.
Core IA Split
Keep these surfaces distinct:
org/settings/billingagency pays for this app via Polarorg/(dashboard)/billingagency bills its own clients via Stripeportal/(dashboard)/billingclient sees invoices, subscription status, and payment actions
Org Billing UX
1. Billing Overview
Primary page purpose:
- show billing attention items across clients
- show unpaid invoices, failed payments, overdue accounts, and active subscriptions
Should show:
- clients with open balances
- overdue invoices
- failed payment states
- subscriptions needing attention
- Stripe connection health
2. Customer Billing Tab
Primary page purpose:
- make one client's billing relationship understandable and actionable inside the customer workspace
Should show:
- billing contact
- Stripe customer state
- invoice list
- subscription/retainer summary
- payment state
- billing documents if relevant
Primary actions:
- create invoice from the customer billing tab
- create subscription from the customer billing tab
- open hosted billing portal action
Ownership rule:
- manage billing identity/defaults from the customer overview
- manage people/contacts from the customer people tab
- keep invoice/subscription actions in the customer billing tab or the shared billing workspace, not the page chrome
3. Create Invoice Flow
Recommended shape:
- dedicated composer launched from the billing workspace or the customer billing tab
- line items section
- presets section
- optional time suggestions section
- totals and review section
Primary steps:
- choose client
- optionally create the client inline if it does not exist yet
- add line items or presets
- optionally pull suggested billable time
- review
- save draft
- finalize/send
4. Create Subscription Flow
Recommended shape:
- focused composer launched from the billing workspace or the customer billing tab
Primary inputs:
- client
- service label
- price/plan selection
- start behavior
- billing contact context
Primary result:
- active or pending recurring billing relationship tied to the client account
5. Stripe Connection UX
This should likely live in org billing admin, not general settings for every user.
Should show:
- connected / not connected
- onboarding incomplete / action required
- last sync or health signal
Primary actions:
- connect Stripe
- reconnect Stripe
- fix onboarding requirements
Portal Billing UX
1. Billing Home
Primary page purpose:
- answer what is owed and what service is active
Should show:
- current open balance
- recent invoices
- active subscription/retainer summary
- payment status alerts
Primary actions:
- pay invoice
- open billing portal
2. Invoice Detail
Should show:
- invoice number / label
- status
- amount
- due date
- line items summary
- hosted payment/download action
3. Subscription Summary
Should show:
- service label
- status
- current billing period
- cancellation/renewal state
- payment method management entry point
4. Payment Method Flow
Recommended shape:
- app launches Stripe-hosted flow
- user returns to portal
- portal refreshes mirrored billing state
UX Principles
Keep finance power in org, clarity in portal
Org is where invoices and subscriptions are managed.
Portal is where billing is understood and paid.
Keep Stripe-native tasks hosted when Stripe already does them well
Do not rebuild payment-method forms or hosted payment collection prematurely.
Keep invoice and subscription concepts visually separate
Users should never have to guess whether they are looking at:
- a one-time invoice
- an ongoing recurring service
Keep time suggestions subordinate to human review
Time-informed billing should help the agency bill faster, not make them fight auto-generated billing they did not ask for.