Skip to main content

How Documents Work

1

Upload file

First, upload the document file using the Upload File endpoint to get a file ID.
2

Add document

Then, associate the file with the user by calling Add Documents with the file ID, type, subtype, and issued country.
3

KYC approval

Once all required documents are uploaded and verified, submit KYC to trigger review.

Document Attributes

Each document requires three key attributes:

Document Types

Supported document types vary by user type (individual vs business).

Individual Documents

For individual user accounts:

Business Documents

For business user accounts, requirements are organized by document groups. Check your specific rail’s requirements (e.g., USD Rail).

Document SubTypes

SubTypes specify which side of a document you’re uploading:
Multi-sided documents: Only ID_CARD and DRIVERS require both FRONT_SIDE and BACK_SIDE. All other document types use SINGLE_SIDE only.

Document Groups

Compliance requirements are organized into document groups. Users must satisfy all required groups for KYC approval.

Individual Requirements

For individual users, typically required: Identity Group (satisfy with one of):
  • Driver’s License (front + back)
  • ID Card (front + back)
  • Passport
  • Residence Permit
Address Group (satisfy with one of):
  • Utility bill
  • Bank statement
  • Lease agreement

Business Requirements

Business document requirements are organized by groups. Requirements vary by rail and jurisdiction. For USD Rail, typically required groups include:
  • legalPresence (min 1): INCORPORATION_ARTICLES, INCORPORATION_CERT, or STATE_REGISTRY
  • ownershipStructure (min 1): SHAREHOLDER_REGISTRY, TRUST_AGREEMENT, INFORMATION_STATEMENT, or STATE_REGISTRY
  • companyDetails (min 1): PROOF_OF_ADDRESS
  • controlStructure (min 1): DIRECTORS_REGISTRY, TRUST_AGREEMENT, INFORMATION_STATEMENT, or STATE_REGISTRY
Beneficial Owner Identity (for each owner >25% share):
  • Same as individual identity requirements: DRIVERS, ID_CARD, PASSPORT, or RESIDENCE_PERMIT
Specific requirements vary by rail and jurisdiction. Check the KYC requirements for your specific use case.

Uploading Documents

Document upload is a two-step process: first upload the file, then associate it with the user.

Step 1: Upload File

Upload the document file using the Upload File endpoint. Request:
Response:
Save the id from the response - you’ll need it in step 2.

Step 2: Add Document

Associate the uploaded file with the user using the Add Documents endpoint. Request:
Request Fields:
  • userId (required): User ID for whom documents are being uploaded
  • type (required): Document type from the supported types list
  • subType (required): FRONT_SIDE, BACK_SIDE, or SINGLE_SIDE
  • issuedCountry (required): ISO 3166-1 alpha-2 country code
  • fileId (required): File ID from step 1
Response:
For detailed field documentation, see the Add Documents API reference.

File Requirements

Documents must meet these requirements:
Document quality matters: Blurry, cropped, or illegible documents will be rejected. Ensure all text and photos are clearly visible before uploading.

Key Concepts

KYC approval requires satisfying all document groups:Example for Individual (USD Rail):
  • Identity group: Upload ONE of (passport, driver’s license, ID card, residence permit)
  • Address group: Upload ONE of (utility bill, bank statement, lease)
Example for Business (USD Rail):
  • legalPresence group: Upload ONE of (INCORPORATION_ARTICLES, INCORPORATION_CERT, STATE_REGISTRY)
  • ownershipStructure group: Upload ONE of (SHAREHOLDER_REGISTRY, TRUST_AGREEMENT, INFORMATION_STATEMENT, STATE_REGISTRY)
  • companyDetails group: Upload ONE of (PROOF_OF_ADDRESS)
  • controlStructure group: Upload ONE of (DIRECTORS_REGISTRY, TRUST_AGREEMENT, INFORMATION_STATEMENT, STATE_REGISTRY)
  • Owner identity: Upload identity documents for EACH beneficial owner (>25% share)
You must provide enough documents to satisfy each required group.
For driver’s licenses and ID cards, upload both sides separately using the two-step process:Upload front side:
Upload back side:
Both uploads must complete successfully for the document to be considered complete.
The issuedCountry field is critical for compliance:
  • Must match the country that issued the document
  • Use ISO 3166-1 alpha-2 codes (e.g., US, GB, CA, DE)
  • Affects which documents are accepted
  • Used for sanctions screening and compliance checks
Common codes:
  • US - United States
  • GB - United Kingdom
  • CA - Canada
  • MX - Mexico
  • BR - Brazil
Uploaded documents progress through verification:
  • PENDING_REVIEW: Document uploaded, awaiting verification
  • APPROVED: Document verified and accepted
  • REJECTED: Document rejected (see rejection reason)
  • EXPIRED: Document expired and needs replacement
Subscribe to KYC webhook events to track document verification status.
Proof of address documents must meet specific criteria:Accepted documents:
  • Utility bills (electric, gas, water, internet)
  • Bank statements
  • Lease agreements
  • Government correspondence
Requirements:
  • Dated within last 3 months
  • Shows full name matching KYC information
  • Shows complete address
  • Issued by reputable organization

Sample Code

Here’s a complete document upload workflow for individual KYC:
1

Upload identity document

Upload the identity document (passport):
2

Upload proof of address

Upload the proof of address document:
3

Upload driver's license (both sides)

Upload both sides of the driver’s license:
4

Complete KYC workflow

Complete the KYC workflow:
5

Handle webhook for document verification

Handle webhook events for document verification:

Getting Help

  • 📧 Email: support@hifi.com
  • 💬 Slack: Message us in our shared Slack channel
  • Users - Understanding user accounts and KYC status
  • KYC Link - Hosted KYC collection flow
  • Webhooks - Monitor KYC verification status
  • API Reference - Complete endpoint documentation