Virtual Cards (USD & NGN)

Learn how to issue virtual cards.


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 Details ➑

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 '' \
--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": ""
      "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": ""
  "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, the currency (which can be either usd or ngn) and the amount field for which the card will be funded immediately after the card has been created. Please note that the amount passed should be in the lowest denomination (e.g For USD 20, you would be passing 2000 cents instead).

API Reference ➑

curl --location --request POST '' \
--data-raw '{
    "account_holder": "61a7363bc2d313658ce82d38",
    "currency": "usd", // OR "ngn"
    "amount": 10000 // USD 100
  "status": "successful",
  "message": "Card creation is being processed",
  "data": {
    "id": "61bb3a0d5f53902db40eb478"



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

Step 3: Get Card Details

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 '
  "status": "successful",
  "message": "Card fetched successfully",
  "data": {
    "id": "630ba6ca8f77d1341fd412345",
    "disposable": false,
    "status": "active",
    "type": "virtual",
    "currency": "USD",
    "brand": "VISA",
    "name_on_card": "Daniel Alves",
    "balance": 3100,
    "created_at": "2022-08-28T17:32:58.756Z",
    "billing_address": {
      "country": "US",
      "street": "256 Chapman Road STE 105-4",
      "postal_code": "19702",
      "city": "Newark",
      "state": ""
    "card_number": "949eba2844880e33770307271ba960fe85f1df45398e98a6ccd0daf12345",
    "card_pan": "484224******1234",
    "cvv": "c11138bffee7e99e6c5c2c49f885bcbf1f25de5c2b633ade312345",
    "expiry_month": "7099ac2cdfeab891080a3ab9f3163da9e30715f12345",
    "expiry_year": "d6ec1967f2b16b9ecb918b69606ef93bf49be7f712345",
    "last_four": "d9512f70a9d7a3d3780a145340a8aa11f6f28693c512345",
    "account_holder": "61e05687f66f67be54321"



Kindly refer to our guide here to decrypt card information.

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 '' \
--data-raw '{
  "status": "successful",
  "message": "Virtual Card Funded Successfully"



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 '' \
--data-raw '{
    "amount": "20000"
  "status": "success",
  "message": "Card Mock Transaction Sent Successfully"