---
url: /phonepe-whmcs/guides/going-live.md
description: >-
  Move PhonePe for WHMCS from sandbox to production — run a full sandbox test,
  work the go-live checklist, then switch Sandbox Mode off.
---

# Going live

Run a real end-to-end test in **sandbox** first, confirm every part of the flow, then turn Sandbox Mode off.

**Prerequisites:** credentials and the webhook already configured ([PhonePe setup](/phonepe-whmcs/guides/phonepe-setup)).

## 1. Test in sandbox

**Setup → Payment Gateways → PhonePe** → set **Sandbox Mode** to **Yes** → **Save Changes**. Sandbox uses PhonePe's test environment, so no real money moves.

![Sandbox Mode toggle in the PhonePe gateway settings](/phonepe-whmcs/img/phonepe-whmcs-going-live-sandbox.png)
*Setup → Payment Gateways → PhonePe → Sandbox Mode*

Run a full test payment against a test invoice and confirm the whole chain:

* **Pay Now** launches checkout in your chosen [payment mode](/phonepe-whmcs/features/payment-modes) (redirect or iframe).
* You can complete the payment on PhonePe's side.
* The **webhook** reaches your site and passes the SHA256 auth and the secondary API check.
* The invoice is marked **Paid** and the **transaction fee** is recorded.

::: tip If something doesn't complete
Open **Utilities → Logs → Gateway Log** first. A rejected webhook (a `401`) almost always means the Webhook Username/Password don't match between PhonePe and WHMCS.
:::

## 2. Go-live checklist

* \[ ] **KYC verified** on your PhonePe Business account.
* \[ ] **Client ID** and **Client Secret** are the **production** credentials from the dashboard.
* \[ ] **Webhook URL** registered over HTTPS: `https://yourdomain.com/modules/gateways/phonepe/webhook.php`
* \[ ] **Webhook Username** and **Webhook Password** match exactly between PhonePe and WHMCS.
* \[ ] **SSL certificate** valid on the WHMCS domain.
* \[ ] **License Key** entered and active (payments are disabled while inactive).
* \[ ] **Payment Mode** chosen and tested in your live theme.

## 3. Switch Sandbox Mode off

**Setup → Payment Gateways → PhonePe** → set **Sandbox Mode** to **No** → **Save Changes**. The gateway now uses PhonePe's live environment.

## Verify

Make one small real payment right after going live, then check the Gateway Log and invoice status to confirm production credentials and the webhook behave as they did in sandbox.

## Related pages

* [PhonePe setup](/phonepe-whmcs/guides/phonepe-setup) — credentials and webhook
* [Payment modes](/phonepe-whmcs/features/payment-modes) — redirect vs iframe
* [Webhooks](/phonepe-whmcs/features/webhooks) — how results are verified
* [Troubleshooting](/phonepe-whmcs/troubleshooting) — when something doesn't complete
