Find the best offer
Find the best offer.
Credential: Customer session
Before you call
- A customer session for the same partner, integration, customer, wallet and chain.
- An active saved account matching the catalog payment method.
- A registered customer wallet and supported chain.
Finds merchant offers that match a customer’s BUY or SELL request.
amount.mode sets what amount.value means. With USDT, it is an exact token quantity. With FIAT, it is the market value of the tokens in fiatCurrencyId, before merchant margin and fees, for both BUY and SELL. Sinbad converts it to USDT using the current fiat/USD and USDT/USD rates, rounded down to six decimals. The final fiat payment includes merchant pricing and fees, so it can differ from the amount you entered.
paymentMethodId is required. On a SELL, set savedPaymentMethodId to choose the receiving account. If you omit it, Sinbad selects the customer’s first active matching account.
The response contains one instant offer or up to three alternatives. If the amount is outside every listing’s limits, or no inventory is eligible, the response is 200 with empty results. Sinbad excludes the customer’s own merchant wallet, ignoring case. If that is the only otherwise eligible match, the call returns 400 VALIDATION_ERROR with details.reason: SELF_TRADE_NOT_ALLOWED.
To create a breakdown, send the chosen offer’s breakdownInput unchanged. A new FIAT search returns a fixed USDT amount in breakdownInput, so the token quantity stays the same through checkout and across alternative currencies. A closest-amount suggestion can change that quantity.
Offer searches and breakdown creation share a limit of 60 requests per minute for each customer and integration. A 429 response includes Retry-After. Sinbad rechecks the price, listing availability and fees when you create the breakdown. You are responsible for verifying your customers’ identity. Location enforcement depends on the environment, so confirm the enabled policy with Sinbad.
Confirm with Sinbad that this endpoint is enabled in your environment.
Errors
Authentication
Bearer authentication of the form Bearer <token>, where token is your auth token.
Request
FIAT is the principal’s market value in fiatCurrencyId before merchant margin and fees; USDT is an exact token quantity. FIAT conversion rounds down to six USDT decimals.
Alias for customer side; conflicting aliases are rejected.
Card/Sheet display only. DUMMY uses a $10 USD example; REAL uses the actual requested or suggested amount. Execution always uses actual pricing. Preserve in issued breakdownInput.
Optional ISO 8601 date-time, formatted YYYY-MM-DDTHH:mm[:ss[.SSS]][Z|±HH:MM]. Fractional seconds accept at most 3 digits, so truncate 6-digit values such as .190505 to milliseconds. An offset-free value uses timezone, or UTC if timezone is omitted. A value with Z or an explicit offset keeps that offset and ignores timezone. Normalized to UTC in breakdownInput. Filters merchant hours only; does not delay execution. Malformed, invalid or ambiguous local times (such as during a daylight saving change) are rejected with VALIDATION_ERROR.
Optional IANA timezone name such as Asia/Karachi. Used only for an offset-free scheduled_at and ignored when scheduled_at has Z or an offset. Merchant hours use the merchant timezone at the scheduled instant.
Optional minimum merchant rating; unrated merchants do not match.
Skip only supplied scheduled-hours filtering, including for alternatives. Preserve this value when creating a breakdown.
Response
One customer-scoped round-robin match or up to three alternatives; empty arrays mean no inventory.