Testing

Learn how to test your integration.

When integrating a payment gateway, you will need to test your implementation before going live. We've got test credentials for you to test a variety of use cases and allow you to simulate both successful and failed scenarios.

🚧

Using Test Credentials and Mock Data

These credentials and data work exclusively in Test Mode. If you require mock data to test a specific flow or feature, please contact our support team.


Cards

Below are card details to use to make a mock payment. To ensure accurate testing, please select the appropriate test card based on the authorization model (PIN, 3DS, AVS, and NoAuth) required for your card transaction.

Each card triggers a specific authorization flow, essential for replicating the different direct card charge scenarios.


Successful Payments

Here is a list of cards to simulate a successful payment.

TypeNetworkCard NumberExpiryCVVOTPPIN
PIN authenticationMastercard553188665214295009/32564123453310
3DS authenticationMastercard543889801456022910/31564123453310
3DS authenticationVisa418742741556424609/32828123453310
3DS authenticationAfrigo564000394160532005/26044--
PIN authenticationVerve506146041012022321010/31780123453310
NoAuthVerve506146016697605466710/29564-3310
Address Verification (AVS)Visa455605270417264309/32899123453310
Pre-authentication Test CardMastercard537728364507745009/31789-3310

Failed Payments

Here is a list of cards to simulate a failed payment.

TypeNetworkCard NumberExpiryCVVOTPPIN
Card Declined (Address Verification)Mastercard514301052233996508/32276123453310
Card FraudulentMastercard559013174329431411/32887123453310
Card Insufficient FundsMastercard525858592266650609/31883123453310
Do Not HonourMastercard514301052233996508/31276-3310
Insufficient FundsMastercard525858592266650609/3188312345-
Insufficient FundsAfrigo564000706527538005/26044--
Restricted Card, Retain CardMastercard555165163038138408/31276--
Invalid TransactionMastercard555165815765382208/31276--
Function Not Permitted to CardholderMastercard525858205472902011/30887--
Function Not Permitted to TerminalMastercard525858826456568211/30887--
Transaction ErrorMastercard525858913014901611/30887--
Incorrect PINMastercard539983469789472309/31883123453310

Testing Payment on Checkout

To properly render checkout on your local environment, you'd need to route your app to localhost:<preferred-port> e.g. localhost:3000. Pointing your app to an IP address e.g. 127.0.0.1:3000 would result in errors.

Credentials are listed in the card, and mobile money sections to help you test your checkout integration.

OTPs

Any OTP passed in test transactions will pass validation. However, you can use these special OTPs to mock specific error scenarios:

  • WRONG OTP: 5548
  • INSUFFICIENT FUNDS: 6648

ℹ️

Testing Tip

These special OTPs will only work (simulate failed payments) when the OTP validation happens directly in our payment modal. If you are redirected to our OTP validation page, you'll need to use one of the test cards designated for failed payments.


Bank Accounts

Bank account details to use to make a mock payment.

BankAccount numberOTP
Access Bank (044)069000003112345
Access Bank (044)069000003212345
Access Bank (044)069000003312345
Access Bank (044)069000003412345

ℹ️

Testing Tip

If you need more Access Bank test account numbers, you can keep incrementing the last digit of the test account numbers above to get new test account numbers, right up to 0690000041.


Mobile Money

Successful Payments

To mock a successful mobile money payment, you can use any mobile number and the OTP 123456.

Failed Payments

You can make mocked failed transactions for your integration tests using any of the following numbers below. Update the country code of each number to match the code of your customer's number.

S/NMobile numberError message
1.233121212121Mocked a Failed Transaction
2.233010101011Mocked a Failed Transaction

Testing Apple Pay or Google Pay

When testing Apple Pay and Google Pay transactions, You can mock successful and failed transactions by appending the appropriate suffix to your transaction reference.

  • To mock a successful transaction: Make sure your reference ends with _success_mock (for example, "dfs23fhr7ntg0293039_success_mock").

  • To mock a failed transaction: Make sure your reference ends with _failed_mock (for example, "dfs23fhr7ntg0293039_failed_mock").

Testing Transfers

🚧

IP Whitelisting

In order to conduct a successful integration test, it's important to ensure that you whitelist the IP addresses of the servers making the transfer API calls.

When testing a transfer, you can use any of our provided test accounts. By default, such transfers will always remain in a PENDING state. You can force transfers to behave differently by using a special kind of transaction reference when creating the transfer.

  • To mock a successful transfer: Make sure your reference ends with _PMCK (for example, "dfs23fhr7ntg0293039_PMCK").
  • To mock a failed transfer: Make sure your reference ends with _PMCK_ST_F (for example, "dfs23fhr7ntg0293039_PMCK_ST_F").

📘

Testing Tip

By default, the status of the mocked transfer will only be updated after 10 minutes.

  • To change the time delay: append DU_{minutes} to your transaction reference.
    For Example

    • A transfer with a reference of "dfs23fhr7ntg0293039_PMCK" will succeed after 10 minutes.

    • A transfer with a reference of "dfs23fhr7ntg0293039_PMCKDU_1" will succeed after 1 minute.

    • A transfer with a reference of "dfs23fhr7ntg0293039_PMCK_ST_F" will fail after 10 minutes.

    • A transfer with a reference of "dfs23fhr7ntg0293039_PMCK_ST_FDU_1" will fail after 1 minute.


Bill Payments

Here is a test credential to help you access the DSTV biller.

BillerCredential TypeCredentialsItem Code
DSTVSmart card number0025401100CB140 or CB141

BVN Credentials

There are two main cases when verifying your customer's BVN:

  • Case 1: New customer consent flow i.e. initiating the customer's content.
  • Case 2: Existing consent flow i.e Fetching previous consent.

Use these mock credentials to test your integration for verifying users BVN information;

CaseBVNFirst NameLast NameOTP
122222222280NibbyCertifier111111
222123456789NibbyCertifier-