📄 Guide
Once a card is issued it has to be maintained for the rest of its life: the cardholder may want to freeze it for a while, terminate it after losing it, activate the physical card when it arrives, or reset a forgotten PIN. Whether the request comes from an operator in your back office or from the cardholder tapping a button in your app, the same/open-api/card/v1/ endpoints let you address one specific card by cardId and act on it.
As a licensed issuer with its own BIN, DCS keeps the underlying state in sync with the card network and the issuing processor. You only have to reason about the business semantics: what state this card is in, and what may be done to it.
Prerequisite: you need a successfully issued card and its cardId. If you are not sure how to apply for one, read Card issuing first.
Mental model: the card state machine
DCS expresses the life cycle of a card in thestatus field, and every management operation is really just a transition in this state machine.
How FROZEN differs from BLOCKED:FROZENis a reversible switch in the partner’s hands, whileBLOCKEDis a restriction imposed by the issuer or risk control for compliance or security reasons and only DCS can lift it. Neither is final;INVALIDis the only final state.
Card status reason (statusReason)
While a card isFROZEN, BLOCKED or INVALID, the statusReason returned by the card detail endpoint tells you why it got there, which you can use to explain the situation to the cardholder or to decide what to do next.
Operations at a glance
Apart from the query endpoints, all of the endpoints below arePOST and all sit under /open-api/card/v1/. For the authentication headers, the signature and the response envelope, see Authentication and security.
most of the operations above live under
/open-api/card/v1/. Card replacement belongs to the card order domain, /open-api/card-order/v1/replace, and is covered in Card replacement (reissue) below.Common call sequence for card operations
Freeze, unfreeze, terminate and the other action endpoints all follow the same sequence: the partner receives the cardholder’s request, calls the matching endpoint, and returns the result.About the response envelope: every endpoint returns the same envelope,{ code, message, messageDetail, data }.codecarries the result,messageandmessageDetailcarry the display text (messageDetailcan include a title, an icon and a link you can show to the end user), anddatacarries the business payload. For the success value ofcodeand the full error code dictionary, see Authentication and security.
Query card detail
Returns the card status,
statusReason, card type, panFirst6 (the first six digits of the card number), panLast4 (the last four digits) and similar data. It does not return the full card number, the CVV or any other sensitive data (for that, see “Get sensitive card data” below).
Freeze and unfreeze
Freeze and unfreeze are the same endpoint, and thefreeze boolean decides the direction. This is the easiest trap on this page, so do not treat them as two endpoints.
WhenRequest example (freeze):freezeReasonis required: only when freezing (freeze=true). When unfreezing (freeze=false) the server does not read the field, so it is ignored whether you send it or leave it out. Unfreezing the same card is rate-limited per day; exceeding it returnsDAPI_CARD_UNFREEZE_DAILY_LIMIT_EXCEEDED, so retry the next day.
cardId and freeze=false.
The response data returns the whole card object as it stands after the operation (the same structure as Query card detail), with status now FROZEN or ACTIVATED.
the
freeze endpoint only moves a card between ACTIVATED and FROZEN. A BLOCKED card was blocked by the issuer or by risk control, the partner cannot release it through this endpoint, and DCS has to be contacted.Termination
Termination is irreversible. Once a card is terminated its status becomesINVALID and it can never be brought back into use.
data returns the terminated card object, with status = INVALID.
Card replacement (reissue)
When a cardholder’s card is lost, damaged or otherwise has to be swapped, you can raise a card replacement (reissue) order against an existing card: the old card is voided and a new one is issued. A replacement creates a card order withtype=REPLACEMENT.
Hard rules for card replacement:
- The replacement is always a virtual card. Both virtual and physical cards can be replaced, but the new card is always virtual. If the cardholder still needs a physical card, run virtual-to-physical again after the replacement completes.
- Card replacement is rate-limited within a 24-hour window; exceeding it returns
DAPI_REPLACE_CARD_APPLY_LIMIT_EXCEEDED, so back off before retrying.- The card number (PAN) changes. This differs from virtual-to-physical, where the PAN is preserved: a replacement issues a brand-new PAN. Remind the cardholder to update any stored auto-debits, subscriptions and card-on-file details with merchants.
Which order statuses to trust: in the current code, a card order succeeds with the final statusCOMPLETEDand fails withFAILED, and whethercardIdhas been generated is a useful cross-check. Integrate againstCOMPLETED; some older apiReference pages still describePENDING/SUCCEED/FAILED.
Card replacement flow
Activate a physical card
Only physical cards need activation; a virtual card isACTIVATED as soon as it is issued. A physical card sits in PENDING_ACTIVATION from the moment it is shipped, and the partner calls this endpoint once the cardholder has it in hand.
The response
data returns the card object with status moved from PENDING_ACTIVATION to ACTIVATED. For how a physical card is applied for and shipped, see Physical card.
Get card shipping information
Once a physical card has shipped you can look up the tracking number and show the cardholder how the delivery is progressing.Reset PIN
reset-pin sets the PIN of a physical card. To meet PCI requirements, every sensitive field (the card’s expiry date, the CVV2, the last four digits of the card number and the new PIN) must be encrypted with AES/GCM before it is sent, and the request must carry the iv used for that encryption.
This endpoint is only open to partners that hold PCI certification. If you do not, use the guidance page instead (see “Resetting the PIN and revealing card credentials without PCI certification” below).
The response
data is a boolean; true means the reset succeeded.
Encryption algorithm (AES/GCM/NoPadding): use the enterprise secret (enterpriseSecret) as the AES key, generate a random 12-byte IV (Base64 encoded) for every call, and use a 128-bit authentication tag. Reference implementation:
For the concepts behind the PIN, what a PIN and a CVV are each for and when they are needed, see Virtual card.
Get sensitive card data
retrieve-secure-card returns the full card number (pan), the cvv2 and the expiry date (expireDate). The values come back encrypted and are decrypted with the iv using the same AES/GCM algorithm as above.
This endpoint is only open to partners that hold PCI certification. The decrypted plaintext should be shown to the cardholder directly in the front end and must not be persisted anywhere in the partner back end.
Resetting the PIN and revealing card credentials without PCI certification
A partner without PCI certification cannot callreset-pin or retrieve-secure-card directly and should use the guidance page instead: a DCS-hosted page takes the cardholder through setting the PIN or revealing the card credentials, so the sensitive data never touches the partner’s systems.
Next steps
Issuing and maintaining cards is now covered end to end. Next you can:- Configure spending limits, see Card limits (velocity limits);
- Handle the real-time authorization raised when a cardholder pays, see Authorization forwarding.

