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

# Going live

> Switching from sandbox to production takes two steps.

Your sandbox code works in production as-is — same payloads, same signing, same endpoints.

## Required

<Steps>
  <Step title="Switch the base URL">
    ```diff theme={null}
    - const BASE_URL = 'https://sandbox.pontisglobe.com'
    + const BASE_URL = 'https://api.pontisglobe.com'
    ```
  </Step>

  <Step title="Regenerate your credentials">
    Hit **Regenerate All Credentials** in
    [Developer Tools](https://app.pontisglobe.com/developer-tools) so any keys that floated around
    during testing are dead before real money moves. Update your env vars with the new values,
    then log in again — JWTs are mode-bound, so a sandbox token won't work in live anyway.
  </Step>
</Steps>

That's it. Remember what changes in live mode: payouts move **real funds**, [trigger codes](/sandbox) have no special meaning (`10.01` is a real payout of 10.01), exchange rates are real, and [callbacks](/callbacks) are actually sent.

## Good to have

* **KYC verified and wallet funded** — live payouts are rejected without verified KYC and fail without balance
* **Callback URL registered** in [Developer Tools](https://app.pontisglobe.com/developer-tools), with [signature verification](/callbacks#verify-the-signature) in your handler — sandbox never exercised this
* **No trigger-code leftovers** — remove test amounts like `10.01` / `10.03` from code and fixtures
* **Unique `idempotency_key` per payout** — safe to retry without double-paying
* **Secrets in env vars**, not in code or git history
* **One small live payout first** — confirm the callback, the [dashboard](https://app.pontisglobe.com/transactions) entry, and the wallet debit before opening the pipeline
