Onboarding links for New Customers

Instead of integrating the Customer API directly to onboard and verify (KYC/KYB) customer, you can generate onboarding Links for a faster setup.

Once a link is generated, simply share it with your customer, allowing them to complete the onboarding process through a prebuilt, hosted flow.

This approach eliminates the need to design and build your own compliance forms, enabling you to accelerate go-to-market while still meeting regulatory requirements.

1. Generate Onboarding Link

See API Reference
curl --request POST \
     --url https://api.sandbox.keyrails.com/api/v1/customers/kyb-links \
     --header 'Authorization: Bearer {{AccessToken}}' \
     --header 'accept: application/json' \
     --header 'content-type: application/*+json' \
     --data '
{
  "withLivenessCheck": true,
  "businessLegalName": "string",
  "email": "string"
}
'

Response:

{
  "id": "string", // customerId
  "verificationUrl": "string"
}

Check status:

You can check the status of your customer by using the following endpoints

Check Customer Status

curl --request GET \
  --url https://api.sandbox.keyrails.com/api/v1/customers/{clientId} \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer {{AccessToken}}'

Webhooks Examples

Before proceeding, ensure that your webhook configuration is set up. Refer to the setup guide for detailed instructions.

Webhook types: - Identity

Customer approved

{
  "tenantId": "64790ea8-f9b1-4b52-aff6-f6177bb3fcee",
  "action": "Update",
  "id": "cfc05dcb-5983-413b-8d8b-f8ef69a14787",
  "resourceId": "d8d01119-4b78-41a6-b868-0849b9ecf2ff",
  "resourceType": "Identity",
  "createdAtUtc": "0001-01-01T00:00:00",
  "changes": {
    "complianceStatus": "Approved"
  }
}

Customer rejected

{
  "tenantId": "47dce736-7fe1-42f9-a317-2676733823fe",
  "action": "Update",
  "id": "fa85e3f4-99cb-46be-bbd3-4faad0bf565d",
  "resourceId": "51777f07-8b43-468f-8808-c7cb1405f254",
  "resourceType": "Identity",
  "createdAtUtc": "0001-01-01T00:00:00",
  "changes": {
    "complianceStatus": "Rejected",
    "rejectionReasons": [
      "Failed to verify proof of address",
      "Poor quality of the document"
    ]
  }
}