> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pruva.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Going live checklist

> Everything to confirm before your first real check.

Moving from test to live is mostly swapping a key, but a few things need to be in place first so your first real check does not fail for a reason you could have caught earlier. Work through these in order.

## Before you switch

<Steps>
  <Step title="Your organization is approved">
    Live checks require an approved organization. A `pruva_live_...` key on an unapproved org returns `403 not yet approved`. Request approval from the dashboard and confirm it is granted.
  </Step>

  <Step title="Every scope you use is active">
    Each scope must be activated for your organization. Confirm every scope your integration calls is active, not just the one you tested most. An inactive scope returns `403`.
  </Step>

  <Step title="Your live key allows those scopes">
    A key carries its own allowed-scope list. Make sure your live key permits every scope you will run, or issue one that does.
  </Step>

  <Step title="Your wallet is funded">
    Live checks are charged, including `not_found`. Fund the wallet and set a low balance alert so checks are not refused for funds mid flow.
  </Step>

  <Step title="You handle all three outcomes">
    Confirm your code handles `found`, `not_found`, and `failed` distinctly, and does not treat `not_found` as an error. See [Handling failed checks](/guides/handling-failures).
  </Step>

  <Step title="Webhooks are verified">
    If you use webhooks, confirm your endpoint verifies the signature and returns `2xx` promptly. See [Verifying a webhook signature](/guides/verifying-signatures).
  </Step>

  <Step title="Keys are stored safely">
    Your live API key is in a secret manager or environment variable, never in source control or the browser. Widget pages use the public key only.
  </Step>
</Steps>

## The switch itself

Replace your `pruva_test_...` key with a `pruva_live_...` key. No other code change is needed; the request, the endpoints, and the response shape are identical between environments.

## After you switch

* Run one real check of each scope and confirm the result and the wallet debit look right.
* Watch your first live checks in the dashboard for a short while, especially the `charged` flag and any `failed` results.
* Keep the test key working in your staging environment so you can keep building without spending.

<Note>
  If a live check fails immediately, read the code first. `403` almost always means approval or scope activation; `402` means funds; `422` means the request body. See [Errors](/api-reference/errors).
</Note>
