The investor is created but must pass identity verification (KYC) before it can fund or trade. Submit a government-issued ID and track it to approval.
You need the INVESTOR_ID from Create an investor.
Upload a KYC document
POST /v1/documents is a multipart/form-data request. Set account_id to the investor’s ID so the document is owned by that investor, and set purpose to KYC.
curl -X POST "$BASE_URL/documents" \
-H "Authorization: Basic $AUTH" \
-F "account_id=$INVESTOR_ID" \
-F "purpose=KYC" \
-F "document_type=drivers_license" \
-F "file=@/path/to/drivers-license.jpg"
Response
{
"id": "doc_a1b2c3d4e5f6g7h8",
"object": "document",
"owner_type": "INVESTOR",
"owner_id": "inv_01j9x8m2k7qpzwv3t5r6y8n0ab",
"purpose": "KYC",
"document_type": "drivers_license",
"status": "processing",
"created_at": "2026-07-01T10:35:00Z"
}
Store the document ID:
DOCUMENT_ID="doc_a1b2c3d4e5f6g7h8"
Omit account_id to attach a document to the tenant instead of an investor. Accepted purpose values: KYC, KYB, EDD, TAX, FUNDING_VERIFICATION, AGREEMENT, OTHER.
Track approval
Poll the document until verification resolves:
curl -X GET "$BASE_URL/documents/$DOCUMENT_ID" \
-H "Authorization: Basic $AUTH"
In sandbox, KYC is auto-approved within seconds. In production, verification runs against real identity providers — subscribe to KYC webhooks (see Webhooks) and react to events instead of polling.
Once verification passes, the investor advances to an active state and can be funded. For verification states, provider behavior, and document requests, see Compliance & KYC.