Skip to main content

KYC Verification

ColisMove uses Didit V2 for Know Your Customer (KYC) identity verification. Users must complete KYC to unlock carrier features (creating announcements).

Flow Overview

Step 1: Initialize Verification

POST /v1/api/kyc/init
Response:
{
  "sessionUrl": "https://verify.didit.me/session/abc123",
  "status": "PENDING"
}
Redirect the user to the sessionUrl to complete verification.

Step 2: User Completes Verification

The user is redirected to Didit’s verification interface where they:
  1. Scan their identity document (passport or national ID)
  2. Take a selfie for facial matching
  3. Wait for automated verification

Step 3: Check Status

GET /v1/api/kyc/status
Response:
{
  "status": "APPROVED",
  "verifiedAt": "2026-04-13T14:30:00Z"
}

KYC Statuses

StatusDescriptionEffect
NOT_STARTEDUser has never initiated KYCCannot create announcements
PENDINGVerification in progressCannot create announcements
APPROVEDIdentity verifiedRole upgraded to VERIFIED_USER, can create announcements
DECLINEDVerification failedCan retry with POST /kyc/init
EXPIREDSession expired before completionCan retry with POST /kyc/init

Webhook Processing

When Didit sends the result via webhook (POST /v1/api/webhooks/didit):
  • APPROVED: User role is upgraded to ROLE_VERIFIED_USER, enabling announcement creation
  • DECLINED: User is notified and can retry
  • EXPIRED: User is notified and can initiate a new session
KYC verification is a one-time process. Once approved, the user retains their verified status permanently.