Testing

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 numberStatusMessageCode
4201320111111010paidApproved00
4201320000013020failedUnspecified failure99
4201320000311101failedInsufficient funds51
4201320131000508failedDeclined — lost card41
4201321234411220failedDeclined05
4201322267774310failedDeclined — expired card54
4201326324640570failedDeclined — exceeds withdrawal limit61
4201321144311528failedDeclined — stolen card43

Visa

Card numberStatusMessageCode
4111114005765430paidApproved00
4111111111111111paidApproved00
4111118250252531failed3DS attempted — not available
4111113343111067failed3DS service error
4111116611600661failedCard not enrolled in 3DS
4111112205628150failed3DS service error
4111115784228433failedAuthentication rejected by issuer
4111115620358287failedAuthentication unavailable
4123120000000000failedUnspecified failure99
4123120001090000failedInsufficient funds51
4123450131000508failedDeclined — lost card41
4123120001090109failedDeclined05
4123128518640738failedDeclined — expired card54
4123123033308648failedDeclined — exceeds withdrawal limit61
4123125276780003failedDeclined — stolen card43

Mastercard

Card numberStatusMessageCode
5421080101000000paidApproved00
5105105105105100failedUnspecified failure99
5457210001000092failedInsufficient funds51
5204010101000000failedDeclined — lost card41
5204730000002514failedDeclined05
5105107550274126failedDeclined — expired card54
5105106475101067failedDeclined — exceeds withdrawal limit61
5105107304607225failedDeclined — stolen card43

American Express

Card numberStatusMessageCode
340000000900000paidApproved00
371111111111114failedUnspecified failure99
340033000000000failedInsufficient funds51
340012340501000failedDeclined — lost card41
340033000000133failedDeclined05
340000018441278failedDeclined — expired card54
340000753060788failedDeclined — exceeds withdrawal limit61
340000418501838failedDeclined — stolen card43

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)StatusResponse
200.00 – 300.00paidApproved (00)
1000.00 – 1100.00failedUnspecified failure (99)
1101.00 – 1200.00failedInsufficient funds (51)
1201.00 – 1300.00failedDeclined — lost card (41)
1301.00 – 1400.00failedDeclined (05)
1401.00 – 1500.00failedDeclined — expired card (54)
1501.00 – 1600.00failedDeclined — exceeds withdrawal limit (61)
1601.00 – 1700.00failedDeclined — 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 numberResultDescription
0515555555failedMobile number not registered for STC Pay
0515555556failedMust update info in STC Pay app before paying
0515555557failedAccount status invalid — contact STC Pay support
0515555558failedOTP attempts exhausted — wait 15 minutes
0515555559failedWait 60 seconds before new payment attempt
Any otherpaidProceeds to OTP authentication stage

Stage 2 — OTP

OTPResultDescription
123456paidSuccessful transaction
000000paidSuccessful transaction
111111failedInsufficient balance
222222failedDaily transaction limit exceeded
333333failedMaximum allowed transaction amount exceeded
444444failedConnection timed out waiting for STC Pay response
Any otherfailedInvalid 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.