Reusable RealID Integration Guide

Reusable RealID enables the reuse of user KYC data between merchants that have established a sharing partnership. The merchant that provides the data is the Donor, and the merchant that receives and uses the data is the Recipient. A merchant can act as both a Donor and a Recipient, forming a mutual data provision and reception relationship.

This document is intended for integration developers. It covers pre-integration preparations, mode selection, API call sequences, and sources of key fields.

Pre-Integration Requirements

Before starting integration, ensure the following requirements are met:

  1. An effective KYC sharing partnership must be established between the Donor and the Recipient. A valid agreement is required as proof. Once confirmed, ZOLOZ will configure the partnership in the system.
  2. The Donor must have the ShareToken creation permission enabled. Contact ZOLOZ technical support to enable this.
  3. The Recipient must have completed product purchase and have the Reusable RealID permission enabled.
  4. The Donor must obtain the Recipient's API clientId to create a targeted ShareToken. This value typically starts with 2188 (e.g., 2188499706886568).
  5. The Donor must have completed a successful standard RealID verification and attached the verification data to the corresponding Applicant.

Capabilities and Permissions

Capability

Caller

Activation Requirement

Billing

Applicant Management

Merchant owning the Applicant

No separate activation required

Free of charge

ShareToken Creation

Donor

Donor permission required

Free of charge

Reusable RealID (SDK Mode)

Recipient

Recipient permission + Reusable RealID product permission required

Billed per product rules

Applicant Data Isolation

  • Applicants are isolated by merchant. Each merchant can only manage Applicants under their own account.
  • Other merchants cannot access any data under an Applicant, even if they obtain the applicantId or userId.
  • After a successful reuse:
    • If no Applicant exists under the Recipient for the given userId, the system automatically creates a new Applicant.
    • If an Applicant already exists, the reused KYC data is merged into the existing Applicant.
  • The Applicant is independently managed by the Recipient. Subsequent operations (query, update, delete, etc.) are controlled solely by the Recipient.

Choosing an Integration Mode

The Recipient can choose one of the following integration modes based on business scenarios:

Mode

Target Platform

Re-capture Document Required?

Re-capture Face Required?

Interaction Method

Native SDK

iOS / Android App

No

Yes

Server initializes, then the mobile app loads the ZOLOZ SDK interface. The user completes face capture, and the server polls for results.

H5 SDK

Mobile H5

No

Yes

Server initializes, then the H5 page loads the ZOLOZ SDK interface. The user completes face capture, and the server polls for results.

Both SDK modes are suitable for scenarios that require user participation in face liveness detection (e.g., login verification, high-risk operation confirmation). Both SDKs share the same set of APIs (initialize + checkresult). The main differences in the initialize request parameters are:

  • Different flowType values.
  • Different ways of passing the metaInfo and h5ModeConfig parameters.

Complete Integration Flow

Step 1: Donor Prepares and Authorizes Data

The Donor must first create an Applicant, complete standard RealID verification, attach the data, and finally generate a ShareToken and securely deliver it to the Recipient.

Step

API / Action

Key Input Parameters

Result

1

v1.zoloz.applicant.create

Donor-side stable and unique userId

applicantId

2

Complete standard RealID verification

Follow standard RealID integration flow

Successful RealID transactionId

3

v1.zoloz.applicant.attach

applicantId, standard RealID transactionId

Verification data attached successfully

4

v1.zoloz.applicant.query(optional)

applicantId or userId

Confirm shareable data exists under the Applicant

5

v1.zoloz.sharetoken.create

applicantId, Recipient's recipientClientId

shareToken, expireTime

6

Deliver ShareToken server-side

Use a secure server-side channel

Recipient receives the shareToken

Note: The recipientClientId is the API clientId used by the Recipient to authenticate calls to the ZOLOZ OpenAPI. It is provided by the Recipient to the Donor. It is not a user ID, Applicant ID, or a business serial number generated by the merchant.

Step 2: Integration Methods for Different Modes

