Virtual USD Cards

Learn how to issue virtual cards.

Overview

🚧

Note

Our virtual USD cards are 3D enabled which means an OTP is required to complete a payment which will be sent to you via webhooks, you can then choose to deliver this OTP to your customers via SMS or Email.

Creating virtual cards with Mono Issuing

Learn how to create a virtual bank card via APIs in 3 simple steps.

Step 1: Get Account Holder ID
Step 2: Create a Virtual Card
Step 3: Get Card


Step 1: Get Account Holder ID

The Account holder ID is required to issue a virtual card. If an Account Holder doesn’t exist at the moment, please visit the documentation page above to get started. As a business or developer, you can also get a list of all created Account Holders with the Get Account Holders API.

API Reference

curl --location --request GET 'https://api.withmono.com/issuing/v1/accountholders' \
--header 'mono-sec-key: live_sk_EtJWxTkkQEQn0vPrg2wc' \
--data-raw ''
{
  "status": "successful",
  "message": "Account holders fetched",
  "data": [
    {
      "address": {
        "country": "nigeria",
        "lga": "ikeja",
        "city": "ikeja",
        "state": "lagos",
        "postal_code": "100001",
        "address_line1": "banana island",
        "address_line2": "banana island"
      },
      "phone": "111109030841956",
      "entity": "INDIVIDUAL",
      "identity": {
        "type": "NIN",
        "number": "1111:10111222112",
        "url": "https://mono-business-assets.s3.eu-west-2.amazonaws.com/identity-FunVlKB_OKMHuQFLCT5ek-test_1.png"
      },
      "bvn": "00000000000",
      "email": "[email protected]",
      "business": "6172811205af5c47a1f31e49",
      "app": "60ffd3fee03417c574fa1f55",
      "live": false,
      "created_at": "2021-12-08T22:21:40.428Z",
      "updated_at": "2021-12-08T22:21:40.428Z",
      "id": "61b12ff41f933f527efc6c90",
      "first_name": "ifeoluwa",
      "last_name": "olanipekun",
      "selfie_url": "https://mono-business-assets.s3.eu-west-2.amazonaws.com/identity-FunVlKB_OKMHuQFLCT5ek-test_1.png"
    }
  ],
  "meta": {
    "total": 5,
    "pages": 1,
    "previous": null,
    "next": null
  }
}

Step 2: Create a Virtual Card

Here, we will create a virtual card and assign it to an account holder. This request contains the account holder ID and the disposable field. If you’re creating a virtual card for one-time use, you can set the disposable as true.

API Reference

curl --location --request POST 'https://api.withmono.com/issuing/v1/cards/virtual' \
--data-raw '{
    "account_holder": "61a7363bc2d313658ce82d38",
    "disposable": false // optional
}'
{
  "status": "successful",
  "message": "Card creation is been processed",
  "data": {
    "id": "61bb3a0d5f53902db40eb478"
  }
}

📘

NOTES

  • Mono returns a card object upon creation, and sends the issuing.virtual_card_created webhook event.

Step 3: Get Card

With a virtual card already created, we can get detailed information about this card via the created card ID.

API Reference

curl --location --request GET 'https://api.withmono.com/issuing/v1/cards/61ad48adf9032a4fdd140d7f
{
  "status": "successful",
  "message": "Card fetched successfully",
  "data": {
    "disposable": false,
    "status": "active",
    "type": "virtual",
    "currency": "USD",
    "brand": "MASTERCARD",
    "created_at": "2021-12-05T23:18:05.813Z",
    "balance": 9950,
    "id": "61ad48adf9032a4fdd140d7f",
    "name_on_card": "olayinka isaiah",
    "card_number": "3hBAHD0OoWnnjgbcVQjWb6qe9ZmKe1fjZpL6o6Uj9ep1Ui5XUOhGMkZdl9wcSDwa",
    "cvv": "PVuWvPcnMWoMupj7H2XPqUByVAmUSwiITo+u9SGUSN0=",
    "card_pan": "536898******4934",
    "last_four": "05mK046JoLYM3D9baFMVhNN4J3RWcpanM2KUTHO1OYs=",
    "expiry_month": "L65M795eo7POa/kiIQs1rnqicawOqDd9Owmh6T3776s=",
    "expiry_year": "CIi3xAjYemEddUzcyDhcgJxWrcMBeJwR77fvLa7EWJI="
  }
}

Funding Virtual Cards

To fund a Live Virtual Card, you will only need to:

Fund Virtual Card

Proceed to make an API call to the Fund Virtual Card API to fund the desired card with the amount field parsed into the body request.

API Reference

curl --location --request POST 'https://api.withmono.com/issuing/v1/cards/61ad4c25a7fb0a544e4c5cc2/fund' \
--data-raw '{
    "amount":"50000"
}'
{
  "status": "successful",
  "message": "Virtual Card Funded Successfully"
}

📘

NOTE

Virtual card issuance fee will be taken from the USD wallet

Mock Card Transaction

In a sandbox environment, you can perform a mock amount on a Virtual card created in Sandbox via the ID.

API Reference

curl --location --request POST 'https://api.withmono.com/issuing/v1/cards/61b354e233b1ba7122226907/mocktransaction' \
--data-raw '{
    "amount": "20000"
}'
{
  "status": "success",
  "message": "Card Mock Transaction Sent Successfully"
}

📘

3D Secure OTP

The issuing.card_3d_secure_otp webhook event is sent when a card is used for transacting online payment with the OTP and Card ID in the payload.


Did this page help you?