Get an indicative rate quote
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`).
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).
Authorization
bearerAuth Organization API key obtained from PropelAuth
In: header
Query Parameters
Currency being sent. Case-insensitive.
"EUR" | "USDC" | "EURC"Currency to be received. Case-insensitive.
"EUR" | "USDC" | "EURC"Amount in source currency to send. Provide exactly one of source_amount or target_amount.
Desired amount in target currency to receive. Provide exactly one of source_amount or target_amount.
If provided, the quote includes any customer-specific developer fees configured via the Developer Fees endpoint.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET 'https://compose.finance/api/v2/rates?source_currency=EUR&target_currency=USDC&source_amount=1000' \ -H 'Authorization: Bearer YOUR_API_KEY'Customer sends 1000 EUR and receives approximately 1074.6 USDC after a 5 EUR fee.
{
"source_currency": "EUR",
"target_currency": "USDC",
"source_amount": "1000",
"target_amount": "1074.6",
"exchange_rate": "1.08",
"fee": "5",
"fee_currency": "EUR"
}{
"error": "source_currency: Required, target_currency: Required"
}{
"error": "Unauthorized - Invalid or missing API key or session"
}{
"error": "Customers feature is not enabled for your organization"
}{
"error": "Internal server error"
}{
"error": "Exchange rate temporarily unavailable"
}Upload customer KYC document POST
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
Get customer transaction GET
Returns details for a specific customer transaction. Use this to check the current status of a withdrawal or deposit. **Status Values** - `PROCESSING` — Transaction is being processed - `PROPOSED` — Awaiting approval in dashboard - `PARTIALLY_SIGNED` — If multiple approvers configured: requires more approvals. - `COMPLETED` — Successfully completed - `FAILED` — Transaction failed - `CANCELLED` — Cancelled by user - `EXPIRED` — Expired before completion **Action Required** When `requiresUiAction` is `true`, the transaction needs user approval in the dashboard.