> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bluumfinance.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Compliance & KYC

> Identity verification model, document purposes, and how KYC resolves in sandbox vs production.

Every investor must clear Know Your Customer (KYC) checks before it can fund or trade. Bluum runs the compliance pipeline — you supply the investor's identity data at creation and upload any documents the review requires.

## How verification resolves

1. You create the investor with identity, contact, and disclosure fields.
2. Bluum runs automated identity, tax, and screening checks through its compliance providers.
3. If the automated checks pass, the investor activates. If they need review, Bluum may request documents.
4. You upload requested documents; a reviewer approves or rejects.

<Frame>
  <img src="https://mintcdn.com/bluumfinance/L5Dm3BN-WAZqlyQf/images/diagrams/kyc-states.svg?fit=max&auto=format&n=L5Dm3BN-WAZqlyQf&q=85&s=f27759b7c1cfd8c250d60211de14eee1" alt="KYC states" width="1200" height="380" data-path="images/diagrams/kyc-states.svg" />
</Frame>

### Sandbox vs production

| Environment    | Behavior                                                                                                                                              |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sandbox**    | Checks auto-approve — investors reach `active` immediately so you can test the full flow without real documents.                                      |
| **Production** | Real provider checks run. Most complete in minutes; some route to manual review and may request documents. Subscribe to webhooks rather than polling. |

## Documents

Documents are uploaded as flat objects (prefixed `doc_`). Set `account_id` to attach a document to an investor; omit it to attach to your tenant. Each document may carry a `purpose`:

| Purpose                | Used for                         |
| ---------------------- | -------------------------------- |
| `KYC`                  | Individual identity verification |
| `KYB`                  | Business / entity verification   |
| `EDD`                  | Enhanced due diligence           |
| `TAX`                  | Tax forms (e.g. W-8BEN, W-9)     |
| `FUNDING_VERIFICATION` | Proof tied to a funding source   |
| `AGREEMENT`            | Signed agreements                |
| `OTHER`                | Anything else                    |

Supported formats: JPEG, PNG, PDF. When a document is rejected, upload a replacement — there is no attempt limit.

## Staying notified

Use [webhooks](/concepts/webhooks) to receive KYC decisions in real time instead of polling. Compliance decisions surface as `kyc.*` and `compliance.*` events.

<Note>
  For the create-investor request, the document upload call, and handling a
  document request, follow the journey guide:
  [Verify identity](/get-started/journey/verify-identity). Document and workflow
  schemas are in the [API reference](/api-reference/introduction).
</Note>
