How KYC works
- Create an account with identity and contact information
- Upload identity documents (government-issued ID, proof of address)
- Bluum verifies the documents against the identity information
- Account is approved or rejected
Document types
| Type | Description | Required |
|---|---|---|
id_verification | Government-issued photo ID (passport, driver’s license, national ID) | Yes |
proof_of_address | Utility bill, bank statement, or tax document showing current address | Situational |
w9_form | W-9 tax form | Situational |
Upload a document
Document statuses
| Status | Meaning |
|---|---|
processing | Document uploaded, verification in progress |
approved | Verification successful |
rejected | Verification failed — upload a new document |
Checking document status
Poll the document endpoint or use webhooks:Handling rejections
When a document is rejected, the response includes a reason. Common rejection reasons:| Reason | Resolution |
|---|---|
| Document is blurry or illegible | Re-upload with higher quality image |
| Document is expired | Upload a current, non-expired document |
| Name mismatch | Ensure the name on the document matches the account identity |
| Document type not accepted | Use a supported government-issued photo ID |
Compliance workflow statuses
For more complex compliance scenarios, Bluum uses a multi-step compliance workflow:| Status | Meaning |
|---|---|
IN_PROGRESS | Compliance checks are running |
PENDING_REVIEW | Requires manual review |
APPROVED | All checks passed |
REJECTED | One or more checks failed |
SUSPENDED | Account compliance suspended |
EXPIRED | Compliance window expired, re-verification needed |
Key endpoints
| Method | Path | Description |
|---|---|---|
POST | /documents/accounts/{account_id}/upload | Upload a document |
GET | /documents/{document_id} | Get document status |
GET | /documents/accounts/{account_id}/upload | List account documents |