Upload customer KYC document
Uploads a KYC document (identity or proof of address) for a customer to our verification provider. The customer must have initiated KYC verification first by calling `POST /customers/{customerId}/kyc`. **Identity Documents** (`idDocType`): - `PASSPORT` - Passport (any country) - `ID_CARD` - National ID card (front and back required) - `DRIVERS` - Driver's license (front and back required) - `RESIDENCE_PERMIT` - Residence permit **Proof of Address** (`idDocType: PROOF_OF_ADDRESS`): Documents must be dated within the **last 3 months**. Accepted documents: - Utility bills (gas, electricity, water) - Telecom bills (internet, cable, mobile phone) - Bank statements or bank letters (neobanks not accepted) - Government documents (tax bills, voter registration) - Lease or rental agreements **File Requirements:** - Formats: JPEG, PNG, PDF - Maximum size: 10MB
Uploads a KYC document (identity or proof of address) for a customer to our verification provider. The customer must have initiated KYC verification first by calling POST /customers/{customerId}/kyc.
Identity Documents (idDocType):
PASSPORT- Passport (any country)ID_CARD- National ID card (front and back required)DRIVERS- Driver's license (front and back required)RESIDENCE_PERMIT- Residence permit
Proof of Address (idDocType: PROOF_OF_ADDRESS):
Documents must be dated within the last 3 months. Accepted documents:
- Utility bills (gas, electricity, water)
- Telecom bills (internet, cable, mobile phone)
- Bank statements or bank letters (neobanks not accepted)
- Government documents (tax bills, voter registration)
- Lease or rental agreements
File Requirements:
- Formats: JPEG, PNG, PDF
- Maximum size: 10MB
Authorization
bearerAuth Organization API key obtained from PropelAuth
In: header
Path Parameters
Unique identifier of the customer
Request Body
multipart/form-data
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST 'https://compose.finance/api/v2/customers/{customerId}/documents' \ -H 'Authorization: Bearer YOUR_API_KEY' \ -F 'file=@/path/to/passport.jpg' \ -F 'idDocType=PASSPORT' \ -F 'country=GBR'{
"success": true,
"idDocType": "PASSPORT",
"idDocSubType": "FRONT_SIDE",
"country": "GBR",
"reviewTriggered": false
}{
"error": "Missing required field: file"
}{
"error": "Unauthorized - Invalid or missing API key or session"
}{
"error": "Customers feature is not enabled for your organization"
}{
"error": "Customer not found"
}{
"error": "Cannot upload documents while verification is in progress. Please wait for the current review to complete before uploading new documents."
}{
"error": "File size exceeds maximum limit of 10MB. Received: 15.50MB"
}{
"error": "Document upload failed. Please try again."
}Submit customer KYC POST
Manually submit a customer's KYC documents for review. This endpoint is typically not needed as verification is automatically triggered when all required steps are completed via the WebSDK link or API document uploads. Use this endpoint only if auto-submission fails. Cannot be called if review is already in progress or completed. Maximum 4 attempts allowed.
Get an indicative rate quote GET
Preview the exchange rate, fees, and estimated amounts for a deposit or withdrawal before initiating the transaction. Rates are indicative and not locked — the actual rate is determined when the transaction is executed. Provide exactly one of `source_amount` or `target_amount`. Supported currencies: fiat (`EUR`) and stablecoin (`USDC`, `EURC`).