## Symptoms

One of these:

- The API returns `402 payment_required` or `403 subscription_required`
  on verification creation.
- A running verification gets stuck on the `payment_required` state.
- The wallet screen shows a zero (or insufficient) balance, or a
  frozen / locked banner.

## The two codes

Access is balance-first: a verification runs whenever your wallet has a
positive spendable balance. Two codes signal why it can't:

- **`402 payment_required`** — the wallet can't cover the operation:
  the balance is too low, or the wallet is `locked`/`closed` (for
  example, frozen by a card dispute). The fix is to add funds, or
  contact support if the wallet is locked.
- **`403 subscription_required`** — your wallet holds a balance that is
  **frozen** because the subscription was `canceled` (or went
  `past_due` past the dunning grace). The funds are preserved, not
  forfeited — re-subscribe to unfreeze them.

You do **not** need a subscription to spend prepaid funds. A
subscription is a feature gate, not an access gate.

Both codes apply to **live mode only**. Test-mode verifications are free
and never touch a wallet, so they never return `402`/`403` or park on
funds.

## Diagnosis

Open **Billing → Wallet**. The top of the screen shows your balance
(total plus the grant / top-up split and per-grant expiry) and your
subscription status (`active` and trial are spendable; `past_due` is in
dunning grace; `canceled` and post-grace `past_due` freeze the
balance). Cross-reference with the error code:

| Code                        | Wallet                        | What to do                                                         |
| --------------------------- | ----------------------------- | ----------------------------------------------------------------- |
| `402 payment_required`      | Insufficient balance          | [Top up](/guides/billing/top-up) or enable auto-recharge.         |
| `402 payment_required`      | `locked` / `closed`           | Contact support — a disputed or operator-locked wallet needs review. |
| `403 subscription_required` | Frozen after cancellation     | [Re-subscribe](/guides/billing/subscription) to unfreeze funds.   |
| Verification parked         | Ran out mid-flight            | Add funds (or unfreeze); the parked verification resumes automatically. |

## Fix

For `402 payment_required` — open **Billing → Top up** and complete
Stripe Checkout. Preset amounts carry a [checkout discount](/guides/billing/top-up)
(you pay less than face value). To prevent future drops, enable
[auto-recharge](/guides/billing/auto-recharge). If the wallet is
`locked` or `closed`, contact support.

For `403 subscription_required` — open **Billing → Subscription** and
re-subscribe. Your frozen balance becomes spendable the moment the
subscription is `active`.

## Verify

After funds land (or the wallet unfreezes), the balance updates within
seconds. A parked verification resumes on the next workflow tick without
re-running completed steps or double-charging. The applicant does not
need to re-open the link.

## Still stuck?

If Stripe Checkout completed but the balance has not updated, see
[Why is my recharge pending?](/guides/faq/recharge-pending). If you are
subscribed and still see `403 subscription_required`, the subscription
is likely `past_due` with the grace window exhausted — open
**Billing → Subscription** and retry the failed payment or update the
payment method.