Recommended: For most use cases, use KYC Links
for a hosted, user-friendly flow. This guide covers the programmatic API
approach for teams that need full control over the KYC collection process.
Prerequisites
- API keys from the Dashboard (Get API keys)
- A user created in your HIFI account
- Sandbox endpoint:
https://sandbox.hifibridge.com
All examples use the sandbox environment. For production, replace the sandbox
URL with the production endpoint and use your production API keys.
Process Overview
- Retrieve KYC Requirements - Get required information for your target rail
- Update KYC Information - Provide personal information
- Upload KYC Documents - Submit identity verification documents
- Submit KYC - Submit the application for review
- Check KYC Status - Monitor approval status
Retrieve KYC Requirements
First, find out what information is needed for your target rail by calling the Retrieve KYC Requirements endpoint. Request:All mandatory KYC fields needed for the rail. These must be provided
before submission.
Additional fields that aren’t mandatory but may help with approval or enable
additional features.
Most Important Field: Lists any missing or invalid data that must be
corrected before KYC submission.
Rail-Specific Requirements: Each rail has different KYC requirements based
on regulatory needs. Visit our Rails page to learn about
available rails and their specific requirements.
Update KYC Information
Provide the missing personal information using the Update KYC endpoint. Request:documents array is still empty - we’ll upload those next.
Upload KYC Documents
Now we need to upload identity verification documents. This is a two-step process:- Upload the file to get a
fileId - Attach the file to the user’s KYC application
Upload a File
First, upload the identity document (driver’s license, passport, etc.) using the Upload a File endpoint. Request:The file ID. Save this - you’ll use it in the next step to attach this
document to the user’s KYC application.
Original filename of the uploaded file.
File size in bytes.
File type (e.g., image/png, image/jpeg, application/pdf).
Add Documents to KYC
Now attach the uploaded file(s) to the user’s KYC application using the Add Documents endpoint.Driver’s License Requirements: Most identity documents require both front
and back images. For this example, we’ll use the same file ID for both sides,
but in production you should upload and attach separate images.
Document type. Options:
DRIVERS, ID_CARD, PASSPORT, RESIDENCE_PERMITWhich side of the document. Options:
FRONT_SIDE, BACK_SIDE (passports
typically only need FRONT_SIDE)Country that issued the document (ISO country code).
The file ID received from the file upload endpoint.
Number of documents successfully attached.
Array of document objects with IDs, types, and temporary signed URLs for
viewing.
Submit KYC
With all fields and documents provided, submit the KYC application to unlock the rail using the Submit KYC endpoint. Request:- Status starts as
CREATED(immediate) - Transitions to
PENDING(within minutes in sandbox) - Final status:
ACTIVEorREJECTED(typically automatic in sandbox, 1-3 business days in production)
Sandbox Auto-Approval: In the sandbox environment, KYC applications are
typically automatically approved within minutes for testing purposes. However,
certain compliance checks (like PEP screening by banking partners) may still
block approval even in sandbox. In production, the review process typically
takes 1-3 business days.
- Poll the Retrieve KYC Status endpoint
- Listen for
KYC.STATUS_UPDATEwebhook events
Check KYC Status
Check the current KYC status for the rail using the Retrieve KYC Status endpoint. Request:ACTIVE, which means the rail is now unlocked and the user can:
- Onramp fiat to stablecoins
- Offramp stablecoins to fiat
Overall KYC status for the rail. Possible values: -
CREATED - Application
submitted, not yet reviewed - PENDING - Being reviewed by compliance team -
ACTIVE - Approved, rail is unlocked - REJECTED - Not approved (see
rejectReasons for details)High-level review outcome for the entire application.
Detailed review results broken down by category (identity documents, personal
information, questionnaire). Useful for diagnosing issues if rejected.
Next Steps
Now that your user has completed KYC and unlocked the rail, you can:- Set up Virtual Accounts - For receiving fiat deposits (onramping)
- Add Offramp Accounts - For sending fiat withdrawals (offramping)
- Execute Transfers - Start moving money between fiat and crypto
Related Resources
- KYC Links - Use hosted KYC flow for easier implementation
- KYC Requirements - Detailed information about KYC requirements
- Rails Overview - Learn about available rails and their requirements
- Webhooks - Monitor KYC status changes in real-time
- API Reference - Complete endpoint documentation