Skip to content
Last updated

The Native API provides two pricing endpoints: one for display-only indicative prices, and one that locks a rate and returns a quote ID. Using the quote ID flow guarantees that the rate shown to the user is the rate applied when the ramp is created.


Two pricing endpoints

EndpointPurposeReturns quoteId?
GET /eapi/v0/priceIndicative price for displayNo
GET /eapi/v0/quoteLocked price for ramp creationYes

Indicative pricing

GET /eapi/v0/price returns a real-time price estimate. Use it to display rates before a user has committed to transact. The rate is not persisted and cannot be passed to ramp creation.

For details on how fiat and crypto amount inputs work with this endpoint, see Pricing & Amount Inputs.

Locked pricing

GET /eapi/v0/quote locks a price and returns a quoteId with a 3-minute TTL. Pass the quoteId to POST /eapi/v0/ramps to create a ramp at that exact rate — no re-calculation at execution time.

A quoteId is one-time use — it cannot be reused after a ramp has been created with it.


Why use the quote ID flow

Without a quote ID, the typical flow re-calculates the rate at ramp creation:

  1. Call /price → rate returned
  2. Show rate to user on a confirmation screen
  3. User confirms
  4. Call /ramps with fiatAmount or cryptoAmount → rate re-calculated silently at step 4

If the market moves between steps 2 and 4, the ramp is created at a different rate than displayed. The quote ID flow eliminates this: the rate from step 2 is preserved and applied in step 4.


How it works

Banxa APIPartnerBanxa APIPartnerShow locked rate + countdown to userUser confirms within 3 minutesGET /eapi/v0/price (optional — for early display)Indicative rate (no quoteId)GET /eapi/v0/quotequoteId + expiresAt (3-minute TTL, UTC)POST /eapi/v0/ramps { quoteId, identityReference, walletAddress }Ramp created at locked rate
Banxa APIPartnerBanxa APIPartnerShow locked rate + countdown to userUser confirms within 3 minutesGET /eapi/v0/price (optional — for early display)Indicative rate (no quoteId)GET /eapi/v0/quotequoteId + expiresAt (3-minute TTL, UTC)POST /eapi/v0/ramps { quoteId, identityReference, walletAddress }Ramp created at locked rate

Step 1 — Fetch a locked quote

GET /eapi/v0/quote

All parameters are required. See the Quote API Reference for the full parameter list.

Example response (on-ramp, fiat-locked):

{
  "quoteId": "6e9174edd370ffe6331aeda7a6d75592",
  "identityReference": "customer-ref-1234",
  "source": {
    "fiat": {
      "id": "AUD",
      "method": "payid-bank-transfer"
    },
    "amount": "24.50"
  },
  "target": {
    "crypto": {
      "id": "ETH",
      "blockchain": "ETH"
    },
    "amount": "0.007259"
  },
  "processingFee": "0.00",
  "networkFee": "0.00",
  "marketRate": {
    "crypto": {
      "USD": "2342.218",
      "AUD": "3297.79"
    },
    "forex": {
      "reference": "USD",
      "AUD": "1.4079800"
    }
  },
  "expiresAt": "2026-04-10 04:50:36"
}
FieldDescription
quoteIdUnique identifier for this locked quote. Pass this to ramp creation.
identityReferenceThe customer this quote is bound to.
source.amountThe locked source amount (fiat for on-ramp, crypto for off-ramp).
target.amountThe locked target amount (crypto for on-ramp, fiat for off-ramp).
processingFeeBanxa processing fee in the source fiat currency.
networkFeeBlockchain network fee in the source fiat currency.
marketRateMarket rates used to calculate this quote — for display only.
expiresAtUTC timestamp after which this quote is no longer valid.

Step 2 — Create the ramp

Pass the quoteId to POST /eapi/v0/ramps. The amounts, payment method, and rate are all inferred from the quote — do not re-specify them.

Request body:

{
  "quoteId": "6e9174edd370ffe6331aeda7a6d75592",
  "identityReference": "customer-ref-1234",
  "walletAddress": "0xc292474673cf1a96a96e8c56ec4f45ecf2e0b448",
  "walletAddressMemo": null
}
FieldRequiredDescription
quoteIdYesThe quoteId from GET /eapi/v0/quote.
identityReferenceYesMust match the identityReference used when fetching the quote.
walletAddressYesThe customer's wallet address for the target asset.
walletAddressMemoNoMemo or destination tag, required by some networks (e.g. XRP, XLM, EOS).

See the Ramps API Reference for the full request schema.


Quote expiry

Quotes expire 3 minutes after creation (expiresAt is UTC). If the user does not confirm within the window, fetch a fresh quote before submitting the ramp.

Display the expiry countdown in your confirmation UI — it prevents users from being surprised by a rejected submission.