How It Works
A quote binds a conversion rate between two currencies for a limited window. Create a quote withGET /autoramps/quote, then pass the signed result to POST /autoramps to create an Autoramp that executes at the locked rate.
Without a quote, conversions execute at the current mid-market rate. With a quote, the rate is fixed for the lock duration you specify.
Key Parameters
Rate lock duration: time window where the quoted rate and fee are fully guaranteed. Funds received in this window execute at the quoted price. Validity period: total time the Autoramp remains active. Funds received after this period are refunded.Expiry Policies
What happens when funds arrive after the rate lock expires depends on therate_expiry_policy you set.
- Return
- Slippage
Validity period equals rate lock duration. Funds arriving after the lock expires are refunded.Example:
- Quote: 100 USD for 0.0025 BTC
- Rate lock: 10 minutes, validity: 10 minutes
- Funds arrive at 12 minutes
- Result: refunded (both windows expired)
Prerequisites
Complete these before requesting a quote:Create and verify a customer
Register a customer via
POST /customers and complete identity verification. The customer must reach Active status before they can transact.See Onboarding Lifecycle for the full flow.Register a recipient address
The
recipient_account_id in your quote request must reference a registered and verified address.- Fiat offramps: register a bank account (SEPA, ACH, Wire, or SWIFT) via
POST /addresses/fiat. The address must be verified before use. See Fiat Addresses. - Crypto swaps: register the destination wallet via
POST /addresses/crypto. Self-hosted wallets require a signed proof-of-ownership message; hosted wallets require the custodian’s DID. See Crypto Addresses.
Authenticate your requests
Include your API key in the
X-API-Key header on every request. See Authentication.Implementation
Create a quote
GET /autoramps/quoteRequest a signed quote that defines the conversion rate, lock duration, validity period, and fees. The quote must be passed unchanged when creating an Autoramp.API Example
API Example
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
customer_id | string (UUID) | Yes | Unique identifier for the customer. |
source_currency_code | string | Yes | Currency or token being sent (e.g. USDC, USD). |
source_currency_chain | string | Yes | Blockchain for the source currency (e.g. Ethereum, Polygon). |
destination_currency_code | string | Yes | Currency or token being received (e.g. EUR, GBP). |
destination_currency_chain | string | Conditional | Blockchain for the destination currency. Required for crypto-to-crypto quotes. |
recipient_account_id | string (UUID) | Yes | UUID of a registered recipient account (fiat_address or verified_crypto_address). |
recipient_account | string | No | Deprecated. Use recipient_account_id instead. Ignored when recipient_account_id is provided. |
amount_out | string | Conditional | Desired output amount in the destination currency. Set either amount_out or amount_in, not both. |
amount_in | string | Conditional | Desired input amount in the source currency. Set either amount_in or amount_out, not both. |
rate_lock_duration_minutes | integer | Yes | Duration (in minutes) the rate is locked. Max: 20. |
rate_expiry_policy | string | Yes | What happens when the rate lock expires. One of Return, Slippage. |
slippage_tolerance_in_bips | string | Conditional | Allowable deviation from quoted rate (1 bip = 0.01%). Required when rate_expiry_policy is Slippage. |
is_third_party | boolean | Yes | Whether this is a third-party payment Autoramp. Set to false for standard customer-owned accounts. |
expiry_in_hours | integer | Yes | Duration (in hours) the quote is valid. Max: 24. |
Autoramp Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
rate_expiry_policy | string | Yes | What happens when the rate expires. One of Return, Slippage. |
slippage_tolerance_in_bips | string | Conditional | Allowable deviation from quoted rate (1 bip = 0.01%). Required when rate_expiry_policy is Slippage. |
type | string | Yes | Either exact_in (fixed input) or exact_out (fixed output). |
valid_until | string (ISO 8601) | Yes | Timestamp when the quote expires. Max 24 hours from creation. |
rate_lock_valid_until | string (ISO 8601) | Yes | Timestamp until which the locked rate is guaranteed. Max 20 minutes from creation for stablecoin pairs. |
The
quote_id and signature pair authenticate the quote. If deposits don’t match the quoted amount_in, they are refunded. Once valid_until passes, the Autoramp expires automatically.Error Handling
| Status | Cause |
|---|---|
400 Bad Request | Quote expired (valid_until passed) or signed payload was modified |
401 Unauthorized | Missing or invalid API key |
404 Not Found | recipient_account_id does not reference a registered address |
422 Unprocessable Entity | Required parameter missing or invalid value |
Autoramp
Create and manage Autoramps.
Autoramp Status
Interpret Autoramp statuses.

