Properties
Source / Destination
Both source and destination have the same structure:
Fee behavior
feeBehavior describes how fees relate to source.amount when you request a quote by source.amount:
inclusive (default): the customer pays exactly source.amount, and fees are carved out of it.
exclusive: fees are added on top of source.amount. The full source.amount is converted, so the customer receives more crypto than the inclusive quote for the same input.
Set feeBehavior on the buy-quote request to choose the behavior. It applies only to source-amount quotes. When you quote by destination.amount, MoonPay ignores the request value and the quote is always fees-inclusive. The response always echoes the effective feeBehavior.
Exchange rate type
exchangeRateType tells you whether the quoted amount is final or an estimate, and pairs with the exchangeRate field:
fixed: the exchange rate is locked at quote time. Card and wallet methods (card, Apple Pay, Google Pay) return fixed, and the quoted amount is final.
floating: the exchange rate is an estimate confirmed when the payment settles. Bank transfers (SEPA) return floating.
When exchangeRateType is floating, render the estimated crypto amount with a tilde (for example, ~0.2345 BTC) and tell the customer the final amount is set when the transfer settles.
Bank transfers don’t support DeFi assets. If you request a bank-transfer quote
(sepa) for a destination identified by caip19, the request fails with
400 and the message “Bank transfers are not supported for DeFi assets.”
Offer a card or wallet payment method for these assets instead.
Challenge
challenge is present when the customer must complete a step before this quote
can be executed. It arrives alongside executable: false. Mount the
challenge frame at url, then request the quote
again once the challenge resolves.
Guest checkout limit upgrades are the one flow that returns challenge on a
quote today. See Upgrade a guest
account.
Using the Quote
Pass the signature to the payment frame when you mount it. The frame uses this signature along with the quote data to execute the payment and create the transaction.
Quotes expire. Check expiresAt and create the transaction before this time.
If executable is false, the customer must provide additional information
before you can use this quote. When the quote also carries a
challenge, that object tells you what to render to collect it.
Payment disclosures
Each item in paymentDisclosures identifies a specific piece of text you must render verbatim.
Disclosure IDs
Example