<!-- ZenPays documentation · https://docs.zenpayz.com/docs/rest-api/endpoints/ramp/buy-quotes -->

# Get Buy Quotes

Get on-ramp quotes showing how much crypto you receive for a given fiat amount. Returns multiple quotes from different sources so you can compare rates and fees.

<EndpointHeader verb="GET" path="/payment/api/v1/on-ramp/quotes" />

## Request

### Headers

<ParamTable
  label="Header"
  rows={[
    { name: "x-request-id", desc: "Custom request ID for tracing" },
  ]}
/>

:::note Public Endpoint
This endpoint does not require authentication headers.
:::

### Query Parameters

<ParamTable
  rows={[
    { name: "source", type: "string", required: true, desc: "Fiat currency (e.g. `usd`, `eur`)" },
    { name: "destination", type: "string", required: true, desc: "Crypto ID (e.g. `btc_bitcoin`, `eth_ethereum`)" },
    { name: "amount", type: "string", required: true, desc: "Fiat amount (e.g. `100`)" },
    { name: "paymentMethod", type: "string", desc: "Filter by payment method (e.g. `creditcard`)" },
    { name: "country", type: "string", desc: "ISO country code" },
    { name: "walletAddress", type: "string", desc: "Destination wallet address" },
    { name: "uuid", type: "string", desc: "Unique user identifier" },
  ]}
/>

## Response

### Success (200 OK)

```json
{
  "success": true,
  "data": [
    {
      "onramp": "moonpay",
      "paymentMethod": "creditcard",
      "inputAmount": 100,
      "outputAmount": 0.00112,
      "rate": 89285.71,
      "networkFee": 0.5,
      "transactionFee": 3.99,
      "totalFee": 4.49,
      "recommended": true,
      "labels": ["best_rate"],
      "minAmount": 20,
      "maxAmount": 10000,
      "quoteId": "01H985NH79FW951SKERQ45JMYXmoonpay",
      "availablePaymentMethods": [
        { "paymentTypeId": "creditcard", "name": "Credit Card", "icon": "https://cdn.onramper.com/icons/payments/creditcard.svg" },
        { "paymentTypeId": "banktransfer", "name": "Bank Transfer", "icon": "https://cdn.onramper.com/icons/payments/banktransfer.svg" }
      ]
    },
    {
      "onramp": "transak",
      "paymentMethod": "creditcard",
      "inputAmount": 100,
      "outputAmount": 0.00110,
      "rate": 90909.09,
      "networkFee": 1.0,
      "transactionFee": 4.50,
      "totalFee": 5.50,
      "recommended": false,
      "labels": [],
      "minAmount": 30,
      "maxAmount": 5000,
      "quoteId": "01H985NH79FW951SKERQ45JMYXtransak",
      "availablePaymentMethods": [
        { "paymentTypeId": "creditcard", "name": "Credit Card", "icon": "https://cdn.onramper.com/icons/payments/creditcard.svg" }
      ]
    }
  ],
  "message": "Quotes retrieved"
}
```

### Response Fields

<ParamTable
  rows={[
    { name: "onramp", type: "string", desc: "Reference identifier -- pass this to the checkout endpoint" },
    { name: "paymentMethod", type: "string", desc: "Payment method for this quote" },
    { name: "inputAmount", type: "number", desc: "Fiat amount you pay" },
    { name: "outputAmount", type: "number", desc: "Crypto amount you receive" },
    { name: "rate", type: "number", desc: "Exchange rate" },
    { name: "networkFee", type: "number", desc: "Blockchain network fee" },
    { name: "transactionFee", type: "number", desc: "Processing fee" },
    { name: "totalFee", type: "number", desc: "Combined fees" },
    { name: "recommended", type: "boolean", desc: "Whether this is the recommended quote" },
    { name: "labels", type: "string[]", desc: "Tags like `best_rate`, `low_kyc`" },
    { name: "minAmount", type: "number", desc: "Minimum allowed amount" },
    { name: "maxAmount", type: "number", desc: "Maximum allowed amount" },
    { name: "estimatedTime", type: "string", desc: "Estimated completion time" },
    { name: "errors", type: "string[]", desc: "Any issues with this quote" },
    { name: "quoteId", type: "string", desc: "Unique quote identifier for reference" },
    { name: "availablePaymentMethods", type: "array", desc: "Payment methods available for this quote. Each entry has `paymentTypeId`, `name`, and `icon`" },
  ]}
/>

:::tip
The `onramp` field is a reference identifier. When creating a checkout, pass the `onramp` value from your selected quote.
:::

### Error Responses

<ErrorTable
  rows={[
    { code: "RAMP_QUOTES_FAILED", status: "500", message: "Failed to get buy quotes" },
  ]}
/>

<CodeRail>

## Examples

<Tabs groupId="language">
  <TabItem value="curl" label="cURL" default>

```bash
curl "https://api.zenpayz.com/payment/api/v1/on-ramp/quotes?source=usd&destination=btc_bitcoin&amount=100&paymentMethod=creditcard"
```

  </TabItem>
  <TabItem value="javascript" label="JavaScript">

```javascript
const params = new URLSearchParams({
  source: 'usd',
  destination: 'btc_bitcoin',
  amount: '100',
  paymentMethod: 'creditcard',
});

const response = await fetch(
  `https://api.zenpayz.com/payment/api/v1/on-ramp/quotes?${params}`
);
const { data: quotes } = await response.json();

// Find the recommended quote
const best = quotes.find(q => q.recommended) || quotes[0];
console.log(`Best rate: ${best.outputAmount} BTC for $${best.inputAmount}`);
console.log(`Fees: $${best.totalFee}`);

// Use best.onramp when creating checkout
```

  </TabItem>
  <TabItem value="python" label="Python">

```python
import requests

response = requests.get(
    "https://api.zenpayz.com/payment/api/v1/on-ramp/quotes",
    params={
        "source": "usd",
        "destination": "btc_bitcoin",
        "amount": "100",
        "paymentMethod": "creditcard",
    },
)
quotes = response.json()["data"]

# Find recommended quote
best = next((q for q in quotes if q["recommended"]), quotes[0])
print(f"Best rate: {best['outputAmount']} BTC for ${best['inputAmount']}")
print(f"Fees: ${best['totalFee']}")

# Use best["onramp"] when creating checkout
```

  </TabItem>
</Tabs>

</CodeRail>

## Next Steps

- [Buy Checkout](/docs/rest-api/endpoints/ramp/buy-checkout) -- Create a checkout with the selected quote
- [Buy Rates](/docs/rest-api/endpoints/ramp/buy-rates) -- Get rates for multiple assets at once
- [Buy Prices](/docs/rest-api/endpoints/ramp/buy-prices) -- Get current crypto prices
