Skip to main content

📄 Overview

Once a user has passed KYC, a single API call issues them a virtual card they can spend online immediately, and they can order a physical card afterwards if they want one. As a licensed issuer with its own BINs, DCS handles card issuing, KYC review, authorization decisions and settlement; all you deal with is how to submit the application, how to check its status, and what to do once the card exists. DCS supports two card forms:
  • Virtual card: no physical medium. It is activated automatically once the application is approved and can be spent online right away.
  • Physical card: shipped to the user, and must be activated and given a PIN on arrival before it can be used.
Virtual cards fall into two usage patterns: single-use virtual cards (void after one transaction, the most secure option, suited to one-off payments) and reusable virtual cards (usable repeatedly until the card expires, normally with per-transaction and cumulative limits). Neither can be swiped in a physical store or used at an ATM. Which pattern applies is determined by the card product (categoryId), so confirm it with DCS before you start issuing.

Prerequisites

  • The user has registered and has an account (see Signing Up a Customer).
  • The KYC material is complete: the Sumsub shareToken, any required POA documents, and employment and source-of-funds information.

Two ways to apply

The two options coexist; pick one:
The DeCard-Managed model has no direct “order physical card” API. Ordering, activating and setting the PIN on a physical card all happen through the H5 hosted guidance page (see the physical card section below). There is no physical-card/apply endpoint and no virtual-to-physical conversion endpoint.

The application flow at a glance

Virtual card application and status tracking flowVirtual card application and status tracking flow
The OPEN-API path has only two steps: submit the application, then poll until it reaches a terminal state (you can also receive the outcome by webhook):
Virtual card application sequence over OPEN-APIVirtual card application sequence over OPEN-API
If you need to submit a POA document with the application, complete these three steps first:
  1. Call POST /account/v1/generate-file-upload-prepare to obtain a pre-signed upload URL and an objectKey;
  2. PUT the POA file straight to the URL you were given;
  3. Put the objectKey into the POA fields of the application request (see the field table below).

Applying for a virtual card

Option 1: embedded H5 guidance page

Call POST /redirect/v2/guidance-link with action set to KYC_GUIDE to obtain a guidance page URL. Open it in your frontend and DCS walks the user through KYC and card issuing. For the parameters and rendering options, see H5 KYC / Card Application Guidance Page.

Screenshots of the H5 application flow

The two sets of screenshots below show the full experience of applying for a virtual card through the H5 guidance page, so you can preview what the pages look like. KYC vendor verification (the user completes each identity verification step inside the guidance page):
POA collection during KYC (the user fills in and submits proof of address and other supporting information inside the guidance page):

Option 2: OPEN-API

Call POST /card/v1/virtual-card/apply to submit the application directly, KYC material included. Request fields:
Treat the field lengths above as indicative; the validation errors returned by a live call are the safer reference. Do not carry over the length rules from any other solution.
Request example (placeholders, no real data):
Response fields (data): Successful response example (masked):
Failure response example (masked):
Every response uses the envelope { code, message, messageDetail, data } and there is no success boolean. code = SYS_SUCCESS only means the request was accepted; the business outcome is in data.status.

POA file exchange

POA (proof of address) documents are exchanged through a pre-signed upload; you never post the file to the card issuing endpoint. Three steps:
  1. Call POST /account/v1/generate-file-upload-prepare with the body { "fileNames": ["<your-file-name>"] } to obtain an upload address (a pre-signed URL) and an objectKey for each file.
  2. From your server, PUT the POA file to the pre-signed url you were given.
  3. Pass the returned objectKey back as an element of poaDocUrlList on the card issuing endpoint (or on a later KYC top-up endpoint).
Each item in the returned data array carries fileName (the original file name), url (the pre-signed upload address) and objectKey (the server-side object key you send back). Upload example (Java, placeholder pre-signed URL, no PII):
The pre-signed URL accepts a PUT upload, so use HttpPut.

Ordering a physical card (H5 guidance page)

Ordering, activating and setting the PIN on a physical card all run through POST /redirect/v2/guidance-link, which returns the URL of the matching H5 page for your frontend to open so the user can finish the job. There is no direct API. For the guidance page parameters, see H5 KYC / Card Application Guidance Page. Ordering a physical card (action=CREATE_PHYSICAL_CARD; the user fills in the shipping details inside the guidance page and submits):
Activating a physical card (action=ACTIVE_PHYSICAL_CARD; the user activates the card inside the guidance page once it arrives):
The full instructions for setting and updating a PIN live in Managing a Card’s PIN and are not repeated here.
For shipping lookups and card status, see Managing Cards · Overview and Physical Card Shipping.

Application status

Virtual card application statuses (the status field on /card/v1/apply-list and on the application response):
In the DeCard-Managed model, a card application ends in either SUCCEED or FAILED.

needExtraInfo

needExtraInfo, on the application response and on the application record, tells you whether the user still has to supply more information:

Checking application status

After submitting an application, use these two endpoints to close the loop. Keep applyId (the application) and cardId (the card) apart.

Card statuses (for reference)

Cards have two sets of status values, defined in one place in Managing Cards · Overview. They are listed here for convenience only; the Overview page is authoritative across the documentation:
  • cardStatus (overall card status): NORMAL / FROZEN / CANCELLED
  • physicalCardStatus (physical card status): UN_APPLY / INACTIVE / ACTIVE / REPLACE / FROZEN / CANCELLED

Once you have the card

  1. When the application returns status=SUCCEED, data.cardId is ready to use; a virtual card needs no activation and is usable the moment it is issued.
  2. Use cardId with GET /card/v2/detail to read the card status and the balances tied to it (see Managing Cards · Overview).
  3. To show the full PAN or CVV, send the end user through the hosted guidance page (action=CARD_INFO); see Viewing Encrypted Card Details.
  4. If a physical card is wanted, run the H5 guidance pages in order: CREATE_PHYSICAL_CARD → ACTIVE_PHYSICAL_CARD → UPDATE_PIN (see the physical card section above).

Next steps