KYC (Know Your Customer) is essential for verifying the identity of customers, ensuring they are who they claim to be. It’s a critical process for preventing fraud, maintaining regulatory compliance, and building trust in your business. This involves collecting and verifying a customer's personal information, often through documents like a ID card, passport or driver's license, and assessing the risk they may pose.
FLOW KYC Qoin Service

Flow KYC API Product
| Subject | SubjectType | SubjectIdentifier |
|---|---|---|
| identity | product | kyc |
Request Body
| JSON Attribute | Type | Required | Description |
|---|---|---|---|
| Subject | String | Required | Domain Service Name |
| SubjectType | String | Required | Type of Service Name |
| SubjectIdentifier | String | Required | Object Service (e-ktp, sim, passport, etc.) |
| Action | String | Required | Command Process (create, read, delete, etc.) |
| ResourceType | String | Required | Data Type this message |
| Resource | String | Required | Data Name |
| ResourceId | String | Required | Id data |
| Data | String | Required | Payload data product |
Payload Data
Name | Data Type | M/O | Description |
|---|---|---|---|
Phone | String | M | The user's registered mobile phone number used for communication, verification, and account identification purposes. |
String | M | The user's active email address, serving as a primary channel for notifications, verification links, and account recovery. | |
Fullname | String | M | The user's complete legal name as stated on their official identification documents. |
Dob (Date of Birth) | String | M | The user's date of birth used for identity validation and age verification processes. |
IdentityNumber | String | M | The user's official identification number (e.g., national ID number) obtained from their government-issued document. |
UserIp | String | M | The IP address from which the user initiates the request, used for security checks, fraud analysis, and geo-location validation. |
SelfieImage | String | M | A live selfie image of the user captured during verification, used for biometric analysis and face matching. |
DocsImage | String | M | The image of the user’s identification document (e.g., ID card or passport) used for OCR extraction and authenticity verification. |
RequestId | String | M | A unique identifier represented as a UUID, used to track, correlate, and reference a specific request throughout the verification or processing workflow. |
Action KYC
- KYC Verification
- KYC Re-verification
Action Partial Process :
- KYC Identity Documents
- KYC Photo Liveness
- KYC Face Matching
KYC Verification
Example Request & Response
{
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "verification",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Data": {
"Phone": "628999333222",
"Email": "[email protected]",
"Fullname": "UserGDAA",
"Dob": "1980-01-01",
"IdentityNumber": "3511000101806300",
"UserIp": "172.22.22.22",
"SelfieImage": "",
"DocsImage": ""
}
}{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "verification",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": null,
"Status": "success",
"Message": "Success request on process",
"StatusCode": 200
}{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc"
}{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "verification",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": {
"created_at": "2025-11-20 10:10:47",
"created_by": "Erwin Platform test",
"docs_image_url": "https://s3.loyalto.id/saas-product-dev/document/vv5z2sSn1763608247-a7a3acc49f291fa22e2123d212cbf045.jpg",
"photo_image_url": "https://s3.loyalto.id/saas-product-dev/photo/dAvcYAhd1763608249-f5674a579e551432c6a0bc4b2ea4089e.jpg",
"request_id": "060e04bf-d0f1-480d-bcff-897b0f287363",
"risk_score": 0,
"updated_at": "2025-11-20 10:10:54",
"updated_by": "Erwin Platform test",
"verification_data": [
{
"status": "approved",
"type": "document"
},
{
"status": "approved",
"type": "liveness"
},
{
"status": "approved",
"type": "face_matching"
}
],
"verification_status": "approved"
},
"Status": "success",
"Message": "Success process data(success identity verification)",
"StatusCode": 200
}KYC Identity Docs
Example Request & Response
{
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "identity-docs",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Data": {
"Phone": "628999333222",
"Email": "[email protected]",
"Fullname": "UserGDAA",
"Dob": "1980-01-01",
"IdentityNumber": "3511000101806300",
"UserIp": "172.22.22.22",
"DocsImage": {base64 image}
}
}
{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "identity-docs",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": null,
"Status": "success",
"Message": "Success request on process",
"StatusCode": 200
}{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc"
}
{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "identity-docs",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": {
"created_at": "2025-11-20 10:10:47",
"created_by": "Erwin Platform test",
"docs_image_url": "https://s3.loyalto.id/saas-product-dev/document/vv5z2sSn1763608247-a7a3acc49f291fa22e2123d212cbf045.jpg",
"photo_image_url": "",
"request_id": "060e04bf-d0f1-480d-bcff-897b0f287363",
"risk_score": 0,
"updated_at": "2025-11-20 10:10:54",
"updated_by": "Erwin Platform test",
"verification_data": [
{
"status": "approved",
"type": "document"
}
],
"verification_status": "approved"
},
"Status": "success",
"Message": "Success process data(success identity verification)",
"StatusCode": 200
}
KYC Photo Liveness
Example Request & Response
{
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "photo-liveness",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Data": {
"Phone": "628999333222",
"Email": "[email protected]",
"Fullname": "UserGDAA",
"Dob": "1980-01-01",
"IdentityNumber": "3511000101806300",
"UserIp": "172.22.22.22",
"SelfieImage": {base64 image}
}
}
{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "photo-liveness",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": null,
"Status": "success",
"Message": "Success request on process",
"StatusCode": 200
}
{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc"
}
{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "photo-liveness",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": {
"created_at": "2025-11-20 10:10:47",
"created_by": "Erwin Platform test",
"docs_image_url": "",
"photo_image_url": " https://s3.loyalto.id/saas-product-dev/photo/dAvcYAhd1763608249-f5674a579e551432c6a0bc4b2ea4089e.jpg ",
"request_id": "060e04bf-d0f1-480d-bcff-897b0f287363",
"risk_score": 0,
"updated_at": "2025-11-20 10:10:54",
"updated_by": "Erwin Platform test",
"verification_data": [
{
"status": "approved",
"type": "liveness"
}
],
"verification_status": "approved"
},
"Status": "success",
"Message": "Success process data(success identity verification)",
"StatusCode": 200
}
KYC Face Matching
Example Request & Response
{
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "face-matching",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Data": {
"Phone": "628999333222",
"Email": "[email protected]",
"Fullname": "UserGDAA",
"Dob": "1980-01-01",
"IdentityNumber": "3511000101806300",
"UserIp": "172.22.22.22",
"SelfieImage": {base64 image},
"DocsImage": {base64 image}
}
}{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "face-matching",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": null,
"Status": "success",
"Message": "Success request on process",
"StatusCode": 200
}
{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc"
}
{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "face-matching",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": {
"created_at": "2025-11-20 10:10:47",
"created_by": "Erwin Platform test",
"docs_image_url": "",
"photo_image_url": " https://s3.loyalto.id/saas-product-dev/photo/dAvcYAhd1763608249-f5674a579e551432c6a0bc4b2ea4089e.jpg ",
"request_id": "060e04bf-d0f1-480d-bcff-897b0f287363",
"risk_score": 0,
"updated_at": "2025-11-20 10:10:54",
"updated_by": "Erwin Platform test",
"verification_data": [
{
"status": "approved",
"type": "face_matching"
}
],
"verification_status": "approved"
},
"Status": "success",
"Message": "Success process data(success identity verification)",
"StatusCode": 200
}
KYC Re-Verification
Example Request & Response
{
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "reverification",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Data": {
"Phone": "6289636021232",
"Email": "[email protected]",
"Fullname": "UserGDAA",
"Dob": "1980-01-01",
"IdentityNumber": "3511000101806300",
"UserIp": "172.22.22.22",
"SelfieImage": {{selfieSs}},
"DocsImage": {{idCard}}
}
}
{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "reverification",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": null,
"Status": "success",
"Message": "Success request on process",
"StatusCode": 200
}
{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc"
}
{
"TicketId": "3139362d31-ca26763d-0ac9-4e4a-ad6c-740ec87b33f0",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "reverification",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": {
"created_at": "2025-11-20 10:10:47",
"created_by": "Erwin Platform test",
"docs_image_url": "https://s3.loyalto.id/saas-product-dev/document/vv5z2sSn1763608247-a7a3acc49f291fa22e2123d212cbf045.jpg",
"photo_image_url": "https://s3.loyalto.id/saas-product-dev/photo/dAvcYAhd1763608249-f5674a579e551432c6a0bc4b2ea4089e.jpg",
"request_id": "060e04bf-d0f1-480d-bcff-897b0f287363",
"risk_score": 0,
"updated_at": "2025-11-20 10:10:54",
"updated_by": "Erwin Platform test",
"verification_data": [
{
"status": "approved",
"type": "document"
},
{
"status": "approved",
"type": "liveness"
},
{
"status": "approved",
"type": "face_matching"
}
],
"verification_status": "approved"
},
"Status": "success",
"Message": "Success process data(success identity verification)",
"StatusCode": 200
}
Process Retry Action Partial
KYC Identity Docs
Example Request & Response
{
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "identity-docs",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Data": {
"Phone": "6289993332221",
"UserIp": "172.22.22.22",
"DocsImage": {{base64Image}}
}
}{
"TicketId": "3334382d31-ccb029fe-3dd2-49b3-9e1f-c8fb20f32e0e",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "identity-docs",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": null,
"Status": "success",
"Message": "Success request on process",
"StatusCode": 200
}{
"TicketId": "3334382d31-ccb029fe-3dd2-49b3-9e1f-c8fb20f32e0e",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc"
}{
"TicketId": "3334382d31-ccb029fe-3dd2-49b3-9e1f-c8fb20f32e0e",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "identity-docs",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": {
"created_at": "2025-11-28 14:37:40",
"created_by": "System",
"docs_image_url": "https://s3.loyalto.id/saas-product-dev/document/0cBWRL0Y1764315460-0ed2cbd22b441a411531e936ffe37c31.jpg",
"photo_image_url": "",
"request_id": "89c251ad-1ee0-43cb-9d44-a7d28b773879",
"risk_score": 1,
"updated_at": "2025-11-28 14:37:41",
"updated_by": "System",
"verification_data": [
{
"score": 1,
"status": "approved",
"type": "document"
}
],
"verification_status": "approved"
},
"Status": "success",
"Message": "Success process data(success identity verification)",
"StatusCode": 200
}KYC Photo Liveness
Example Request & Response
{
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "photo-liveness",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Data": {
"Phone": "6289993332221",
"SelfieImage": {{base64Image}}
}
}{
"TicketId": "3334382d31-15253e0b-0fff-4c5e-883f-092cfb6bf8db",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "photo-liveness",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": null,
"Status": "success",
"Message": "Success request on process",
"StatusCode": 200
}{
"TicketId": "3334382d31-15253e0b-0fff-4c5e-883f-092cfb6bf8db",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc"
}{
"TicketId": "3334382d31-15253e0b-0fff-4c5e-883f-092cfb6bf8db",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "photo-liveness",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": {
"created_at": "2025-11-28 14:49:06",
"created_by": "System",
"docs_image_url": "",
"photo_image_url": "https://s3.loyalto.id/saas-product-dev/photo/46j2wl0i1764316146-93c67e928d9773db79b1f6f599f08640.jpg",
"request_id": "03f8aaec-a7b7-46cc-81b9-5a7d5a495f58",
"risk_score": 0.2194925,
"updated_at": "2025-11-28 14:49:08",
"updated_by": "System",
"verification_data": [
{
"score": 0.2194925,
"status": "approved",
"type": "liveness"
}
],
"verification_status": "approved"
},
"Status": "success",
"Message": "Success process data(success identity verification)",
"StatusCode": 200
}
KYC Face Matching
Example Request & Response
{
"Subject":"identity",
"SubjectType":"product",
"SubjectIdentifier":"kyc",
"Action":"face-matching",
"ResourceType":"data",
"Resource":"data",
"ResourceId":"data",
"Data":{
"Phone":"6289993332221",
"Email": "[email protected]",
"Fullname": "UserGDAA",
"Dob": "1980-01-01",
"IdentityNumber": "3511000101806300",
"SelfieImage":{{base64Image}},
"DocsImage":{{base64Image}}
}
}{
"TicketId": "3334382d31-0596eb08-b932-46db-b1c2-7e5d48c85b3d",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "face-matching",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": null,
"Status": "success",
"Message": "Success request on process",
"StatusCode": 200
}{
"TicketId": "3334382d31-0596eb08-b932-46db-b1c2-7e5d48c85b3d",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc"
}{
"TicketId": "3334382d31-0596eb08-b932-46db-b1c2-7e5d48c85b3d",
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "face-matching",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Result": {
"created_at": "2025-11-28 14:55:50",
"created_by": "System",
"docs_image_url": "https://s3.loyalto.id/saas-product-dev/document/4FzgofpW1764316550-a2402032ec2e21dc70e293f91340692f.jpg",
"photo_image_url": "https://s3.loyalto.id/saas-product-dev/photo/yzE2NruU1764316550-9bbfe8628002d0e5c28f06d75159927b.jpg",
"request_id": "b9c82321-55f5-43c8-b2eb-c27c69546b4e",
"risk_score": 0.96,
"updated_at": "2025-11-28 14:55:54",
"updated_by": "System",
"verification_data": [
{
"score": 0.96,
"status": "approved",
"type": "face_matching"
}
],
"verification_status": "approved"
},
"Status": "success",
"Message": "Success process data(success identity verification)",
"StatusCode": 200
}Notes : If the retry process for the partial action has been performed more than once, it will use the "Request Id" in the data payload.
{
"Subject": "identity",
"SubjectType": "product",
"SubjectIdentifier": "kyc",
"Action": "face-matching",
"ResourceType": "data",
"Resource": "data",
"ResourceId": "data",
"Data": {
"RequestId": {{uuid}},
"Phone": "628999333222",
"Email": "[email protected]",
"Fullname": "UserGDAA",
"Dob": "1980-01-01",
"IdentityNumber": "3511000101806300",
"UserIp": "172.22.22.22",
"SelfieImage": {base64 image},
"DocsImage": {base64 image}
}
}