Test payment methods
Use these credentials in sandbox only. They will not work against production API keys.
Dev environment only
These credentials only work in the dev environment. They will not work in production.
Card payments
Use any future expiry date, any 3-digit CVC (4 digits for Amex), and a cardholder name with at least two words. No specific OTP is required.
Mada
| Card number | Status | Message | Code |
|---|---|---|---|
| 4201320111111010 | paid | Approved | 00 |
| 4201320000013020 | failed | Unspecified failure | 99 |
| 4201320000311101 | failed | Insufficient funds | 51 |
| 4201320131000508 | failed | Declined — lost card | 41 |
| 4201321234411220 | failed | Declined | 05 |
| 4201322267774310 | failed | Declined — expired card | 54 |
| 4201326324640570 | failed | Declined — exceeds withdrawal limit | 61 |
| 4201321144311528 | failed | Declined — stolen card | 43 |
Visa
| Card number | Status | Message | Code |
|---|---|---|---|
| 4111114005765430 | paid | Approved | 00 |
| 4111111111111111 | paid | Approved | 00 |
| 4111118250252531 | failed | 3DS attempted — not available | — |
| 4111113343111067 | failed | 3DS service error | — |
| 4111116611600661 | failed | Card not enrolled in 3DS | — |
| 4111112205628150 | failed | 3DS service error | — |
| 4111115784228433 | failed | Authentication rejected by issuer | — |
| 4111115620358287 | failed | Authentication unavailable | — |
| 4123120000000000 | failed | Unspecified failure | 99 |
| 4123120001090000 | failed | Insufficient funds | 51 |
| 4123450131000508 | failed | Declined — lost card | 41 |
| 4123120001090109 | failed | Declined | 05 |
| 4123128518640738 | failed | Declined — expired card | 54 |
| 4123123033308648 | failed | Declined — exceeds withdrawal limit | 61 |
| 4123125276780003 | failed | Declined — stolen card | 43 |
Mastercard
| Card number | Status | Message | Code |
|---|---|---|---|
| 5421080101000000 | paid | Approved | 00 |
| 5105105105105100 | failed | Unspecified failure | 99 |
| 5457210001000092 | failed | Insufficient funds | 51 |
| 5204010101000000 | failed | Declined — lost card | 41 |
| 5204730000002514 | failed | Declined | 05 |
| 5105107550274126 | failed | Declined — expired card | 54 |
| 5105106475101067 | failed | Declined — exceeds withdrawal limit | 61 |
| 5105107304607225 | failed | Declined — stolen card | 43 |
American Express
| Card number | Status | Message | Code |
|---|---|---|---|
| 340000000900000 | paid | Approved | 00 |
| 371111111111114 | failed | Unspecified failure | 99 |
| 340033000000000 | failed | Insufficient funds | 51 |
| 340012340501000 | failed | Declined — lost card | 41 |
| 340033000000133 | failed | Declined | 05 |
| 340000018441278 | failed | Declined — expired card | 54 |
| 340000753060788 | failed | Declined — exceeds withdrawal limit | 61 |
| 340000418501838 | failed | Declined — stolen card | 43 |
Apple Pay
Testing is amount-based — not card-based. Add a real card to an Apple Pay Wallet, then trigger different outcomes by charging specific SAR amounts.
| Amount (SAR) | Status | Response |
|---|---|---|
| 200.00 – 300.00 | paid | Approved (00) |
| 1000.00 – 1100.00 | failed | Unspecified failure (99) |
| 1101.00 – 1200.00 | failed | Insufficient funds (51) |
| 1201.00 – 1300.00 | failed | Declined — lost card (41) |
| 1301.00 – 1400.00 | failed | Declined (05) |
| 1401.00 – 1500.00 | failed | Declined — expired card (54) |
| 1501.00 – 1600.00 | failed | Declined — exceeds withdrawal limit (61) |
| 1601.00 – 1700.00 | failed | Declined — stolen card (43) |
Any amount outside these ranges will be declined.
STC Pay
Two-stage flow. The mobile number determines whether initiation succeeds. If it does, the OTP determines the final payment outcome.
Stage 1 — Mobile number
| Mobile number | Result | Description |
|---|---|---|
| 0515555555 | failed | Mobile number not registered for STC Pay |
| 0515555556 | failed | Must update info in STC Pay app before paying |
| 0515555557 | failed | Account status invalid — contact STC Pay support |
| 0515555558 | failed | OTP attempts exhausted — wait 15 minutes |
| 0515555559 | failed | Wait 60 seconds before new payment attempt |
| Any other | paid | Proceeds to OTP authentication stage |
Stage 2 — OTP
| OTP | Result | Description |
|---|---|---|
| 123456 | paid | Successful transaction |
| 000000 | paid | Successful transaction |
| 111111 | failed | Insufficient balance |
| 222222 | failed | Daily transaction limit exceeded |
| 333333 | failed | Maximum allowed transaction amount exceeded |
| 444444 | failed | Connection timed out waiting for STC Pay response |
| Any other | failed | Invalid OTP |
BNPL — Tabby & Tamara
Testing credentials for buy-now-pay-later methods are managed directly by each provider. Use the links below to access their sandboxes.