After you create an account holder and a balance account, you can start issuing cards. Cards can either be virtual or physical. Cards also have to be associated with a Visa or Mastercard pre-approved use case, called a scheme program. By default, Adyen handles the scheme program for you in the background.
PCI compliance
The scope for PCI compliance depends on your use case—the type of cards you'll issue and how the cards will be used. To know whether PCI compliance requirements apply to your use case, reach out to your Adyen contact.
Visual design for physical cards
Before you can create physical cards in the live environment, you must have a design for the card itself and the mailer it is sent in. Each card design must be approved by Visa or Mastercard.
Your Adyen contact will help you to complete and specify the designs.
Create a card
To issue a card, create a paymentInstrument resource. In the request, specify whether the card is:
- Virtual: A card that has no physical form. You receive the card details in the API response.
- Physical: A card that is printed and shipped to the user. You do not receive the card details in the API response. Sending a request to create a physical card also starts an order to manufacture the card.
When creating a physical card, you must include additional information, such as the card manufacturing profile and the delivery details.
To create a physical card, make a POST /paymentInstruments request specifying:
Parameter | Required | Description |
---|---|---|
type | ![]() |
The payment instrument type, set to card. |
balanceAccountId | ![]() |
The balance account ID that should be associated with the card. You can also update the balance account associated with a card at a later time as long as the card status is inactive. |
card.formFactor | ![]() |
The form factor of the card, set to physical. |
card.cardholderName | ![]() |
The name of the cardholder. |
card.brand | ![]() |
The card brand. |
card.brandVariant | ![]() |
The brand variant of the card. |
card.configuration | ![]() |
Object that contains the settings for the physical card, including design and the configurationProfileId. |
status | By default, cards are created with an active status. We recommended that you create physical cards with inactive status to keep them secure until they are delivered to the cardholder. |
In your request, you can also include optional parameters such as a human-readable description to help your staff differentiate between multiple cards under one balance account.
Here is how you would create a physical card linked to a balance account with id
BA1234123412341234. In this example, we create a card with inactive status.
curl https://balanceplatform-api-test.adyen.com/bcl/v2/paymentInstruments \
-H "x-API-key: YOUR_X-API-KEY" \
-H "content-type: application/json" \
-d '{
"type": "card",
"issuingCountryCode": "NL",
"balanceAccountId": "BA1234123412341234",
"status": "inactive",
"card": {
"formFactor": "physical",
"brand": "mc",
"brandVariant": "mcdebit",
"cardholderName": "Sam Hopper",
"deliveryContact": {
"address": {
"city": "Amsterdam",
"country": "NL",
"stateOrProvince": "NH",
"line1": "274 Brannan Street, Suite 600",
"line2": "50",
"postalCode": "1020CD"
},
"name": {
"firstName": "Sam",
"lastName": "Hopper"
}
},
"configuration": {
"configurationProfileId": "YOUR_CONFIGURATION_PROFILE_ID"
}
},
"description": "{hint:Your human-readable description for the card.}S. Hopper - Main card{/hint}"
}'
The response returns the paymentInstrument resource, identified by its unique id
.
{
"balanceAccountId": "BA1234123412341234",
"description": "S.Hopper - Main card",
"issuingCountryCode": "NL",
"status": "inactive",
"type": "card",
"card": {
"brand": "mc",
"brandVariant": "mcdebit",
"cardholderName": "Sam Hopper",
"configuration": {
"configurationProfileId": "YOUR_CONFIGURATION_PROFILE_ID"
},
"deliveryContact": {
"address": {
"city": "Amsterdam",
"country": "NL",
"stateOrProvince": "NH",
"line1": "274 Brannan Street, Suite 600",
"line2": "50",
"postalCode": "1020CD"
},
"name": {
"firstName": "Sam",
"lastName": "Hopper"
}
},
"formFactor": "physical",
"bin":"555544",
"expiration":{
"month":"08",
"year":"2024"
},
"lastFour":"1589"
},
"id": "PI3227C223222B5BPCMFXD2XG"
}
In the test environment, you can create physical cards but you will not receive them.
However, you will asynchronously receive updates about your physical card order:
- balancePlatform.cardorder.created: card order created.
- balancePlatform.cardorder.created: card order updated.
Adding multiple cardholders under one balance account
This use case is only allowed in specific circumstances. Check with your Adyen contact if this is a functionality you can use.
Some business cases require having multiple cards and cardholders under one balance account, for example when:
- Creating named cards for multiple employees in one company.
- Creating additional cards for a spouse or children.
In this case, only the main account holder must go through the verification process. After the verification is complete, you can start creating cards for additional cardholders by making another POST /paymentInstruments request.
Here is how you would create another virtual card linked to the same balance account BA1234123412341234 for a different cardholder:
curl https://balanceplatform-api-test.adyen.com/bcl/v2/paymentInstruments \
-H "x-API-key: YOUR_X-API-KEY" \
-H "content-type: application/json" \
-d '{
"type": "card",
"description": "{hint:Your human-readable description for this card}Supplementary card{/hint}",
"balanceAccountId": "BA1234123412341234",
"issuingCountryCode": "NL",
"card": {
"cardholderName": "Jean Hopper",
"brand": "{hint:Card scheme: mc or visa}mc{/hint}",
"brandVariant": "mcdebit",
"formFactor": "virtual"
}
}'
Adding authorised card users
In cases where a balance account belongs to an organization, you must set up at least one authorised card user for transactions on the linked card to be approved.
The account holder of the organization must go through the verification process. After the account holder completes the verification, you can create a legal entity of type
individual for an authorised card user by making a POST /legalEntities request. In your request, provide the following minimum required information:
individual.name.firstName
individual.name.lastName
individual.residentialAddress.сountry
individual.birthData.dateOfBirth
curl https://kyc-test.adyen.com/lem/v3/legalEntities \
-u "ws123456@Scope.BalancePlatform_YourBalancePlatform":"YourWsPassword" \
-H "content-type: application/json" \
-X POST \
-d '{
"type": "individual",
"individual": {
"residentialAddress": {
"country": "NL"
},
"name": {
"firstName": "Authorised",
"lastName": "Card User"
},
"birthData": {
"dateOfBirth": "1990-06-21"
}
}
}'
Once the legal entity of type
individual has been created, you can create a card for authorised card users by making a POST /paymentInstruments request. Add the id of the individual legal entity to the usedBy
array in the request, as in the following example. Note that you can add multiple authorised card users to one card within the usedBy
array.
Here is how you would create a virtual card linked to the balance account BA0000000000000001 for an authorised card user:
curl https://balanceplatform-api-test.adyen.com/bcl/v2/paymentInstruments \
-H "x-API-key: YOUR_X-API-KEY" \
-H "content-type: application/json" \
-d '{
"type": "card",
"description": "{hint:Your human-readable description for this card}Main company card{/hint}",
"balanceAccountId": "BA0000000000000001",
"issuingCountryCode": "NL",
"usedBy": [
"LE32274223222J5H9SXT66PXS"
],
"card": {
"cardholderName": "Company Name",
"brand": "{hint:Card scheme: mc or visa}mc{/hint}",
"brandVariant": "mcdebit",
"formFactor": "virtual"
}
}'
Physical cards in live environment
Before you can create live physical cards, you must have a design for the card itself and the mailer.
After you create a card, it is personalized, printed, and shipped with the information that you provided. If you need to stop a card from being personalized, update the status before it is sent to the manufacturer. Reach out to your Adyen contact to know the schedule for your balance platform.