Recipient Using Native SDK

  1. Call v1.zoloz.realid.reusable.initialize with the shareToken, Recipient-side userId, flowType=REUSABLE_REALIDLITE_KYC, and pass through the metaInfo generated by the Native SDK.
  2. Save the transactionId from the response. Use the clientCfg from the response to configure and load the Native SDK interface.
  3. The user completes face capture in the SDK interface. ZOLOZ automatically performs liveness detection and face matching.
  4. Use the transactionId returned from initialize to call v1.zoloz.realid.reusable.checkresult to poll for results.
  5. After successful reuse, the system automatically creates a new Applicant if none exists under the Recipient for the userId, or merges the reused KYC data into the existing Applicant if one already exists. The Recipient can then query the data using the userId from the initialize request via v1.zoloz.applicant.query.

Recipient Using H5 SDK

  1. Call v1.zoloz.realid.reusable.initialize with the shareToken, Recipient-side userId, flowType=H5_REUSABLE_REALIDLITE_KYC, metaInfo=MOB_H5, and the required h5ModeConfig.
  2. Save the transactionId from the response. Use the clientCfg from the response to configure and load the H5 SDK interface.
  3. The user completes face capture in the H5 SDK interface. ZOLOZ automatically performs liveness detection and face matching.
  4. Use the transactionId returned from initialize to call v1.zoloz.realid.reusable.checkresult to poll for results.
  5. After successful reuse, the system automatically creates a new Applicant if none exists under the Recipient for the userId, or merges the reused KYC data into the existing Applicant if one already exists. The Recipient can then query the data using the userId from the initialize request via v1.zoloz.applicant.query.

Key Field Reference

Field

Provider / How to Obtain

Used In

recipientClientId

Provided by the Recipient (the API clientId used to access ZOLOZ OpenAPI)

Donor creates ShareToken

userId

Generated and maintained by the calling merchant (should be stable and unique per merchant)

Applicant creation, Recipient reuse, and ownership query

applicantId

Returned by v1.zoloz.applicant.create

attach, query, update, delete, ShareToken creation

Standard RealID transactionId

Returned from the standard RealID flow

v1.zoloz.applicant.attach request

Reusable transactionId

Returned by v1.zoloz.realid.reusable.initialize

Result query after SDK loading (checkresult)

shareToken

Returned by v1.zoloz.sharetoken.create

initialize request

bizId

Generated by the API caller (should be unique per business request)

Corresponding API request

Notes:

  • Except for checkresult, all API responses for this product include a transactionId for the call itself. It is recommended to save this for business tracking and issue troubleshooting.
  • Do not confuse the two transactionId values:
    • The transactionId in the attach request is the standard RealID transaction ID to be attached.
    • The transactionId in the attach response is the transaction ID for the attach API call itself (used to track the attach operation).

ShareToken and Data Rules

Rule

Description

Validity Period

ShareToken is valid for 20 minutes. The exact expiration time is provided in the expireTime field of the response.

Bound to Recipient

A ShareToken can only be used by the recipientClientId specified at creation. It cannot be transferred to another Recipient.

Single Use

Once initialize succeeds, the ShareToken is immediately consumed and cannot be reused.

Invalid After Use

Even if the user subsequently cancels or fails verification after a successful initialize, the original ShareToken cannot be used again.

Not Consumed on Filter Mismatch

If Donor data does not meet the Recipient's document filtering criteria, DONOR_DATA_NOT_ACCEPTABLE is returned. The ShareToken is not consumed and can be retried after adjusting the criteria.

Token Invalid Scenarios

TOKEN_NOT_FOUND is returned when the Recipient does not match, the Token has expired, or the Token has already been consumed.

No Secondary Sharing

Data obtained by the Recipient via REUSE cannot be shared further as Donor data (i.e., cannot be used to generate a new ShareToken).

Deletion Does Not Cascade

Deleting an Applicant only deletes the data held by the current merchant. It does not cascade-delete independent data copies already obtained by other merchants.

Integration Checklist

Before starting integration testing, confirm the following items:

Check Item

Description

Environment and Credentials

Use the correct environment addresses, API clientId, and secret keys for requests.

Recipient Client ID Match

The recipientClientId used by the Donor when creating the ShareToken must match the Recipient that actually calls initialize.

ShareToken Secure Delivery

The ShareToken must be delivered only through a secure server-side channel and used within its validity period (20 minutes).

Transaction ID Storage

Save the transactionId returned by each API. checkresult must use the transactionId returned by initialize.

Async Ownership Retry Strategy

Set a reasonable retry interval and timeout for async ownership queries for the Recipient Applicant.