Skip to main content

📄 Guide

If your user already completed KYC under the DeCard-Managed model and you now want to issue them a card under the Partner-Managed model, they do not have to submit their documents, selfie and address all over again — you can start a KYC information migration and let the user simply confirm the reuse of their existing data on a DCS-hosted H5 page. As a licensed card issuer, DCS verifies whether the source user’s KYC is eligible for reuse and, once it passes, attaches usable KYC information to the target user. Migration reuses the same two-step H5 KYC flow; the only differences are that the application mode is H5-MIGRATION, the guide page type is type=9, and the source user must be identified.

When to use it

Who does what

Interaction flow

A migration can be rejected. Once rejected the ticket is in a terminal state, so you must apply for a brand-new migration ticket to let the user retry — a terminal ticket cannot be reused.
KYC migration interaction flowKYC migration interaction flow

Step 1: Apply for the migration ticket (you)

POST /open-api/kyc-ticket/v1/apply-kyc-h5
The response returns the new ticket inside the common envelope’s data, with status set to INIT:
This step synchronously checks whether the source user is eligible for reuse. If not, no ticket is created and DAPI_KYC_MIGRATION_NOT_ELIGIBLE is returned (see the error codes below). In other words, once you have a kycTicketId the source user has already passed the pre-check and all that remains is the user’s confirmation on H5.
POST /open-api/card-redirect/v1/guidance-link
type=9 does not need profileId (that is required only for type=7, apply for KYC-H5).
The response data is a string — the H5 URL you hand to the user:
The H5 link has a limited lifetime. If it expires while the ticket is still INIT, call this endpoint again for a fresh link — you do not need to apply for a new ticket.

Step 3: Receive the result and retry if needed

Learn the outcome from the KYC_TICKET webhook or by calling GET /open-api/kyc-ticket/v1/detail yourself (with kycTicketId or kycTicketRef):
  • PASSED: the migration is complete, the target user now has usable KYC, and you can go on to issue a card (cardApplyMode=NORMAL, submitting that kycTicketId and customerId).
  • REJECTED: this migration was rejected; errorCode / errorMessage explain why. Go back to step 1 and apply for a new ticket with a new kycTicketRef.

Ticket status (migration mode)

In migration mode a ticket only ever takes these three statuses — NEED_VERIFY and PENDING do not occur:

Error codes

apply-kyc-h5 (kycApplyMode=H5-MIGRATION)

In addition to the common error codes listed on the H5 KYC guide page, migration mode can also return:

Prerequisites

  • You hold the Enterprise ApiKey / SecretKey — see First steps.
  • You have created the target user in this model and hold their customerId.
  • The source user has completed KYC under the DeCard-Managed model and you can obtain their externalUserId.
  • DCS has enabled migration for your channel (otherwise DAPI_KYC_MIGRATION_NOT_ELIGIBLE is returned — contact the DCS team).

Next steps