---
title: "POST /v3/quote/best-by-platform"
method: POST
path: "/v3/quote/best-by-platform"
tags: ["Quotes V3"]
---

# POST /v3/quote/best-by-platform

`POST /v3/quote/best-by-platform`

Best quote per payment platform for an exact fiat amount.

## Headers

- `x-pp-key` string — Optional env-configured Peer Pay service key

## Request body

- object — Request for best quote per payment platform
  - `fiatCurrency` string, required — Fiat currency code (e.g., 'USD', 'EUR')
  - `exactFiatAmount` string, required — Exact fiat amount in token units (e.g., '100000000' = $100)
  - `user` string, required — User's Ethereum address (excluded from quotes)
  - `recipient` string, required — Recipient Ethereum address
  - `destinationChainId` integer, required — Destination chain ID
  - `destinationToken` string, required — Token address (e.g., USDC on Base)
  - `referrer` string — Optional referrer address
  - `referralFees` object[] — Caller-provided referral fees that will be sent at intent time. Curator uses the sum to gross up signalIntentAmount, and uses the entry whose recipient matches serviceFee.recipient as the donor for maker-referrer carve.
    - `recipient` string, required — Referral fee recipient address
    - `feeBps` integer, required — Referral fee in basis points
  - `escrowAddresses` string[], required — List of escrow contract addresses to search
  - `minDepositSuccessRateBps` integer — Minimum maker success rate in basis points (0-10000)
  - `supportBusinessAccounts` boolean — Include business accounts in quotes (default: false)
  - `mode` 'eligible' | 'eligible_with_chargeback' | 'eligible_with_chargeback_staked' — eligible returns quotes the user can take via the direct route: whitelist-off deposits without dispute, plus whitelist-enabled deposits the user is whitelisted for (whitelisted takers bypass dispute staking); eligible_with_chargeback also returns dispute-route quotes, where stake is locked at signal; eligible_with_chargeback_staked returns dispute-route quotes only when the user's free stake covers the signal amount
  - `quotePreference` 'EXCLUSIVE_SAR' | 'PREFER_SAR' | 'PREFER_BUYER_TEE' | 'EXCLUSIVE_BUYER_TEE' — Preferred quote pool and fallback behavior
  - `excludedPayToValues` string[] — Payee values to exclude from quote selection

## Response `200`

Success

- object
  - `success` boolean, required
  - `message` string, required
  - `responseObject` object
    - `fiat` object, required
      - `currencyCode` string, required — Hashed fiat currency code
      - `currencyName` string, required — Fiat currency name
      - `currencySymbol` string, required — Fiat currency symbol
      - `countryCode` string, required — Fiat currency country code
    - `token` object, required
      - `token` string, required — Token address
      - `decimals` number, required — Token amount decimals
      - `name` string, required — Token name
      - `symbol` string, required — Token symbol
      - `chainId` number, required — Chain ID
    - `fees` object, required
      - `zkp2pFee` string, required — Service fee in preciseUnits (1e18 = 100%, 1e16 = 1%). '0' when disabled.
      - `zkp2pFeeFormatted` string, required — Service fee as human-readable percentage (e.g. '1%')
      - `swapFee` string, required — Swap fee
      - `swapFeeFormatted` string, required — Swap fee formatted
    - `platformQuotes` object[], required — Best quote per payment platform
      - `platform` string, required — Payment platform name
      - `supported` boolean, required — Whether this platform supports the requested currency
      - `available` boolean, required — Whether a quote is available for this platform
      - `bestQuote` object — Best quote for this platform, if available
        - `fiatAmount` string, required — Fiat amount
        - `fiatAmountFormatted` string, required — Fiat amount formatted
        - `tokenAmount` string, required — Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees.
        - `tokenAmountFormatted` string, required — Net token output amount formatted
        - `signalIntentAmount` string — Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`.
        - `signalIntentAmountFormatted` string — signalIntent amount formatted
        - `zkp2pFeeAmount` string — Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount.
        - `zkp2pFeeAmountFormatted` string — Curator-enforced ZKP2P protocol fee amount formatted
        - `serviceFeeBps` integer — Actual curator service fee rate used for this quote, in basis points.
        - `takerReferralFeeBps` integer — Total caller-provided referral fee rate used for this quote, in basis points.
        - `takerReferralFeeAmount` string — Total caller-provided referral fee amount deducted from signalIntentAmount.
        - `takerReferralFeeAmountFormatted` string — Total caller-provided referral fee amount formatted
        - `managerFeeAmount` string — Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount).
        - `managerFeeAmountFormatted` string — Informational manager fee amount formatted
        - `totalFeeAmount` string — Combined display total of protocol fee + caller referral fees + rate-implicit manager fee.
        - `totalFeeAmountFormatted` string — Combined display total formatted
        - `paymentMethod` string, required — Payment method
        - `payeeAddress` string, required
        - `conversionRate` string, required — Conversion rate
        - `sellerAutomatedReleaseAvailable` boolean, required — Whether seller automated release is currently available for this quote
        - `depositSuccessRateBps` integer, required — Deposit success rate in basis points (0–10000)
        - `depositIntentStats` object, required — Per-deposit historical intent counters
          - `totalIntents` integer, required
          - `signaledIntents` integer, required
          - `fulfilledIntents` integer, required
          - `prunedIntents` integer, required
        - `whitelistEnabled` boolean, required — Whether the deposit's V3 whitelist policy is enabled, copied from the indexer without reinterpretation.
        - `allowedGroupIds` string[], required — Allowed V3 address-group identifiers. Empty unless whitelistEnabled.
        - `disputeProtectionOptedOut` boolean, required — Depositor explicitly opted this deposit/payment-method tuple out of default-on dispute protection on the active policy.
        - `disputeProtectionRequiresStake` boolean, required — Active policy routes non-whitelisted takers through stake-backed admission for this tuple (not opted out and nonzero risk window). Neither field proves request-level routing, locked stake, or live coverage.
        - `intent` object, required
          - `depositId` integer, required — Deposit identifier
          - `processorName` string, required
          - `amount` string, required — Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`.
          - `toAddress` string, required
          - `payeeDetails` string, required
          - `processorIntentData` object, required
          - `fiatCurrencyCode` string, required
          - `chainId` string, required
          - `escrowAddress` string, required
          - `managerFee` string — Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated
          - `managerFeeFormatted` string — Human-readable manager fee percentage
          - `whitelistHookAddress` string, nullable — Whitelist hook contract address, if configured
          - `preIntentHookAddress` string, nullable — Compatibility alias for whitelistHookAddress
        - `maker` object — Maker (payee) details when available
          - `id` number, required
          - `processorName` string, required
          - `offchainId` string, required
          - `telegramUsername` string, nullable
          - `hashedOnchainId` string, required
          - `isBusiness` boolean
          - `revoked` boolean
          - `metadata` object, nullable
          - `createdAt` string, date-time, required
    - `quoteExpiresAt` string, required — ISO 8601 timestamp after which the quote should be re-fetched
    - `orchestratorAddress` string, required
    - `mode` 'eligible' | 'eligible_with_chargeback' | 'eligible_with_chargeback_staked', required
  - `statusCode` number, required
  - `errorCode` string

---

[API](https://skmtc.dev/peer/apis/swagger-api.md) · [All operations](https://skmtc.dev/peer/apis/swagger-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/peer/swagger-api/revisions/d5fcf4abb61a/schema)
