Skip to main content
Create a Quote
curl --request POST \
  --url https://api.spherepay.co/v2/quote \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "amount": "100.00",
  "customerId": "customer_3faa484998f44cfead9668608b9ee1f5",
  "source": {
    "currency": "usdc",
    "network": "polygon"
  },
  "destination": {
    "currency": "brl",
    "network": "pix"
  },
  "quoteDurationSeconds": 60,
  "integratorBpsFeeRate": "20"
}
'
{
  "id": "quote_d243ab2b1de4447d8a046d87fefe58cf",
  "type": "off_ramp",
  "customerId": "customer_3faa484998f44cfead9668608b9ee1f5",
  "fees": {
    "integratorFee": {
      "fixedAmount": "0.00",
      "bpsRate": "20",
      "bpsAmount": "0.20",
      "totalAmount": "0.20",
      "currency": "usdc"
    },
    "platformFee": {
      "fixedAmount": "0.00",
      "bpsRate": "20",
      "bpsAmount": "0.20",
      "totalAmount": "0.20",
      "currency": "usdc"
    }
  },
  "source": {
    "currency": "usdc",
    "network": "polygon",
    "amount": "100.00"
  },
  "destination": {
    "currency": "brl",
    "network": "pix",
    "amount": "545.50",
    "exchangeRate": "5.455"
  },
  "expiresAt": "2025-01-01T00:01:00.000Z",
  "created": "2025-01-01T00:00:00.000Z"
}
Use this endpoint to lock an exchange rate before creating a transfer. Quotes give the customer a deterministic source-to-destination conversion rate that’s valid for a fixed window (30, 60, or 300 seconds). The quote captures the source amount, destination amount, exchange rate, and full fee breakdown (integrator + platform) at the moment of issuance. A quote can be redeemed exactly once by passing its ID when calling Create Transfer.
Quotes are most useful for trading and cross-border payouts where the customer needs to see the exact rate they’ll receive before committing the transfer. For floating-rate transfers (e.g. payroll, treasury rebalancing), skip the quote and call /v2/transfer directly.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
amount
string
required

The quote amount (denominated in source currency).

Pattern: ^\d+(\.\d{2})?$
Example:

"100.00"

customerId
string
required

The customer's ID.

Pattern: ^customer_[a-z0-9]+$
Example:

"customer_3faa484998f44cfead9668608b9ee1f5"

source
object
required

The source currency and network for the quote.

destination
object
required

The destination currency and network for the quote.

quoteDurationSeconds
enum<number>
default:60

The duration in seconds for which the quote rate is locked. Defaults to 60.

Available options:
30,
60,
300
Example:

60

integratorBpsFeeRate
string

The integrator BPS fee rate. The BPS rate should be an integer represented as a string.

Example:

"20"

Response

id
string
required

A unique identifier for the quote.

Pattern: ^quote_[a-z0-9]+$
Example:

"quote_d243ab2b1de4447d8a046d87fefe58cf"

type
enum<string>
required

The transfer type this quote is for.

Available options:
on_ramp,
off_ramp
Example:

"off_ramp"

customerId
string
required

The customer ID.

Example:

"customer_d243ab2b1de4447d8a046d87fefe58cf"

fees
object
required
source
object
required
destination
object
required
expiresAt
string<date-time>
required

The datetime when this quote expires.

Example:

"2025-01-01T00:01:00.000Z"

created
string<date-time>
required

The datetime the quote was created.

Example:

"2025-01-01T00:00:00.000Z"

Last modified on June 18, 2026