Testing Payment Methods
Use the following test values to simulate specific payment outcomes in the sandbox. These values are only valid in the sandbox environment and will not work in production. Test all success, failure, and refund scenarios before going live.
UPI Payments
Use specific payment amounts to simulate different UPI transaction outcomes.
Payment Behaviour Based on Amount
| Amount | Payment Simulated | Transaction Outcome |
|---|---|---|
| ₹222 | UPI linked to RuPay Credit Card | Payment Successful |
| ₹333 | UPI linked to Wallet | Payment Successful |
| ₹444 | UPI linked to Credit Line | Payment Successful |
| Any amount ≤ ₹500 (except above values) | UPI linked to Bank Account (Default) | Payment Successful |
| ₹501 – ₹1,000 | — | Payment Failure |
Refund Behaviour Based on Amount
| Amount | Refund Outcome |
|---|---|
| ≤ ₹300 | Refund Successful |
| ₹301 – ₹500 | Refund Failure |
Card Payments
Use the following details for all test card transactions:
• CVV: Any valid 3-digit number
• Expiry: Any future date
Standard Test Cards
| Card Network | Test Card Number |
|---|---|
| Visa | 4111 1111 1111 1111 |
| Mastercard | 5299 9202 1000 0277 |
| RuPay | 6071 4898 7654 3212 |
Corporate Credit Cards
| Card Category | Test Card Number |
|---|---|
| Corporate Card | 4000 1800 0000 0002 |
Cardholder Name-Based Outcomes
| Cardholder Name | Transaction Outcome |
|---|---|
| Success (or any other name) | Payment Successful |
| Failure | Authentication Failure |
Net Banking
| Bank Name | Transaction Outcome |
|---|---|
| Success Test Bank | Payment Successful |
| Failure Test Bank | Payment Failure |
| Refund Failure Test Bank | Refund Failure |
Webhook Testing
The sandbox triggers webhook events for all simulated transactions, allowing you to verify your webhook handler before going live. Webhook configuration in the Sandbox is the same as in production. Refer to our Webhooks documentation to configure webhooks.
To test webhooks in the sandbox:
- Navigate to Settings > Webhooks and register the URL you want to receive events.
- Trigger events via test transactions.
- The sandbox will trigger the corresponding webhook event to your registered endpoint.
- Validate the webhook signature in your handler using your sandbox credentials.
Once done, ensure your endpoint returns a successful response.
Going Live
Once you have validated your integration in the sandbox, complete the following steps before switching to the production environment.
- Replace sandbox credentials: Swap your sandbox
Client ID,Client Secret, andAccount IDfor your live credentials. - Update OAuth scopes: Replace all ZohoPaySandbox.* scope prefixes with ZohoPay.* in your authorization flow.
- Update SOID: Change the soid parameter from
zohopaysandbox.{account_id}tozohopay.{account_id}. - Disable test mode in widget: Remove or set
otherOptions.is_test_mode = falsein your widget configuration. - Update SDK environment: Set
environment: .live(iOS) orZohoPaymentsEnvironment.live(Android). - Configure production webhooks: Register your live webhook endpoint in the production portal and verify signature handling with production credentials.
- Verify settlement account: Ensure your bank account is verified and linked in the Zoho Payments dashboard before accepting live payments.
You can also refer to our go-live checklist for the mandatory configuration steps.