Upgrade & downgrade
How plan changes work — timing, proration, data retention on downgrade, cancellation, and grace periods.
Plan changes in AACsearch are designed around two principles:
- No surprise data loss. Downgrading or cancelling never deletes your data, even if you exceed the new plan's caps. Reads continue; writes are gated.
- No mid-period feature loss. Downgrades take effect at the next renewal so you keep paid features until the period you paid for ends.
This page covers the timing rules in detail.
Upgrade — immediate
Upgrading takes effect immediately on the next request after the payment provider's webhook lands (typically a few seconds).
What you get instantly:
- New quota caps (search units, indexed documents, syncs, seats).
- New features unlocked (synonyms on Starter, scoped tokens on Pro, etc.).
- Higher per-key rate limit if your plan raises it.
- Longer analytics retention window.
What changes about your current period:
- Quotas — replaced by the new plan's caps. Already-used units are not refunded but the cap is now larger, so effectively you have more headroom for the rest of the period.
- Billing — pro-rated. The new plan's full month is charged minus a credit for the unused portion of the old plan's period. The proration line appears on the next invoice.
- AI wallet — unaffected. The wallet is independent of plan.
Example: you upgrade from Starter ($29/mo) to Pro ($99/mo) on day 10 of a 30-day period.
- Credit for unused Starter: $29 × (20/30) = $19.33
- Charge for full Pro period (today through next anniversary): $99
- Net on next invoice: $99 − $19.33 = $79.67
The exact proration math is owned by the payment provider (Stripe, Lemon Squeezy, etc.) — we do not compute it ourselves.
Downgrade — at renewal
Downgrading takes effect at the next renewal date. You keep the higher plan's features and limits for the rest of the period you paid for, then drop to the new plan.
What you should do before downgrading:
- Check that your usage fits the new caps:
- Indexed documents below the new cap.
- Member count below the new seat cap.
- Connector sync rate below the new monthly cap.
- Disable features the new plan does not include (e.g. synonyms when going to Free) — otherwise the UI hides them automatically but server-side rules continue to enforce as configured.
- Audit any custom origins or scoped tokens — these unlock only on Pro+. Going from Pro to Starter disables them and they return
feature_unavailable.
The dashboard warns about these before confirming the downgrade.
Downgrade where current usage exceeds the new cap
This is the awkward case and the one we designed around carefully. Suppose you have 30,000 indexed documents on Starter (cap 10,000) and downgrade to Free (cap 1,000). What happens?
At the renewal:
- Reads continue. All 30,000 documents remain searchable.
- Writes are blocked. New
PUT documentscalls returnquota_exceededuntil you delete documents to fit. - Existing data is preserved. Nothing is deleted by us — you decide what to drop.
We email you 7 days before the renewal with the over-cap state. After the renewal, you have:
- Indefinite read access at the over-cap state.
- A 30-day window to either upgrade back or trim — during this window writes are blocked.
- After 30 days, the org is flagged for read-only freeze: even reads start to return
quota_exceededif your document count is more than 10× the plan cap. (This prevents indefinite freeloading on the data plane; orgs at 1.1× the cap are not affected.) - Frozen data is retained for 90 days; after that, an admin reaches out before any archival.
This makes downgrade safe but not free. Trim or upgrade — the choice is yours.
Cancellation — paid through end of period
Cancellation is a soft action. You keep the plan's full capability until the end of the paid period, then drop to Free with a grace window.
The cancellation flow:
- From
/[orgSlug]/settings/billing→ Cancel plan. - Confirm with the optional cancellation reason form.
- The plan is marked
cancel_at_period_end: truein the provider. - The dashboard shows a banner: Plan cancels on 2025-11-30.
- On the renewal date, the plan moves to Free.
After moving to Free:
- 7-day read grace. Search requests succeed for 7 more days at the Free plan's rate limits.
- Writes stop immediately. New ingest returns
quota_exceededfrom day one. - AI wallet preserved. The wallet balance remains untouched and AI features keep working if you have credits (the wallet is plan-independent).
- Members lose access if over Free's seat cap of 3. Owners decide who to remove.
You can re-subscribe any time during or after the grace period without losing data. After 90 days of dormancy with no payment, indexes are flagged for archival and we email you before any action.
Reactivation
To reactivate a cancelled plan:
- From
/[orgSlug]/settings/billing→ Reactivate. - The previous payment method is used unless you change it.
- Billing resumes from the reactivation date — there is no back-bill for the dormant period.
Reactivation is instant. Quotas reset on the next regular cycle anchor (1st of the month for monthly customers).
Switching providers
To move from Stripe to Lemon Squeezy (or any other path), you currently need to:
- Cancel the existing subscription.
- Wait for the period to end (or accept losing the unused portion).
- Re-subscribe through the new provider's checkout.
We are working on in-place provider migration — until that ships, the cancel-and-resubscribe path is the only option. Open a support ticket if you need help.
Enterprise plan changes
Enterprise plans are negotiated, not self-serve. Changes go through your AACsearch account manager:
- Up-tier — a contract amendment, takes effect on the agreed date.
- Down-tier — usually negotiated at renewal time, not mid-contract.
- Cancellation — per the notice period in the master service agreement (typically 30 or 90 days).
Enterprise customers do not see the self-serve cancel button — instead the dashboard shows Contact your account manager.
Audit trail
Plan changes emit audit log entries:
| Audit action | When emitted |
|---|---|
change_plan | New plan confirmed by the provider webhook |
The details field includes the previous plan, new plan, and provider transaction reference.
Common scenarios
"We had a one-off spike for Black Friday — should we upgrade?"
If the spike fits within overage on your current plan, buy overage instead. Enable it from /settings/billing → Allow overage with a spending cap. Cheaper than upgrading and you don't have to remember to downgrade.
"We want to try Pro for a month."
Upgrade. Use it. Downgrade at renewal. You'll be billed pro-rated Pro for the in-period upgrade, then back to Starter the next cycle.
"We're leaving — what about our data?"
Cancel. Data is preserved at full read access for 7 days, then read-only for indefinite (subject to the over-cap freeze rules above). Export via the v1 REST endpoint or the dashboard while you still have access.
"We need to switch billing entity (e.g. from individual to LLC)."
Update the billing entity on the existing subscription — the provider (Stripe / Lemon Squeezy / etc.) supports entity changes without re-subscribing. See Invoices.
Related
- Plans — plan matrix.
- Quotas — overage mechanics and the over-cap freeze rules.
- Invoices — proration line items.
- Wallet & AI credits — independent of plan changes.