Managing your subscription
How to change plans, top up usage, update payment details, or cancel - and what each billing lifecycle email means.
Overview
The Billing page is your single control center for everything subscription-related. It shows your current plan and live usage, lets you upgrade or start a new plan directly, and opens the Stripe billing portal for payment, invoice, and cancellation tasks.
To find it: open the sidebar, go to Settings, and click Billing. The URL is /settings/billing.
The page has two main sections:
- Your current plan card - shows the active plan name, your monthly cost, and live usage meters for emails sent, leads, and AI campaigns created.
- Pricing section - the full plan comparison grid, where you can start or change a plan.
Before you start
Only workspace Admins can access the Billing page. Members and Editors are redirected to their Profile page when they try to open it.
If you are not an Admin and need a billing change, ask a workspace Admin to make it.
How to manage your subscription
View your current plan and usage
Open Settings > Billing. The card at the top of the page shows:
- The plan name (e.g. "Growth plan") and a one-line description.
- Your monthly price. If the exact Stripe amount is available it is shown directly. If the price is an estimate based on your plan configuration, a small "Predicted" note appears beneath it.
- Three usage bars: emails sent, leads, and AI campaigns created. Each bar shows used vs. total for the current billing period.
- For paid plans, a Sending domains row that shows whether your infrastructure is Ready or Pending.
Upgrade or start a plan
- Open Settings > Billing.
- Scroll to the Pricing section below the current-plan card.
- Use the Pay monthly / Pay yearly toggle to choose your billing period. Paying yearly saves 20%.
- Use the Self-serve / Done for you toggle to switch between self-serve plans and the DFY service.
- For self-serve plans, drag the contacts slider to your expected monthly lead volume. The plan card prices update live.
- Find the plan you want (Free, Starter, or Growth) and click Start here.
- You are redirected to Stripe Checkout. Complete payment there.
- On success, you land back on the Billing page with a confirmation: "Payment received. Your plan is being updated."
If you close or abandon checkout, you see: "Checkout cancelled. No charge was made."
Starter is capped at 4,000 contacts. If you drag the slider past that threshold, the Starter card grays out and shows "Switch to Growth for this volume."
Growth at very high contact volumes surfaces a secondary Book a call button alongside Start here - use this if you prefer to work with the sales team for large-scale configurations.
Top up usage (add-ons)
You can purchase extra emails, leads, or AI credits at any time without changing your plan.
- Open Settings > Billing.
- In the current-plan card, find the usage bar you want to top up.
- Click the button next to it:
- Purchase Emails - adds email sends (minimum 4,000; billed in batches of 4,000, which cover 1,000 leads).
- Purchase Leads - adds leads at your plan's per-1,000 rate (minimum 1,000).
- Purchase AI Credits - adds AI campaign build credits at $5 each (minimum 1).
- A dialog opens. Use the + / - buttons or type a quantity directly.
- Review the total shown in the summary box.
- Click Purchase [amount]. You are redirected to Stripe Checkout.
- Complete payment. Add-ons are applied immediately after checkout success.
Update payment method, download invoices, or cancel
Payment and invoice management happen in the Stripe billing portal, not on the Ken settings page.
- Open Settings > Billing.
- Click Manage Plan (top-right of the current-plan card).
- A new tab opens with your Stripe customer portal.
- From there you can:
- Update your payment method or billing address.
- Download past invoices.
- Switch billing period (monthly vs. annual).
- Cancel your subscription.
Upgrades take effect immediately. Downgrades and cancellations take effect at the end of your current billing period - you are never cut off mid-campaign.
Done-for-you (DFY) plan
DFY is a flat $2,500/month service retainer, charged on top of a self-serve plan (Growth or above). It is sales-led, not self-serve checkout.
- Open Settings > Billing.
- Switch the toggle to Done for you.
- Click Talk to founder to open the booking calendar and schedule a call.
How it works
Checkout flow. Clicking Start here on a plan card starts a Stripe Checkout session via the backend. The session includes the plan type, billing period (monthly or annual), and your chosen contact volume expressed in 1,000-contact blocks. Stripe handles payment collection and sends you a receipt. The backend activates your new plan on receipt of Stripe's webhook confirmation.
Billing portal. Clicking Manage Plan creates a Stripe customer portal session tied to your account. The portal URL is single-use and short-lived. All payment, invoice, and cancellation actions happen entirely within Stripe's hosted portal.
Add-on checkout. Add-on purchases (emails, leads, AI credits) go through a separate one-time Stripe Checkout session. They are not recurring charges. Leads are priced at your live plan's per-1,000 rate. Email sends are bundled 4-per-lead (4,000 sends = 1,000 lead-equivalent). AI credits are flat $5 each.
Usage meters. The three meters on the current-plan card are refreshed from the backend each time the Billing page loads (server-side render). They reflect used vs. limit for the current billing period. An unlimited flag on a metric causes the bar to show only the used count with no cap.
Price display. The plan card price is the actual recurring amount from Stripe when available (actualMonthlyAmount on the subscription). When Stripe has not yet returned a confirmed amount (new subscription, free plan, or backend unavailable), the UI falls back to a computed estimate and labels it "Predicted". For DFY, the display is the combined retainer + Growth platform cost, broken down as "[retainer] retainer + [platform] platform" when estimated.
Billing lifecycle emails. The backend sends mandatory transactional emails for key billing events. These cannot be turned off. The events include:
- billing_payment_failed - your card was declined or a payment could not be collected. Stripe retries automatically over the following days.
- billing_account_suspended - sent when the account is suspended after repeated payment failures. Platform features are restricted until payment is resolved.
- billing_resources_removal_warning - a warning before inactive resources (sending infrastructure) are removed following a cancellation or non-payment period.
- billing_trial_will_end - advance notice before a trial period closes.
After cancellation, Ken keeps your sending domains and inboxes live for two weeks and forwards all replies directly to you, so you can finish active campaigns and export your leads.
Role guard. The page performs a server-side role check. org:editor and org:member roles are redirected to /settings/profile before the billing data is fetched. This guard is enforced server-side, not just in the UI.
Troubleshooting & debugging
Symptom: The Billing page shows no current plan (empty state) or an error.
- Cause: The billing backend is unavailable or returned an error on page load.
- What to check: The page soft-fails and still renders the pricing grid. The current-plan card will show the Free plan defaults. Check whether the backend
/v1/billing/subscriptionendpoint is reachable. The page re-fetches on reload - refreshing is safe.
Symptom: Price is labelled "Predicted" when the user expects their real bill.
- Cause:
actualMonthlyAmountis null or absent on the subscription response. This happens when the backend cannot read the Stripe subscription amount (e.g. a founding-member discount not yet reflected, or a very recent plan change). - What to check: Confirm the Stripe subscription is active and the backend is syncing Stripe amounts. The label disappears automatically once the backend returns a non-null amount.
Symptom: Clicking "Manage Plan" shows "Could not open the billing portal. Please try again."
- Cause: The backend failed to create a Stripe portal session, or the Server Action is stale (common immediately after a deploy).
- What to check: If the error repeats after a page refresh, check backend logs for the
POST /v1/billing/portalcall. A stale Server Action is resolved by a hard reload (Ctrl+Shift+R/Cmd+Shift+R).
Symptom: Clicking "Start here" shows "Could not start checkout. Please try again."
- Cause: The backend failed to create a Stripe Checkout session, or the Server Action is stale.
- What to check: Same as portal - a hard reload resolves a stale action. If the error persists after reload, check backend logs for
POST /v1/billing/checkout.
Symptom: An Admin user is redirected to /settings/profile instead of seeing the Billing page.
- Cause: The role check is returning
org:editorororg:memberfor that user despite them expecting Admin access. - What to check: Confirm the user's role in the workspace via Settings > Users. Role changes take effect on the next page load.
Symptom: A plan card's "Start here" button is disabled or grayed out.
- Cause: The contacts slider is set to a volume that exceeds the plan's maximum. Starter is capped at 4,000 contacts. Free has no paid Checkout at all.
- What to check: Drag the slider down, or switch the user to Growth which supports the full slider range.
Symptom: Usage bars show 0 / 0 even on a paid plan.
- Cause: The subscription payload did not include the expected usage entries, or the backend usage tracking has not reconciled yet.
- What to check: The bar renders as "no cap" (used count only, no bar fill) when
totalis 0. This is correct for unlimited meters. For a capped plan, check whether/v1/billing/subscriptionis returningusageentries forEmails,Leads, andCampaigns. If the array is empty or the metric is absent, the bar defaults to{ used: 0, total: 0 }.
Symptom: After returning from Stripe Checkout, the plan card still shows the old plan.
- Cause: Stripe sends a webhook to the backend to activate the plan, which can take a few seconds. The UI fires a success toast immediately on
?checkout=successbut the plan activation is asynchronous. - What to check: Reload the page 5-10 seconds after checkout. If the plan still has not updated after a minute, check whether the Stripe webhook was delivered and whether the backend processed it.
FAQ
Can I switch plans at any time? Yes. Upgrades apply immediately. Downgrades and cancellations take effect at the end of your current billing period, so your campaigns are never interrupted mid-cycle.
What happens to my campaigns and leads if I cancel? All campaigns, leads, and copy stay in your account. After cancellation, your sending domains and inboxes stay live for two weeks and all replies are forwarded to you so you can finish active campaigns and move your leads out.
Do my contacts roll over if I do not use them all? No. Your contact allowance resets at the start of each billing period. Unused contacts do not carry over. If you need more before the reset, top up via the Purchase Leads button.
Does paying annually give me all 12 months of contacts on day one? No. Annual billing saves you 20% on the price, but your contacts still release on a per-period basis, not all at once.
I am on the Free plan - what is the "Predicted" label I see on other plan prices? "Predicted" means the price shown is a computed estimate based on your selected contact volume, not a confirmed Stripe invoice amount. Once you subscribe and Stripe confirms the recurring charge, the label disappears and your actual billed amount is shown.
Who can access the Billing page? Only workspace Admins. Members and Editors cannot see this page at all - they are redirected to their Profile page.