Quotes
Overview
In Transfer API (V2), all transfers must be preceded by a successful Quote API call.
The Quote API is responsible for:
- Locking pricing and fees
- Determining settlement routes
- Calculating commissions and platform fees
- Defining expiration windows for execution
Direct API Reference:
Step 1: Create a Quote
Before initiating a transfer, you must first request a quote.
Quote Request Example
{
"source": {
"country": "US",
"chain": "ethereum",
"asset": "USDC",
"type": "individual"
},
"destination": {
"chain": "avalanche",
"asset": "USDC",
"amount": 3000,
"type": "individual"
},
"commission": {
"amount": 10,
"percentage": 0
}
}Standard Quote Response Example
Array NoticeNote that the response
datafield is an Array. A single quote request can yield multiple quote objects for different payment and routing methods.
{
"data": [
{
"id": "quote_BoWt0rEkZgjEFkAKJSVAqyZqZxfy3gllaipYhJHH",
"payment_method": "ON_CHAIN",
"chain": "ethereum",
"source_country": null,
"destination_country": null,
"source_amount": "3010.000000",
"source_currency": "USDC",
"destination_amount": "3000.000000",
"destination_currency": "USDC",
"destination_chain": "avalanche",
"exchange_rate": "1.000000",
"exchange_pair": "USDC/USDC",
"crypto_settlement_time_min": 5,
"crypto_settlement_time_max": 20,
"crypto_settlement_time_unit": "MINUTES",
"source_type": "individual",
"destination_type": "individual",
"quote_expire_date": "2025-12-26T18:38:42+00:00",
"crypto_funds_settlement_expire_date": "2025-12-26T18:38:42+00:00",
"fees": [
{
"type": "HARBOR_FEE",
"amount": "55.160875",
"currency": "USDC",
"charge_from": "OwlPay Harbor",
"payer": "Wallet Service Provider"
},
{
"type": "COMMISSION_FEE",
"amount": "10.000000",
"currency": "USDC",
"charge_from": "Wallet Service Provider",
"payer": "customer"
}
],
"created_at": "2025-12-26T17:08:42+00:00",
"updated_at": "2025-12-26T17:08:42+00:00"
}
]
}Quote Response Example with Dynamic Customer Limits
If you supply the on_behalf_of parameter (the customer UUID), the API automatically calculates and appends the customer_limits structure, showing the customer's payment method limits and how much of each they have left.
{
"data": [
{
"id": "quote_BoWt0rEkZgjEFkAKJSVAqyZqZxfy3gllaipYhJHH",
"payment_method": "ON_CHAIN",
"chain": "ethereum",
"source_country": null,
"destination_country": null,
"source_amount": "3010.000000",
"source_currency": "USDC",
"destination_amount": "3000.000000",
"destination_currency": "USDC",
"destination_chain": "avalanche",
"exchange_rate": "1.000000",
"exchange_pair": "USDC/USDC",
"crypto_settlement_time_min": 5,
"crypto_settlement_time_max": 20,
"crypto_settlement_time_unit": "MINUTES",
"source_type": "individual",
"destination_type": "individual",
"quote_expire_date": "2025-12-26T18:38:42+00:00",
"crypto_funds_settlement_expire_date": "2025-12-26T18:38:42+00:00",
"fees": [
{
"type": "HARBOR_FEE",
"amount": "55.160875",
"currency": "USDC",
"charge_from": "OwlPay Harbor",
"payer": "Wallet Service Provider"
},
{
"type": "COMMISSION_FEE",
"amount": "10.000000",
"currency": "USDC",
"charge_from": "Wallet Service Provider",
"payer": "customer"
}
],
"customer_limits": {
"per_transaction_limit": "100000.000000",
"daily_limit": "500000.000000",
"weekly_limit": "2000000.000000",
"monthly_limit": "5000000.000000",
"current_remaining": "489500.000000"
},
"created_at": "2025-12-26T17:08:42+00:00",
"updated_at": "2025-12-26T17:08:42+00:00"
}
]
}Reading customer_limits
customer_limits- These are payment method limits, not tier limits.
customer_limitsshows the limits for the quote's payment method. The tier limits for the customer's verification level are not included. - A limit of
0means no limit. If a*_limitfield is0, no limit applies for that period. It does not mean the customer is blocked. - Check the
*_limitfield before the*_remainingfield. When there is no limit for a period, the matching*_remainingfield andcurrent_remainingalso return0.
Example: a wire quote returns 0 for every limit. This means wire has no payment method limits; the customer can still send a wire.
A successful quote does not mean the transfer will pass the tier limits. Tier limits are checked when you create the transfer, not when you request the quote. See Transaction Limits.
Updated about 18 hours ago