Flowwithlit Docs
ACCEPT PAYMENTS

Test Cards

In test mode, use the cards below to simulate payments. No real money moves. Any future expiry date and any 3-digit CVV will work unless stated otherwise.

ℹ️
Test cards only work when your public_key starts with flw_pub_test_. Attempting to use them with a live key will fail.

Successful Payments

Card NumberBrandCVVExpiryResult
4084 0841 1881 8818VisaAny 3 digitsAny future date✅ Success
4111 1111 1111 1111VisaAny 3 digitsAny future date✅ Success
5531 8866 5214 2950MastercardAny 3 digitsAny future date✅ Success
5061 4600 0000 0000VerveAny 3 digitsAny future date✅ Success
3782 822463 10005AmexAny 4 digitsAny future date✅ Success

Test Values

FieldWhat to use
Card NumberAny number from the table above
Expiry MonthAny valid month (01–12)
Expiry YearAny year in the future (e.g. 2028)
CVVAny 3 digits (e.g. 123). Amex: any 4 digits.
Name on cardAny name

What Happens in Test Mode

  1. The card form accepts the submission and immediately returns status: "successful"
  2. A Transaction record is created in the database with provider: "test"
  3. Your configured webhook URL receives a charge.success event asynchronously
  4. The GET /v1/transaction/verify/{ref} endpoint returns status: "successful"
⚠️
Test mode always succeeds regardless of which card number you use. In live mode, the card number, expiry, and CVV are validated against the actual card issuer.

Switching to Live Mode

When you're ready to accept real payments:

  1. Complete KYC verification in the Flowwithlit dashboard
  2. Replace flw_pub_test_ with flw_pub_live_ in your frontend
  3. Replace flw_sec_test_ with flw_sec_live_ in your server environment variables
  4. Test with a real card at a small amount (e.g. ₦100) to confirm end-to-end