Skip to main content

📄 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 the status field, and every management operation is really just a transition in this state machine.
Card state machineCard state machine
How FROZEN differs from BLOCKED: FROZEN is a reversible switch in the partner’s hands, while BLOCKED is a restriction imposed by the issuer or risk control for compliance or security reasons and only DCS can lift it. Neither is final; INVALID is the only final state.

Card status reason (statusReason)

While a card is FROZEN, 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 are POST 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.
Common sequence for card action callsCommon sequence for card action calls
About the response envelope: every endpoint returns the same envelope, { code, message, messageDetail, data }. code carries the result, message and messageDetail carry the display text (messageDetail can include a title, an icon and a link you can show to the end user), and data carries the business payload. For the success value of code and 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 the freeze boolean decides the direction. This is the easiest trap on this page, so do not treat them as two endpoints.
When freezeReason is 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 returns DAPI_CARD_UNFREEZE_DAILY_LIMIT_EXCEEDED, so retry the next day.
Request example (freeze):
Request example (unfreeze):
The example above is shown for completeness; an unfreeze request can carry nothing but 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 becomes INVALID and it can never be brought back into use.
The response 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 with type=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.
A successful response returns a card order. The key fields are:
Which order statuses to trust: in the current code, a card order succeeds with the final status COMPLETED and fails with FAILED, and whether cardId has been generated is a useful cross-check. Integrate against COMPLETED; some older apiReference pages still describe PENDING/SUCCEED/FAILED.

Card replacement flow

Card replacement flowCard replacement flow

Activate a physical card

Only physical cards need activation; a virtual card is ACTIVATED 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.
The alternative for partners without PCI certification, and the details of the two-step SecureToken retrieval, are covered in Get sensitive card data.

Resetting the PIN and revealing card credentials without PCI certification

A partner without PCI certification cannot call reset-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.
The endpoint returns a DCS-hosted guidance link that the partner passes to the cardholder to open in the front end. The full parameters and usage of the guidance page are described in Get sensitive card data.

Next steps

Issuing and maintaining cards is now covered end to end. Next you can: