Card Suspension, Termination and Expiry

You can suspend or terminate a virtual card either through your Kora merchant dashboard or via API.

Suspending an issued card temporarily stops all transaction activities on the card. While the card holder will not be able to use the suspended card to make payments, refunds can still be processed on the card. A suspended card can be reactivated at any time.

When you terminate a card, you are permanently disabling all transaction activities on that card. This means that the card will no longer be usable for any transactions. Once a card is terminated, it cannot be reactivated, and any remaining balance on the card will be transferred back to your issuing balance. It is important to consider carefully before terminating a card, as it may have a significant impact on the cardholder and their ability to make future transactions.

Suspending and terminating a virtual card via the Kora dashboard

To suspend or terminate a virtual card, follow these steps:

  • Go to the list of issued cards and click on the card you want to suspend or terminate.
  • On the card details page, click "Manage Card" and select the option to suspend or terminate the card.
  • Once the virtual card is suspended or terminated, no payments can be made with it.
Suspending a virtual card

Activating and deactivating (suspending) a virtual card via API

Alternatively, you can also activate, deactivate (suspend), and even terminate a virtual card via API.

To activate or deactivate an issued card, make a PATCH request to the following endpoint:

{{baseurl}}/api/i/cards/:card_reference/status

When initiating the request, remember to pass the card_reference as a request parameter. The request body should also include:

FieldData TypeDescription
actionStringRequired - This is the action you want to perform on the card. It can be either one of activate or deactivate.
reasonStringRequired - This is the reason for the action.
initiatorStringOptional - This is the person who initiated the action.

Here's a sample request for a case where you want to activate a card:

{
    "action": "activate",
    "reason": "Cleared of fraud charges",
    "initiator": "Jane Doe"
}

And a response for the request would look like this:

{
    "status": true,
    "message": "Card activated successfully",
    "data": {
        "status": "active"
    }
}

A webhook notification will also be sent to your application when a virtual card is activated. The webhook notification response will look like this:

{
 "event": "card.active",
 "data": {
   "reference": "webhook unique reference",
   "card_reference": "876eeb6f-f6cb-562f-a5e8-48d91dec7999",
   "status": "active",
   "date": "2000-11-11T10:00:00"
 }
}

On the flip side, if you were to suspend or deactivate a card, the request could look like this:

{
    "action": "deactivate",
    "reason": "Fraudulent activities",
    "initiator": "Jane Doe"
}

The response to this request would be:

{
    "status": true,
    "message": "Card deactivated successfully",
    "data": {
        "status": "deactivated"
    }
}

Just like in the case of card activation, a webhook notification will also be sent to your application when a virtual card is deactivated/suspended. The webhook notification response will look like this:

{
 "event": "card.suspended",
 "data": {
   "reference": "webhook unique reference",
   "card_reference": "876eeb6f-f6cb-562f-a5e8-48d91dec7999",
   "status": "suspended",
   "date": "2000-11-11T10:00:00"
 }
}

Terminating a card via API

To terminate an issued card, make a PATCH request to the endpoint below:

{{baseurl}}/api/i/cards/:card_reference/terminate

Make sure to pass the card_reference as a request parameter when initiating the request. Other parameters for the request include:

FieldData TypeDescription
reasonStringRequired - This is the reason for the action.
initiatorStringRequired - This is the person initiating the request.

An example of the request would look like this:

{
    "reason": "Cardholder is no longer active",
    "initiator": "Janette Doe"
}

And the response:

{
    "status": true,
    "message": "Card terminated successfully",
    "data": {
        "status": "terminated"
    }
}

A webhook notification will also be sent to your application when a virtual card is terminated. The webhook notification response will look like this:

{
 "event": "card.terminated",
 "data": {
   "reference": "webhook unique reference",
   "card_reference": "876eeb6f-f6cb-562f-a5e8-48d91dec7999",
   "status": "terminated",
   "date": "2000-11-11T10:00:00"
 }
}

Card Expiration

Virtual cards expire once their validity period has elapsed. When a virtual card expires, a webhook notification is sent to your application. This notification response will look like this:

{
 "event": "card.expired",
 "data": {
   "reference": "webhook unique reference",
   "card_reference": "876eeb6f-f6cb-562f-a5e8-48d91dec7999",
   "status": "expired",
   "date": "2000-11-11T10:00:00"
 }
}