A subscription unlocks premium features and grants a monthly (or annual) allowance into your [wallet's](/guides/billing/wallet) Grant Bucket. It is **not** the access gate — you can run verifications whenever your wallet has a positive balance, including with prepaid [top-up](/guides/billing/top-up) funds and no subscription at all.

## Subscription as a feature gate

The platform checks one thing every time you start a verification: **does your wallet have a positive spendable balance to cover the operation?**

- If yes, the verification runs, whether the funds came from your trial, a subscription grant, or a prepaid top-up.
- If no, the request returns `402 payment_required` (see [Payment required](/guides/billing/payment-required)).

A subscription adds two things on top of access: it funds a monthly grant, and it unlocks premium features. Buying prepaid funds without a subscription still lets you verify — the funds are immediately spendable. See [Wallet and balance](/guides/billing/wallet).

The one place a subscription's state blocks spending is **freeze-on-cancel** — see [After cancellation](#after-cancellation).

## Tiers at a glance

There are three tiers, in increasing order of monthly grant: **Basic**, **Pro**, **Max**. The slugs are `basic`, `pro`, and `max`. Each tier carries a monthly fee, charged on the renewal date, and drops a grant equal to that fee into your Grant Bucket on each successful billing cycle (so the committed spend lands in your wallet 1:1).

Tier prices and grant amounts are configuration and may change. The current values are shown on the **Billing → Subscription** page in the console, and are defined in `BILLING_SUBSCRIPTION_TIERS` in `@rf/config`.

## Monthly or annual

Each subscription has a billing interval:

- **Monthly** — drops the tier's monthly grant into the Grant Bucket each cycle. The grant is **use-it-or-lose-it**: any unspent portion expires at the end of the cycle, and the next cycle's grant is fresh.
- **Annual** — drops the **entire annual amount** into the Grant Bucket on day one, as a single grant that expires 365 days out. It is not dripped monthly; unspent remainder expires once, at the 365-day mark.

## Subscribe

Open **Billing → Subscription** in the console. Pick the tier and interval you want and complete Stripe Checkout. On success, you're redirected back with a success banner and the first grant lands in your Grant Bucket within a few seconds. Tax is added by Stripe at checkout on top of the tier price.

## Change tier

You can change tier at any time from the subscription page. On an upgrade, the payment processor bills the prorated difference **immediately** and we grant the net proration amount into your Grant Bucket right away, so the new tier's value and features take effect at once. Downgrades take effect at the end of the current period.

## How grants are funded

Grants land on every paid invoice for your subscription: the first invoice when you subscribe, each renewal, and an immediate-proration upgrade. On each, we add the appropriate amount to your Grant Bucket as a `subscription_grant` transaction, and the event lands in the [Activity log](/guides/activity/activity-log). The grant adds the **pre-tax** amount only. Tax never becomes spendable balance.

## Cancel a subscription

Click **Cancel subscription** on the subscription page. Cancellation takes effect at the end of the current period — you keep access (and any remaining balance) through the period you've already paid for.

## After cancellation

This is the one place a subscription's state affects spending — **freeze-on-cancel**.

When the subscription reaches the `canceled` state, your remaining wallet balance is **frozen**: preserved, never forfeited, but not spendable until you re-subscribe. The Grant Bucket's grant expires at cycle end as usual; the prepaid Top-Up Bucket funds are frozen rather than lost. The moment you re-subscribe, your funds become spendable again.

The subscription state machine is `active → past_due → canceled`. A `past_due` subscription keeps your balance spendable during the dunning grace window but grants no new funds until the failed payment is resolved. Past the grace window it is treated as canceled, and the balance freezes.

To unfreeze, open **Billing → Subscription** and re-subscribe (or, for `past_due`, retry the failed payment or update the [payment method](/guides/billing/payment-methods)). If the wallet is frozen for a different reason — a card dispute — see [Payment required](/guides/billing/payment-required).

See also: [Payment methods](/guides/billing/payment-methods), [Payment required](/guides/billing/payment-required), [Glossary](/glossary).