Advertisement

Flutterwave Test Card Numbers

Flutterwave’s test cards for each authorization model — PIN, 3D Secure, address verification and no authentication — the cards that fail with specific errors, and test values for bank accounts and mobile money.

Advertisement

Successful payment test cards

PIN 3310 and OTP 12345 unless the card says otherwise.

BrandNumberAuthorizationExpiry · CVV · PIN · OTPCopy
Mastercard5531 8866 5214 2950PIN authentication09/32 · 564 · PIN 3310 · OTP 12345
Mastercard5438 8980 1456 02293DS authentication10/31 · 564 · PIN 3310 · OTP 12345
Visa4187 4274 1556 42463DS authentication09/32 · 828 · PIN 3310 · OTP 12345
Afrigo5640 0039 4160 53203DS authentication05/31 · 044
Verve5061 4604 1012 0223 210PIN authentication10/31 · 780 · PIN 3310 · OTP 12345
Verve5061 4601 6697 6054 667No authentication10/29 · 564 · PIN 3310
Visa4556 0527 0417 2643Address verification (AVS)09/32 · 899 · PIN 3310 · OTP 12345
Mastercard5377 2836 4507 7450Pre-authorization09/31 · 789 · PIN 3310

Source: Flutterwave developer docs – Testing helpers · checked October 2026. Sandbox only — these numbers never work for real payments.

Advertisement

How Flutterwave test cards work

Flutterwave test cards only work in test mode with your test API keys. Each card needs the expiry date and CVV listed next to it, and most also ask for PIN 3310 and OTP 12345. In test mode, transaction receipts go to your business email rather than to the customer.

Flutterwave decides how each card is authorized — by PIN, a 3D Secure redirect, address verification (AVS) or not at all — and your integration has to handle every model. That is why the success table has one card per model: check that your checkout asks for a PIN when the response requires one, follows the redirect for 3DS cards and collects a billing address for the AVS card.

When you run the checkout locally, open it on localhost:<port> (for example localhost:3000), not on an IP address such as 127.0.0.1:3000, or the modal shows errors. The special OTPs 5548 and 6648 only work in the payment modal; on the redirected OTP page, use a failed-payment card instead.

Failed payment test cards

Each card fails with the error shown after authorization.

BrandNumberResultExpiry · CVV · PIN · OTPCopy
Mastercard5143 0105 2233 9965Declined – do not honour08/32 · 276 · PIN 3310 · OTP 12345
Mastercard5590 1317 4329 4314Declined – card fraudulent11/32 · 887 · PIN 3310 · OTP 12345
Mastercard5258 5859 2266 6506Declined – insufficient funds09/31 · 883 · PIN 3310 · OTP 12345
Afrigo5640 0070 6527 5380Declined – insufficient funds05/31 · 044
Mastercard5399 8346 9789 4723Declined – incorrect PIN09/31 · 883 · PIN 3310 · OTP 12345
Advertisement

OTPs, bank accounts and mobile money

Flutterwave also documents test values for other payment methods:

ValueResult
OTP 5548Simulates a wrong OTP (payment modal only)
OTP 6648Simulates insufficient funds (payment modal only)
Access Bank (044) 0690000031 – 0690000041Successful bank account payment, OTP 12345
Access Bank (044) 0690000036Blacklisted account, returns a 400 error
Any mobile number, OTP 123456Successful mobile money payment
233121212121 · 233010101011Failed mobile money payment (change the country code to match)
121212121Failed Wave payment

Testing Flutterwave payments step by step

  1. Switch your dashboard to test mode and copy the test public and secret keys.
  2. Pay with the PIN card 5531 8866 5214 2950 (PIN 3310, OTP 12345) to test the PIN flow.
  3. Pay with a 3DS card and check that the redirect brings the customer back to your callback URL.
  4. Run the failed-payment cards and confirm that your server checks the final transaction status before giving value.
  5. Test bank account and mobile money payments with the values in the last table.

Common errors and fixes

Checkout errors on localhost
Open the page on localhost:<port>, not on an IP address such as 127.0.0.1.
OTP 5548 or 6648 has no effect
They only work in the payment modal. On the redirected OTP page, use a failed-payment card.
Test card fails in live mode
Test cards only work with test keys in test mode.

Sources

Every number on this page was copied from Flutterwave’s official documentation and passes the Luhn check. Checked October 2026; gateways change their test data from time to time, so if a number stops working, check the source:

Test cards only work in Flutterwave’s sandbox or test mode. To test your own form validation before a request reaches the gateway, use our card number generator and validator. Never use real customer cards in test environments.

Frequently asked questions

What are the Flutterwave test card PIN and OTP?

PIN 3310 and OTP 12345 for most test cards, for example Mastercard 5531 8866 5214 2950 (expiry 09/32, CVV 564).

How do I test insufficient funds on Flutterwave?

Use Mastercard 5258 5859 2266 6506 (09/31, CVV 883), or enter OTP 6648 in the payment modal.

Does Flutterwave have test bank accounts?

Yes. Access Bank (044) accounts such as 0690000031 to 0690000034 succeed with OTP 12345. Flutterwave lists 0690000036 as a blacklisted account that returns a 400 error.

Can I use these test cards on another gateway?

Usually not. Each gateway only recognises its own documented test numbers in its own sandbox. Some numbers, such as 4111 1111 1111 1111, appear in several lists, but the results they trigger differ. For format-only testing on your own forms, use our card generator.

Related tools

Advertisement