Create card
POST
https://api.light.inc/v1/cards
Creates a new card. Use metadata type 'VENDOR' for vendor cards or 'EMPLOYEE' for employee cards.
Creation is synchronous with the card issuer: the response is the finished card, and a virtual card comes back ACTIVE and ready to use. A physical card is activated by POST /v1/cards/{cardId}/unfreeze once the cardholder has it. Preconditions, all 400: the balance account is active (CARD_BALANCE_ACCOUNT_NOT_ACTIVE), its entity is set up for cards (COMPANY_ENTITY_NOT_ACTIVE_ON_CARDS), and ownerId is an active user (CARD_CREATION_OWNER_NOT_RECOGNIZED). With metadata.type = VENDOR the vendor must exist and be linked to that entity (CARD_CREATION_VENDOR_NOT_RECOGNIZED); with EMPLOYEE nothing further is validated. Two limits with the same interval fail with CARD_CREATION_CONFLICTING_LIMITS. formFactor defaults to VIRTUAL.
Send an X-Idempotency-Key header: a retry with the same key returns the existing card, while a retry without one issues a second card. threeDs.password is generated by Light and always returned masked as ****. Not available in the sandbox.
Authorization
Send one of these on every request. See Authentication for how to get credentials.
- API key
Basic authentication header of the form Basic <api_key>, where <api_key> is your api key.
- Bearer token
Headers
-
X-Idempotency-Keystring
Request body
application/json;charset=UTF-8
-
balanceAccountIdstring · uuidID of the card balance account to associate with this card.
-
ownerIdstring · uuidID of the user who will own/manage this card.
-
metadataobjectCard type metadata. Use type 'VENDOR' with vendorId for vendor cards, or type 'EMPLOYEE' with employeeId for employee cards.
-
typestring⚠️ This enum is not exhaustive; new values may be added in the future.
One of
VENDOREMPLOYEE
-
-
descriptionstringOptional description or memo for this card.
-
authenticationobject3D Secure authentication details for the card. Required for Light-issued cards, ignored for external providers.
-
phoneNumberobject-
countryCodestring⚠️ This enum is not exhaustive; new values may be added in the future.
One of
UNDEFINEDACADAEAFAGAIALAMANAOAQARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBUBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCPCRCSCUCVCWCXCYCZDEDGDJDKDMDODZEAECEEEGEHERESETEUEZFIFJFKFMFOFRFXGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTHUICIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNTNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSESFSGSHSISJSKSLSMSNSOSRSSSTSUSVSXSYSZTATCTDTFTGTHTJTKTLTMTNTOTPTRTTTVTWTZUAUGUKUMUSUYUZVAVCVEVGVIVNVUWFWSXIXUXKYEYTYUZAZMZRZW -
localNumberstringThe number without the country code.
-
-
emailstringEmail address for 3D Secure authentication.
-
-
limitsarray of objectOptional spending limits for this card.
-
amountinteger · int64Spending limit amount in minor units (e.g., cents).
-
currencystring -
intervalstringInterval for the spending limit (PER_TRANSACTION, WEEKLY, or MONTHLY).
⚠️ This enum is not exhaustive; new values may be added in the future.
One of
PER_TRANSACTIONWEEKLYMONTHLY
-
-
formFactorstringCard form factor. Defaults to
VIRTUALwhen omitted.PHYSICALships a plastic card and requiresdeliveryContactto be set.VIRTUALmust be sent withdeliveryContactleft null. Mismatches are rejected withPHYSICAL_CARD_DELIVERY_CONTACT_REQUIREDorVIRTUAL_CARD_DELIVERY_CONTACT_NOT_ALLOWED.⚠️ This enum is not exhaustive; new values may be added in the future.
One of
PHYSICALVIRTUAL -
deliveryContactobjectRecipient and address used by the card issuer to ship the physical card. Only
addressandnameare required.-
addressobjectPostal address the card is shipped to. Country must be an ISO 3166-1 alpha-2 code;
stateOrProvinceis required for US and CA destinations. An address the card issuer rejects comes back asCARD_PROVIDER_REJECTED_FIELDwithpathpointing at the offending field.-
streetstringStreet name (maps to Adyen
address.line1). -
houseNumberOrNamestringHouse number, building, apartment, or suite (maps to Adyen
address.line2). -
citystringCity.
-
postalCodestringPostal or ZIP code in the delivery country's own format; separators such as spaces and dashes are optional. Max 10 characters, or 5 digits for
US. The card issuer validates the format and rejects a code that doesn't match the destination country. -
countrystringISO 3166-1 alpha-2 country code (e.g.
DK,US,GB).⚠️ This enum is not exhaustive; new values may be added in the future.
One of
UNDEFINEDACADAEAFAGAIALAMANAOAQARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBUBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCPCRCSCUCVCWCXCYCZDEDGDJDKDMDODZEAECEEEGEHERESETEUEZFIFJFKFMFOFRFXGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTHUICIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNTNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSESFSGSHSISJSKSLSMSNSOSRSSSTSUSVSXSYSZTATCTDTFTGTHTJTKTLTMTNTOTPTRTTTVTWTZUAUGUKUMUSUYUZVAVCVEVGVIVNVUWFWSXIXUXKYEYTYUZAZMZRZW -
stateOrProvincestringState, province, or region. Required when
countryisUSorCA; requests without it are rejected withPHYSICAL_CARD_STATE_OR_PROVINCE_REQUIRED. Optional for other countries.
-
-
nameobjectName printed on the shipping label.
-
firstNamestringRecipient first name.
-
lastNamestringRecipient last name.
-
-
companystringCompany or department name on the shipping label.
-
emailstringContact email for delivery notifications.
-
phoneNumberobject-
countryCodestring⚠️ This enum is not exhaustive; new values may be added in the future.
One of
UNDEFINEDACADAEAFAGAIALAMANAOAQARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBUBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCPCRCSCUCVCWCXCYCZDEDGDJDKDMDODZEAECEEEGEHERESETEUEZFIFJFKFMFOFRFXGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTHUICIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNTNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSESFSGSHSISJSKSLSMSNSOSRSSSTSUSVSXSYSZTATCTDTFTGTHTJTKTLTMTNTOTPTRTTTVTWTZUAUGUKUMUSUYUZVAVCVEVGVIVNVUWFWSXIXUXKYEYTYUZAZMZRZW -
localNumberstringThe number without the country code.
-
-
-
providerIdstringIssuer-supplied card ID, for external (non-Adyen) cards only. Prefer sending this when known, since it makes repeat imports idempotent. A synthetic ID is generated when omitted. Ignored for cards on an Adyen-backed balance account.
-
lastFourstringLast four digits of the card number, for external (non-Adyen) cards only. Required when the balance account is external. Ignored for cards on an Adyen-backed balance account.
-
cardholderNamestringName embossed on the card, for external (non-Adyen) cards only. Required when the balance account is external. Ignored for cards on an Adyen-backed balance account.
Response
-
idstring · uuid -
companyEntityIdstring · uuid -
companyIdstring · uuid -
ownerIdstring · uuid -
cardBalanceAccountIdstring · uuid -
formstring⚠️ This enum is not exhaustive; new values may be added in the future.
One of
PHYSICALVIRTUAL -
statusstring⚠️ This enum is not exhaustive; new values may be added in the future.
ACTIVE,FROZEN,CLOSED, or the transientUPDATE_IN_PROGRESSwhile a freeze or unfreeze is being applied at the issuer.One of
ACTIVEFROZENCLOSEDUPDATE_IN_PROGRESS -
metadataobject-
typestring⚠️ This enum is not exhaustive; new values may be added in the future.
One of
VENDOREMPLOYEE
-
-
threeDsobject-
phoneNumberobjectMay be
null.-
countryCodestring⚠️ This enum is not exhaustive; new values may be added in the future.
One of
UNDEFINEDACADAEAFAGAIALAMANAOAQARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBUBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCPCRCSCUCVCWCXCYCZDEDGDJDKDMDODZEAECEEEGEHERESETEUEZFIFJFKFMFOFRFXGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTHUICIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNTNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSESFSGSHSISJSKSLSMSNSOSRSSSTSUSVSXSYSZTATCTDTFTGTHTJTKTLTMTNTOTPTRTTTVTWTZUAUGUKUMUSUYUZVAVCVEVGVIVNVUWFWSXIXUXKYEYTYUZAZMZRZW -
localNumberstringThe number without the country code.
-
-
passwordstring -
emailstring
-
-
descriptionstring -
binstring -
lastFourstring -
cardholderNamestring -
limitsarray of object-
idstring · uuid -
companyIdstring · uuid -
cardIdstring · uuid -
amountinteger · int64 -
currencystring -
intervalstring⚠️ This enum is not exhaustive; new values may be added in the future.
One of
PER_TRANSACTIONWEEKLYMONTHLY -
createdAtstring · date-time -
updatedAtstring · date-time
-
-
createdAtstring · date-time -
updatedAtstring · date-time -
typestring⚠️ This enum is not exhaustive; new values may be added in the future.
One of
VENDOREMPLOYEE