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

# Test cards

Use these card details in the sandbox to test successful payments, declines, errors, CVV results, and 3D Secure.

No real money moves in Test Mode. These cards cannot be used for live payments, and real cards should not be used in the sandbox.

For a standard payment test, build the scenario by choosing one value from each table:

* Choose a **card number** for the card type you want to test, such as mada, Visa, or Mastercard.
* Choose an **expiry date** for the payment outcome you want, such as approved, declined, or timed out.
* Choose a **CVV** for the verification result you want, such as match or no match.

For example, you can combine a Mastercard card number with expiry `01/39` and CVV `102` to test an approved Mastercard payment where the CVV does not match.

For 3D Secure, use the specific cards in the [3D Secure](#test-3d-secure) section. Your configured risk rules may still affect the final payment status.

## Card numbers

Choose a card based on the card type you want to test.

| Card type       | Card number        |
| --------------- | ------------------ |
| mada Mastercard | `5297410588409146` |
| mada Mastercard | `5433579999990250` |
| mada Mastercard | `5433570000000008` |
| mada Visa       | `4228180191362993` |
| mada Visa       | `4860940000000008` |
| mada Visa       | `4860940000000024` |
| Mastercard      | `5123450000000008` |
| Mastercard      | `2223000000000007` |
| Mastercard      | `5111111111111118` |
| Mastercard      | `2223000000000023` |
| Visa            | `4508750015741019` |
| Visa            | `4012000033330026` |

`mada Mastercard` and `mada Visa` are co-badged cards. `mada only` cards do not carry an international co-badge.

## Choose a payment result

Enter one of these expiry dates in `MM/YY` format to select the payment result.

| Expiry date | Result                  | Use it to test                      |
| ----------- | ----------------------- | ----------------------------------- |
| `01/39`     | `APPROVED`              | A successful payment                |
| `05/39`     | `DECLINED`              | An issuer decline                   |
| `04/27`     | `EXPIRED_CARD`          | An expired card                     |
| `08/28`     | `TIMED_OUT`             | A delayed or missing response       |
| `01/27`     | `INSUFFICIENT_FUNDS`    | Insufficient funds                  |
| `01/37`     | `ACQUIRER_SYSTEM_ERROR` | An acquiring-side error             |
| `02/37`     | `UNSPECIFIED_FAILURE`   | A failure without a specific reason |
| `05/37`     | `UNKNOWN`               | An unresolved payment result        |

An `APPROVED` result means the requested operation succeeded. For example, a successful authorization is not captured until you submit a capture request.

For `TIMED_OUT` and `UNKNOWN`, retrieve the latest payment status before fulfilling the order or retrying the payment.

## Choose a CVV result

| CVV   | Result          |
| ----- | --------------- |
| `100` | `MATCH`         |
| `101` | `NOT_PROCESSED` |
| `102` | `NO_MATCH`      |

The CVV result is separate from the payment result. For example, expiry `01/39` with CVV `102` requests an approved payment with a CVV mismatch. Your risk rules may still reject or review it.

## Common test combinations

Use these combinations for the most common sandbox tests.

| Scenario                             | Card               | Expiry date | CVV   |
| ------------------------------------ | ------------------ | ----------- | ----- |
| Successful mada payment              | `4228180191362993` | `01/39`     | `100` |
| Successful Mastercard payment        | `5123450000000008` | `01/39`     | `100` |
| Successful Visa payment              | `4508750015741019` | `01/39`     | `100` |
| Declined payment                     | Any card above     | `05/39`     | `100` |
| Insufficient funds                   | Any card above     | `01/27`     | `100` |
| Timed-out payment                    | Any card above     | `08/28`     | `100` |
| Approved payment with a CVV mismatch | Any card above     | `01/39`     | `102` |

## Test 3D Secure

For 3D Secure tests, the card number selects the authentication scenario.

Use expiry `01/39` and CVV `100` so the payment and CVV checks do not interfere with the authentication test.

| Scenario          | Card number        | Expected behavior                                    |
| ----------------- | ------------------ | ---------------------------------------------------- |
| Challenge         | `5123450000000008` | A simulated issuer challenge is displayed            |
| Frictionless      | `2223000000000023` | Authentication completes without showing a challenge |
| Not authenticated | `5111111111111118` | Authentication returns a not-authenticated result    |

3D Secure authentication and payment authorization are separate. A successful authentication does not guarantee that the payment will be approved.

When testing a challenge, complete the simulated issuer screen and confirm that your backend receives the final payment status.

## Before going live

Test at least:

* A successful payment for every card type you accept
* A declined payment
* An expired card
* A timeout or unknown result
* A CVV mismatch
* A 3D Secure challenge
* Frictionless and unsuccessful 3D Secure authentication

Confirm that your frontend shows the correct result and that your backend records the final payment status.

Use the server-side payment status and webhooks to decide whether an order has been paid. Do not rely on the browser redirect alone.

Switch to your live credentials before accepting real payments. Test cards must never be used in production.
