Identity Verification (KYC & KYB)
Who needs verifying, at what level, and how
Individuals go through KYC; businesses through KYB. Verification is required before a user can fund an order, and a higher level is requested as their volume grows.
Levels
Thresholds depend on country and risk; your account manager has the exact figures. Roughly:
| Level | Individual (KYC) | Business (KYB) |
|---|---|---|
| Basic · Level 0 | Name, date of birth, country, email, phone, address — given at user creation | Business name, country, incorporation date, registration number, contact details, address — given at creation |
| Standard · Level 1 | ID document, selfie, address, phone | UBO KYC, directors, certificate of incorporation, shareholder register, UBO proof of address |
| Enhanced · Level 2 | Proof of source of funds, proof of address | Articles of association, director list, corporate shareholder register, source of funds |
When an order crosses a threshold it is rejected with STANDARD_KYC_REQUIRED, ENHANCED_KYC_REQUIRED, STANDARD_KYB_REQUIRED or ENHANCED_KYB_REQUIRED. Start the next level and retry.
Four ways to verify
| Method | When | Endpoint |
|---|---|---|
| TransFi hosted | Default. You get a URL; the user completes verification there (ID, selfie, liveness, review) | Standard KYC · Advanced KYC · Standard KYB · Advanced KYB |
| Import from Sumsub | You already verified the user with Sumsub — share a token, no second verification | Import Shared KYC |
| Submit from another provider | You verified them elsewhere — send the data and documents directly | Submit KYC Documents |
| Add documents later | Higher volumes need more from the sender — supply them without restarting | Share Additional Docs |
Start hosted verification
curl -X POST 'https://sandbox-api.transfi.com/v3/kyc/standard' \
-H 'Authorization: Basic YOUR_BASE64_CREDENTIALS' \
-H 'mid: YOUR_MID' \
-H 'Content-Type: application/json' \
-d '{ "userId": "UX-250930062608488" }'Send the user to the URL in the response. The result arrives by webhook — don't block on it.
Import from Sumsub
Generate a share token on your Sumsub account for forClientId (TransFi gives you this value during integration), then pass it:
curl -X POST 'https://sandbox-api.transfi.com/v3/kyc/share/same-vendor' \
-H 'Authorization: Basic YOUR_BASE64_CREDENTIALS' \
-H 'mid: YOUR_MID' \
-H 'Content-Type: application/json' \
-d '{ "token": "_act-...", "email": "[email protected]", "name": "Asha Kamau" }'Statuses
| Status | Meaning | Can retry? |
|---|---|---|
user_created | Account created | — |
user_approved | Passed basic screening | — |
user_manual_review | Compliance reviewing the account | — |
user_rejected | Account rejected | — |
kyc_initiated | Verification started | — |
kyc_pending | Submitted, being checked | — |
kyc_success | Verified | — |
kyc_failed | Documents couldn't be verified | Yes |
kyc_manual_review | Compliance reviewing | Yes |
kyc_edd_pending | Enhanced verification in progress | Yes |
kyc_expired | ID document expired — found in ongoing monitoring | Yes |
kyc_rejected · kyc_blocked | No further transactions | No |
→ KYC Status · KYB Status · per role: KYC Account Status · KYB Account Status
Check by role. A person can be cleared to receive but not to send. Check the role you're about to use.
Why a verification failed: every rejection carries a label — see KYC Reject Labels. Which documents are accepted: Supported Documents.
Questions on thresholds: your account manager, or [email protected].
Updated 28 days ago