Transactions in Test Mode

Transactions in Test Mode

Fund your Atlas test wallet, initiate test payouts, and switch between test and live environments using the Atlas sandbox and test API keys.

When your account is in test mode real transactions won't work. That includes funding your Atlas account from a real bank account or initiating a payment to external bank account. This page provides guidance on how you can perform transactions that mimic real ones in test mode.

Funding your account in test mode

To fund your account in test mode, you need to make a POST request to the Fund Business Test Wallet endpoint. This endpoint requires three parameters.

  1. The virtual account details on your Atlas dashboard.
  2. Your Business ID located at the "Developer" section of the Atlas settings page.
  3. The amount.

For example:

import axios from "axios";

try {
  const response = await axios.post(
    "https://atlas.tryduplo.com/api/v1/wallet/fund-wallet",
    {
      business_id: "YOUR_BUSINESS_ID",
      account_number: "1234567890",
      amount: 1000,
    },
    {
      headers: {
        Authorization: "Bearer YOUR_ACCESS_TOKEN",
      },
    },
  );

console.log(response.data);
} catch (error) {
  console.error(error.response?.data || "Request failed");
}

On a successful request you will get the response below and an IN_FLOW_SUCCESS_EVENT webhook sent to your configured URL.

Fund Account Response

{
  "requestId": "abcd1234-5678-90ef-ghij-1234567890kl",
  "requestTimestamp": "2025-07-16 09:15:00",
  "message": "Wallet funded successfully",
  "statusCode": 200
}

Note
The test funds take approximately 120 secs to reflect on your account.

Using checkout in test mode

To simulate an account number payment through checkout, enter the account number and amount in the form below. You can also open the Checkout Simulator as a standalone page.

Simulate a checkout payment

Payment links

Payment links resolve to the same hosted checkout page, so the account number and card testing steps above apply when testing a payment link in test mode. Open the link in your browser while in test mode and complete the payment using the test account number provided above. To learn how to create and share payment links, see the Payment Links guide.

Making a payout in test mode

You can initiate payouts in test mode the same you would on live mode; a POST request to the Create Payout endpoint with the recipient's bank details and the amount you want to transfer.

For example:

const axios = require("axios");

const initiatePayout = async () => {
  try {
    const response = await axios.post(
      "https://atlas.tryduplo.com/api/v1/payout",
      {
        amount: 50000,
        bank_code: "099858",
        account_number: "0123456789",
        account_name: "John Doe",
        narration: "Payment for services rendered",
        reference: "payout_12345",
      },
      {
        headers: {
          Authorization: "Bearer your_api_key",
          "Content-Type": "application/json",
          Accept: "application/json",
        },
      },
    );

console.log(response.data);
  } catch (error) {
    console.error(error.response.data);
  }
};

initiatePayout();

Info
Learn more about payouts and how they work in the Payout Guide

Test card details

You can test the checkout by card using these card details. The gateway response is controlled by the expiry date and CVV you provide, not the card number itself.

Tip
You can use any four-digit number as the card PIN when prompted during checkout.

VISA

Card Number Card Holder Expires CVV
•••• •••• •••• 1019 TEST USER 01/39 100
•••• •••• •••• 0008 TEST USER 01/39 100
•••• •••• •••• 1019 TEST USER 05/39 100
•••• •••• •••• 0008 TEST USER 05/39 100
•••• •••• •••• 1019 TEST USER 04/27 100
•••• •••• •••• 1019 TEST USER 08/28 100

Additional Visa numbers: 4012000033330026

Additional Mastercard numbers: 2223000000000007, 5111111111111118, 2223000000000023

Simulating responses by expiry date

Use the expiry dates below to trigger specific gateway responses regardless of the card number you use.

Expiry Gateway response
01/39 APPROVED
05/39 DECLINED
04/27 EXPIRED_CARD
08/28 TIMED_OUT
01/37 ACQUIRER_SYSTEM_ERROR
02/37 UNSPECIFIED_FAILURE
05/37 UNKNOWN

Simulating responses by CVV

Use the CVV values below to simulate specific card verification responses.

CVV Response
100 MATCH
101 NOT_PROCESSED
102 NO_MATCH

Switching to live mode

Once you've finished testing your integration, switch to live mode by toggling the environment selector in your Atlas dashboard. Replace your test API keys with live keys, and your application will process real transactions.