KYC — Know Your Customer
Verify the identity of individual users before they can invest, transact, or hold assets on the platform. Heimdall runs KYC through pluggable vendors (Veriff, NexeraID) behind a single unified API surface.
What you can do
- Initiate a verification — create a vendor-hosted session and redirect the user
- Receive decisions — Heimdall ingests vendor webhooks automatically
- Query attempt history — a full audit trail for compliance reviews
- Manual override — approve or reject an attempt via admin endpoints
Endpoints
GET
List KYC attempts for a user
/kyc
POST
Start a new Veriff KYC session
/kyc
GET
Get a KYC attempt by ID
/kyc/current/{kycId}
POST
Receive Veriff verification decision webhook
/kyc/callback/veriff/decision
POST
Receive Veriff session event webhook
/kyc/callback/veriff/event
POST
Create a NexeraID Web3 wallet challenge
/kyc/nexera/web3-challenge
POST
Create a NexeraID regular challenge session
/kyc/nexera/regular-challenge
POST
Receive NexeraID KYC callback
/kyc/callback/nexera
GET
Get user identity root hash (for on-chain verification)
/kyc/identity/root
GET
Get Merkle proof for an identity field
/kyc/identity/proof
GET
List all KYC records for a tenant (admin)
/kyc/kycs
POST
Initiate a KYC submission
/kyc/kyc
PATCH
Update a KYC record manually
/kyc/{kycId}
PUT
Approve a KYC submission
/kyc/approve/{kycId}
PUT
Reject a KYC submission
/kyc/reject/{kycId}
PUT
Request KYC resubmission from user
/kyc/request-resubmission/{kycId}