---
url: /payglocal-recurring-whmcs/guides/going-live.md
description: >-
  A checklist for taking PayGlocal Recurring live — test in sandbox with UAT
  keys, verify a mandate and a cron charge, then switch Test Mode off and swap
  to production keys.
---

# Test in sandbox, then go live

Don't point real customers at a gateway you haven't watched work end to end. PayGlocal Recurring
has a **Test / Sandbox Mode** so you can run the whole flow against PayGlocal's UAT (sandbox)
environment first, confirm a mandate is created and a cron charge succeeds, and only then switch
to live. Work through this checklist in order.

::: info UAT vs production keys
Keys are environment-specific. Sandbox uses your **UAT** keys and KIDs; live uses your
**production** keys and KIDs. You'll swap them when you flip the switch. If verification fails
after going live, a key/environment mismatch is the first thing to check.
:::

## Test in sandbox

### 1. Turn on Test / Sandbox Mode

Go to **Setup → Payment Gateways → PayGlocal Recurring**, set **Test / Sandbox Mode** to **Yes**,
and enter your **UAT keys and KIDs** in the key fields (see [Get your PayGlocal
keys](/payglocal-recurring-whmcs/guides/payglocal-keys)). Click **Save Changes**.

* \[ ] Test / Sandbox Mode = **Yes**
* \[ ] UAT merchant private key path + KID entered
* \[ ] UAT PayGlocal public key path + KID entered

### 2. Take a test payment

Create or open an invoice for a test client and pay it with **Pay & Authorize Recurring**,
completing PayGlocal's hosted checkout in UAT. Walk through it exactly as a customer would — see
[How payments work](/payglocal-recurring-whmcs/features/payment-flow).

* \[ ] Invoice paid via the hosted checkout
* \[ ] Invoice shows **Paid** in WHMCS

### 3. Verify the mandate

Confirm the mandate was stored for that client and shows as **active**. If it wasn't stored, check
the **Gateway Log** (**Utilities → Logs → Gateway Log**) before continuing.

* \[ ] Mandate created and **active** for the test client

### 4. Verify a cron charge

Create a second unpaid invoice for the same client, due inside your **Days Before Due Date to
Charge** window, and let the **WHMCS daily cron** run (or trigger it). Confirm the cron charges the
mandate automatically and marks the invoice **Paid**.

* \[ ] Daily cron ran
* \[ ] Second invoice charged automatically and marked **Paid**
* \[ ] Gateway Log shows the successful cron charge

## Go live

### 5. Switch Test Mode off and swap to production keys

Once sandbox behaves exactly as expected, return to **Setup → Payment Gateways → PayGlocal
Recurring**, set **Test / Sandbox Mode** to **No**, and replace the UAT keys and KIDs with your
**production** keys and KIDs. Click **Save Changes**.

* \[ ] Test / Sandbox Mode = **No**
* \[ ] Production merchant private key path + KID entered
* \[ ] Production PayGlocal public key path + KID entered
* \[ ] License Key and Merchant ID (MID) confirmed for production

::: tip Do a small live confirmation
If you can, take one low-value real payment as a final check that production keys and callbacks
work, before turning customers loose on it.
:::

::: warning Don't leave test keys live
The most common go-live mistake is switching Test Mode off but leaving UAT keys in place (or vice
versa). Test Mode **and** the keys must both match the same environment.
:::

## Related pages

* [Get your PayGlocal keys](/payglocal-recurring-whmcs/guides/payglocal-keys) — UAT and production keys
* [Configuration](/payglocal-recurring-whmcs/configuration) — the full setup walkthrough
* [How payments work](/payglocal-recurring-whmcs/features/payment-flow) — the flows you're testing
* [Settings reference](/payglocal-recurring-whmcs/settings) — Test Mode, SI Maximum, and timing fields
