Activate a card
Last updated: December 10, 2025
The following cards must be activated before the cardholder can perform transactions:
- Newly created physical cards
- Virtual cards created using the API with
"activate_card": false - Suspended cards
You can activate cards using:
The cardholder can activate the card in the following ways:
- Performing their first Chip and PIN transaction at a point of sale (PoS) – This also enables the card for contactless payments.
- Withdrawing cash from an ATM
The cardholder can access the card's personal identification number (PIN) in your mobile app, using the Android or iOS Card Management SDK. Alternatively, you can send them the PIN via mail.
Note
Cardholders cannot make contactless payments until after they perform a Chip and PIN transaction, even if the card is already successfully activated.
You must have one of the following user roles:
- Admin
- Support manager
- A custom role with the
Create and edit cards and cardholders; Simulate transactionspermission
- Sign in to the Dashboard.
- Go to Issuing > Cards.
- Select the card you want to activate.
- In the Card details page, select Activate card.
Call the Activate a card endpoint, and provide the card ID prefixed with crd_ as the {cardId} path parameter.
post
https://api.checkout.com/issuing/cards/{cardId}/activate
1{2"_links": {3"self": {4"href": "https://api.checkout.com/issuing/cards/crd_fa6psq42dcdd6fdn5gifcq1491"5},6"revoke": {7"href": "https://api.checkout.com/issuing/cards/crd_fa6psq42dcdd6fdn5gifcq1491/revoke"8},9"suspend": {10"href": "https://api.checkout.com/issuing/cards/crd_fa6psq42dcdd6fdn5gifcq1491/suspend"11}12}13}
After you've integrated the Card Management Android SDK or iOS SDK, you can activate your cardholder's cards in your mobile app.
Follow these steps:
- Call the
getCards()method to get a list of the cardholder's cards:
Note
The getCards() method throws a CardManagementError which you must catch. For example, using catch (as in the example) or runCatching.
Note
From SDK version 3.0.0, all callback methods are deprecated. Update your integration to use suspending methods instead.
1// coroutineBased getCards which should be called in the context of a coroutineScope2try {3cardManager.getCards()4} catch (e: CardManagementError) {5when (error) {6is CardManagementError.Unauthenticated -> // Prompt sign in7is CardManagementError.ConnectionIssue -> // Show network error8else -> // Handle other errors9}10}1112// DEPRECATED using callbacks13cardManager.getCards { result: Result<List<Card>> ->14result.onSuccess {15// You receive a list of cards that you can display in your UI16// Returned card details include last four digits of the PAN, expiry date, cardholder name, card status, and card ID17}.onFailure {18// If something goes wrong, you receive an error with more information19}20}
- Call the
Card.possibleStateChanges()method to request the possible statuses you can change the card to:
Note
From SDK version 3.0.0, all callback methods are deprecated. Update your integration to use suspending methods instead.
1// Returns a list of possible statuses you can change the card to2val possibleNewStates = card.possibleStateChanges34// You can activate the card if the status was returned by possibleStateChanges5if (possibleNewStates.contains(CardState.ACTIVE)) {6<coroutineScope> {7val result = card.activate()8handleCardStateTransition(result)9}1011// DEPRECATED using callbacks12card.activate(completionHandler)13}
- Complete the change to
activestatus:
1fun cardStateChangeCompletionHandler(result: Result<Unit>): Unit {2result3.onSuccess {4// The card status is successfully updated and reflected by both the back end and the SDK5}.onFailure {6// If something goes wrong, you receive an error with more details7}8}
You can set up webhooks to be notified when cards are activated: