Выплаты

Предварительный расчёт

Узнайте заранее, сколько получит адресат и по какому курсу, - до того как деньги спишутся с баланса

GET/integration/payouts/quote

Расчёт по конкретному кошельку и сумме: сколько спишется с баланса, сколько дойдёт до получателя и какой курс применяется прямо сейчас. Ничего не списывает и не создаёт - это только расчёт.

Требуется подпись

Запрос подписывается, как и остальные ручки выплат. Для GET тело пустое - sha256(""), а в строку подписи идёт путь /api/v1/integration/payouts/quote без query-строки.

Расчёт без сохранения кошелька

POST/integration/payouts/quote

Передайте сумму, валюту и destination в JSON-теле. Его точные байты входят в HMAC-подпись, метод в строке подписи — POST. Адреса и номера карт не передавайте в query-строке. POST также принимает wallet_uuid вместо destination; ровно один из вариантов обязателен.

{
"amount": 250000,
"currency": "RUB",
"destination": {
"type": "usdt_trc20",
"address": "TTt2x7Z7Gg3WpAqvgYqFK3ZQTE5CYL8zSQ"
}
}

Правила destination такие же, как при создании заявки. Расчёт не сохраняет кошелёк и не резервирует средства. Формат ответа одинаков для GET и POST. GET по-прежнему требует wallet_uuid; прямые реквизиты в нём не принимаются.

Query-параметры

ПолеТипОписание
currencystringБаланс списания: RUB (по умолчанию) или EUR. EUR поддерживается для USDT-кошельков
amountобязательноеintegerСумма списания с баланса в минорных единицах, от 1. Для RUB — копейки, для EUR — центы
wallet_uuidобязательноеuuidКошелёк, на который планируется выплата. От его типа зависит форма ответа - см. ниже. Тот жеwallet_uuid затем передаётся в создание выплаты

Две формы ответа

Поле quote_type говорит, какой набор полей пришёл. Оно определяется типом кошелька, а не вашим запросом.

quote_type: usdt_trc20

Это общее значение для расчёта USDT во всех поддерживаемых сетях. Оно не меняет сеть кошелька: сеть определяется по wallet_uuid

ПолеТипОписание
source_amountintegerСколько спишется с баланса, в минорных единицах
source_currencystringВалюта списания (RUB или EUR)
available_amountintegerДоступный остаток на балансе на момент расчёта
usdt_amount_microintegerСколько получит адресат в USDT, в микро-единицах: 1 USDT = 1 000 000
withdrawal_fee_amountintegerУдерживаемая комиссия в валюте списания
net_amountintegerСумма после удержания комиссии, которая конвертируется в USDT
rate_updated_atstringКогда курс был зафиксирован (ISO 8601)

quote_type: card

ПолеТипОписание
source_amountintegerСколько спишется с баланса, в минорных единицах
source_currencystringВалюта списания (RUB)
available_amountintegerДоступный остаток на балансе на момент расчёта
fee_percent_bpsintegerСовокупная ставка с учётом настроек комиссии провайдера и FX, в базисных пунктах: 150 = 1,5%
fee_amountintegerКомиссия в минорных единицах
net_card_rub_amountintegerСколько придёт на карту в копейках после удержаний и округления вниз до целого рубля
card_payout_limitsobjectДействующие лимиты на выплаты по карте: минимальная и максимальная сумма зачисления (min_net_amount_minor, max_net_amount_minor), число выплат на карту в сутки (max_payouts_per_day) и месячный потолок (monthly_net_amount_minor). Ориентируйтесь на значения из ответа - они могут меняться

Пример

200 OK
# Подпись - по пути без query:
# {timestamp}\n GET \n /api/v1/integration/payouts/quote \n sha256("")
curl -G "https://api.cashera.cash/api/v1/integration/payouts/quote" \
--data-urlencode "amount=2102100" \
--data-urlencode "wallet_uuid=b41f0c8e-3d55-4a17-9e02-7c6d1a8f4b30" \
-H "X-Api-Key: $CASHERA_API_KEY" \
-H "X-Timestamp: 1780000000" \
-H "X-Signature: a91c4f...2db8"
Курс живёт недолго

Расчёт отражает курс на момент запроса - при создании выплаты он берётся заново. Между расчётом и созданием сумма в USDT может немного отличаться. Показывайте расчёт как ориентир, а фактические значения берите из ответа на создание или из истории. Для защиты от уменьшения суммы получения передайте expected_usdt_amount_micro в запрос создания: если расчёт стал меньше, получите 409 без создания заявки. Для карт этот параметр не применяется.

Ошибки

ПолеТипОписание
401UnauthorizedПроблема с подписью
404Not FoundКошелёк не найден или принадлежит другому мерчанту
422Unprocessable EntityНе передан amount или wallet_uuid, валюта кошелька не совпадает с валютой баланса, недостаточно средств либо сумма выходит за лимиты выплат на карту