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

# Testing

> Sandbox values that trigger success, failure and every customer step.

In sandbox, the phone number, email or account number you send decides the outcome. Nothing reaches M-PESA, Airtel or a bank.

## Rules

* Use your **sandbox** keys. See [Environments](https://api.tandapay.io/guides/environments.md).
* Use a new `externalReference` for every new transaction. A reused one returns `409 DUPLICATE_EXTERNAL_REFERENCE`.
* Test the failure path as carefully as the success path.
* Confirm outcomes the same way you will in production: by webhook, or with [Get transaction](https://api.tandapay.io/api-reference/endpoint/get-transaction.md).
* Need a webhook on demand? Call [Simulate webhook](https://api.tandapay.io/api-reference/endpoint/simulate-webhook.md) with the transaction's `externalReference`.

## Checkout

Create a sandbox [checkout session](https://api.tandapay.io/guides/collections/checkout.md), open the link, and enter these values on the hosted page.

| Method | Value | Result |
| :- | :- | :- |
| Mobile money | `254712345678` | Successful |
| Mobile money | `254787654321` | Failed |
| Mobile money | `25477777777` | Redirect, then successful |
| Mobile money | `25455555555` | Asks for an OTP |
| Bank transfer | `success@mail.com` | Returns a sandbox account, then successful |
| Bank transfer | `failure@mail.com` | Failed |

## Mobile money charge

| Phone number | Result |
| :- | :- |
| `254712345678` | Successful |
| `254787654321` | Failed |

## Bank transfer

| `email` | Result |
| :- | :- |
| `success@mail.com` | Returns a sandbox account, then successful |
| `failure@mail.com` | Failed |

## Payouts

| `destination` | `accountNumber` | Result |
| :- | :- | :- |
| `MoMo` | `254712345678` | Successful |
| `MoMo` | `254787654321` | Failed |
| `Bank Account` | `1234567890` (any bank code) | Successful |
| `Bank Account` | `0987654321` (any bank code) | Failed |

Account names can be anything in sandbox.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.