Issue & Activate a Physical Card

Physical Cards differ from virtual Cards in two important ways: they require a cardType selecting a design slot, and they arrive in issuerCardStatus = 4 (Not Activated) — the Cardholder must activate the Card before it can be used for spending. This guide walks through issuance, the delivery window, activation, and initial PIN setup.

Prerequisites

  • The Cardholder must have status = 1 (Approved).
  • The Program must have at least design slot 0 approved (designStatus = 1). No physical Cards can be issued until a default design is approved — see Card Programs & Card Designs.
  • If issuing to a specific non-default design slot, that slot's design must also be approved.

Step 1: Issue the physical Card

POST /cards/assign/{cardholderId}

Request fields

FieldRequiredTypeConstraintsNotes
nameOnCardYesstring1–26 charsName embossed or printed on the physical Card during personalization — typically FIRSTNAME LASTNAME in uppercase
cardTypeYesinteger enum05Selects the Card Design slot. 0 = the Program's default design (and the default value if omitted). Slots 15 require that design slot to have designStatus = 1 (Approved).
aliasNostringInternal display alias for distinguishing between multiple Cards
transactionLimitNointegerDecimal-implied integer; cannot exceed Cardholder's limitCard-level spending ceiling
callingCode, countryCallingCode, phoneNum, cellNum, emailAdrNoCard-level contact details; defaults to Cardholder's if not set

Example request

{
  "nameOnCard": "JORDAN REYES",
  "cardType": 0,
  "alias": "Primary Card",
  "transactionLimit": 200000
}

transactionLimit: 200000 = $2,000.00 in a USD-denominated Program.

Response

{
  "status": "success",
  "cardId": 9104,
  "type": "physical",
  "maskedCardNumber": "************5678",
  "cryptoAddresses": [
    { "chain": "evm",     "address": "0xA3f8d5Bc6534C0412925a9b7D3C8Z8e..." },
    { "chain": "bitcoin", "address": "bc1pxy3kgdygjrsqtzq2n0yrf249..." },
    { "chain": "solana",  "address": "9FqRdEVLxntMjTnxHhq2p0RwQ..." }
  ]
}

The Card is now in cardStatus = 1 (Approved) and issuerCardStatus = 4 (Not Activated). Physical fulfillment begins immediately — the Card will be personalized and shipped by Axys's fulfillment partner.

📘

Crypto Deposit Addresses are live immediately. Even though the Card cannot be used for spending until activated, its cryptoAddresses are active from this moment. A Cardholder can fund a physical Card via crypto deposit before the Card physically arrives.


Step 2: The delivery window

While the card is in transit (issuerCardStatus = 4):

  • You can query the card's status with GET /cards/{cardId}/status — it will return issuerCardStatus: 4 until the cardholder activates it.
  • The card cannot be used for point-of-sale, ATM, or online transactions.
  • The card can receive digital-asset deposits via its cryptoAddresses.
  • You can apply a bank-rail deposit via trace notification if the cardholder funds it before arrival.

Typical delivery timelines depend on the cardholder's country and the Program's fulfillment configuration — confirm with your Axys account team.


Step 3: Activate the card

PUT /cards/{cardId}/activate

The Cardholder presents the details printed on their physical Card, plus chooses a new PIN:

FieldRequiredTypeConstraintsNotes
cardNumberYesstring16 digitsThe full PAN from the physical Card
expMonthYesstringMM formatExpiry month printed on the Card
expYearYesstringYearExpiry year printed on the Card
cvvYesstring3 digitsCVV/CVC printed on the reverse
newPinYesstring4 digitsThe PIN the cardholder is setting

Building an activation flow

Design your activation UX to gather these five fields from the Cardholder directly (e.g., a mobile or web form). The PAN/expiry/CVV/CVC serve as proof that the Cardholder has physical possession of the Card.

🚧

Handle activation inputs on the client, not the server, where possible. PAN, CVV/CVC, and PIN are the most sensitive fields in the entire API. If your architecture routes the activation form through your own backend, that backend is in-scope for PCI-DSS. Consider whether a direct client-to-API pattern (with the mTLS certificate held server-side but the sensitive fields collected client-side and transmitted directly) reduces your compliance surface. Discuss with your QSA.

Response

{
  "status": "success",
  "newStatus": 1
}

newStatus: 1 confirms the Card is now issuerCardStatus = 1 (Active) and ready for use.

❗️

Activation is one-way. There is no "undo" — a Card cannot be returned to issuerCardStatus = 4 (Not Activated) after activation. To temporarily suspend a Card, use PUT /cards/{cardId}/status with newStatus = 2 (On Hold). To permanently close a Card, see Manage the Card Lifecycle.


Step 4: Verify the card is active

GET /cards/{cardId}/status
{ "issuerCardStatus": 1 }

The Card is now Active. The Cardholder can use it immediately for point-of-sale and online transactions, subject to the Card's balance and transaction limits.


Comparing virtual and physical card issuance

Virtual (POST /cards/virtual/{cardholderId})Physical (POST /cards/assign/{cardholderId})
cardType required?NoYes
Immediately active?YesNo — issuerCardStatus = 4 until activated
Activation step?NonePUT /cards/{cardId}/activate required
Crypto Deposit Addresses live immediately?YesYes
Physical fulfillment?NonePersonalized and shipped
PIN set at issuance?NoNo — set during activation

What's next


Did this page help you?