Create payout quote
Prices a payout for a fixed target amount: what the recipient receives, in the destination currency. The quote tells you how much you pay in the source currency, at what rate, and until when that price holds.
You name the corridor and the amount; nothing else. A corridor is one of the routes Ryno has set up for your account: a source currency paid out as a destination currency in a destination country. Ryno derives the currencies, the country, the payout rail and the provider from the corridor, so you cannot ask for a rail that is not configured for you. Get the ids from List payout corridors, which returns only the corridors you can price right now.
A quote holds a price; it does not move money. Payout creation is not yet on the Partner API; when it is, it will take the quoteId from this call as the only accepted price.
Headers
Idempotency-KeystringheaderrequiredA key you generate per quote request, at most 255 characters. Sending the same key with the same body returns the same quote, so retry a timed-out call with the key you already used. Sending the same key with a different body is 409 PayoutQuote.IdempotencyConflict.
A replay returns the original quote even after it has expired. Use a new key to get a fresh price.
Body
corridorIduuidrequiredA corridorId from List payout corridors. It fixes the source currency, the destination currency and country, and the payout rail. An id that is not one of your corridors, or whose route is switched off, is 422 PayoutQuote.CorridorUnavailable.
targetAmountnumberrequiredThe amount the recipient receives, in the corridor's destination currency. Greater than zero, at most 18 decimal places.
Response
quoteIduuidRyno's id for this quote. Keep it; it is the price a payout will reference.
sourceCurrencystringThe currency you pay in, from the corridor, for example USDT.
sourceNetworkstringThe network the source currency is sent on, for example TRX, when the corridor's route is tied to one. null when it is not.
destinationCurrencystringThe currency the recipient receives, from the corridor.
destinationCountrystringThe recipient's country, ISO 3166-1 alpha-3, from the corridor.
railstringHow the recipient is paid, chosen by Ryno for this corridor. One of Wire, ACH, BankTransfer, OnChain, MobileMoney, SEPA, SWIFT, FasterPayments, PIX, RTGS, EFT, Interac, UPI, NEFT, IMPS, NIP, Stablecoin, Card, CNAPS, FPS.
targetAmountnumberWhat the recipient receives, as you requested it.
sourceAmountnumberWhat you pay, in sourceCurrency, including Ryno's fees.
exchangeRatenumberUnits of destinationCurrency per one unit of sourceCurrency, exactly targetAmount / sourceAmount at full precision. Round it only for display.
expiresAtUtcdatetimeWhen the price stops being honoured, in UTC. Quotes are short-lived; request a new one rather than reusing an expired quote.
Errors
| Code | HTTP | Meaning |
|---|---|---|
idempotency.key_required | 400 | No Idempotency-Key header, or it is blank. |
idempotency.key_invalid | 400 | More than one Idempotency-Key header, or the key is longer than 255 characters. |
PayoutQuote.InvalidRequest | 400 | corridorId is missing or not a UUID, or targetAmount is missing, zero, negative or too precise. |
Request.Invalid | 400 | The body is not valid JSON. |
Auth.Unauthorized | 401 | The token is missing or invalid. |
Auth.Forbidden | 403 | The token is not a partner credential, or lacks partner.write. |
PayoutQuote.CustomerInactive | 403 | Your account is not active. Contact support. |
PayoutQuote.CustomerNotFound | 404 | Your account could not be found. Contact support. |
PayoutQuote.IdempotencyConflict | 409 | The Idempotency-Key was already used with a different body. Use a new key. |
PayoutQuote.AmountOutsideRouteLimits | 422 | targetAmount is below the minimum or above the maximum for this corridor. |
PayoutQuote.CorridorUnavailable | 422 | corridorId is not one of your corridors, or no active payout route is configured for it. Do not retry unchanged; refresh List payout corridors and use an id from it. |
PayoutQuote.Unavailable | 422 | Pricing for this corridor is not set up, or not viable right now. Do not retry unchanged. |
PayoutQuote.Unavailable | 503 | A pricing dependency is down. Retry with backoff, using the same key. |
The 401, 429 and 503 responses from the API gateway use a different body. See Errors.