Bonaventure OgetoBy Bonaventure Ogeto|

Paystack Test Cards and Test Scenarios

Use these Paystack test card numbers in test mode: Success: 4084084084084081 (CVV: 408, Expiry: any future date). Decline (Do Not Honor): 4084080000000409. Insufficient Funds: 4084080000000005. 3DS challenge required: 507850785078507812. For test bank transfers, use the Paystack test bank codes. For M-Pesa test, use phone 0708993090 with PIN 1234.

Paystack Test Card Numbers

ScenarioCard NumberCVVExpiryPIN
Successful charge 4084084084084081 408 Any future date 0000
Decline — Do Not Honor 4084080000000409 408 Any future date
Insufficient Funds 4084080000000005 408 Any future date
3D Secure challenge 507850785078507812 081 Any future date 1234
International Visa success 4187427415564246 828 Any future date

All test cards work only with your Paystack test secret key (sk_test_...). No real money moves.

Test Bank Transfer Accounts

To test bank transfer payments in Paystack test mode, use these details when prompted for bank account verification:

  • Bank: Any bank with code 057 (Zenith Bank) or 058 (GTBank) in test mode
  • Account Number: Any 10-digit numeric string (e.g., 0000000000) — test mode does not validate real accounts
  • Account Name: Will be returned as a dummy name

For subaccount creation in test mode, use the same approach — fake account numbers pass validation.

M-Pesa Test Credentials (Kenya)

To test M-Pesa payments in Paystack test mode (Kenya):

  • Phone number: 0708993090
  • M-Pesa PIN: 1234

The M-Pesa test flow simulates the STK push and confirmation. In test mode, the payment is auto-confirmed without a real Safaricom prompt.

Learn More

Key Takeaways

  • Paystack test cards only work in test mode — switch to test keys before using them.
  • The success test card is 4084084084084081 with any future expiry and CVV 408.
  • To simulate a decline, use 4084080000000409 — this returns "Do Not Honor".
  • To simulate insufficient funds, use 4084080000000005.
  • To simulate a 3D Secure challenge, use card 507850785078507812.
  • Test bank transfer accounts use any numeric string as account number with Paystack test bank codes — no real bank validation in test mode.

Frequently Asked Questions

Why does my test card charge fail even in test mode?
Check that you are using the test secret key (sk_test_...) not the live key. Also verify you are calling the Paystack API with the test key in the Authorization header — using the live key will treat it as a real charge attempt with a fake card, which will fail differently.
Can I use these test cards in the Paystack Inline popup?
Yes. In test mode, the Paystack Inline popup accepts these test card numbers just as a real checkout would accept a real card. Enter the card number, any future expiry, the CVV listed, and the PIN where prompted.
Are there test cards for specific bank types (Verve, Mastercard)?
Yes. The 4084... series is Visa. The 5078... series is Verve (common in Nigeria). Paystack may add more test cards — check the Paystack documentation for the latest list as new card types and scenarios are occasionally added.
How do I test USSD payments in Paystack test mode?
USSD test mode in Paystack auto-completes the USSD flow without actually dialing a USSD code. Initiate a transaction with a Nigerian test phone number and select USSD as the channel. The test mode will simulate a successful completion.

Ready to build real-world apps?

Join the McTaba Labs full-stack marathon (4 months full-time · 6 months part-time). Learn M-Pesa, USSD, and WhatsApp engineering while shipping 8 production apps.

Apply to the McTaba Marathon