Payments
Buy (RUB → USDT через СБП), Sell (USDT → RUB через СБП), Crypto Deposit и Withdraw на managed customers. Все операции требуют kyc_status='verified'.
⚠
KYC gate
Любая операция без верифицированного customer'а вернёт 422 KYC_REQUIRED. Сначала пройдите KYC.
Котировки
Курсы обновляются у Finance OS раз в минуту и фиксируются на 60 секунд после первой котировки в сессии.
Buy quote
POST
/api/v1/customers/{uuid}/payments/buy/calculate
⚷
Bearer Token
Сколько USDT за N рублей
Body
| Name | Type | Required | Description |
|---|---|---|---|
amount_rub
|
numeric
|
required | 100..100000 RUB. |
Sell quote
POST
/api/v1/customers/{uuid}/payments/sell/calculate
⚷
Bearer Token
Сколько RUB за N USDT
Body
| Name | Type | Required | Description |
|---|---|---|---|
amount_usdt
|
numeric
|
required | 1..1000 USDT. |
Текущие курсы (без customer)
GET
/api/v1/payments/rates
⚷
Bearer Token
Buy/sell rate без привязки к customer'у
Buy (RUB → USDT)
POST
/api/v1/customers/{uuid}/payments/buy
⚷
Bearer Token
Создать СБП-платёж
Возвращает transaction с QR-кодом для СБП. End-user сканирует QR в своём банковском приложении, переводит RUB, USDT зачисляется на баланс customer'а.
Body
| Name | Type | Required | Description |
|---|---|---|---|
amount_rub
|
numeric
|
required | 100..100000. |
bank_id
|
string
|
required | Идентификатор банка-получателя. |
Responses
{
"data": {
"uuid": "1a7ee75b-7f0e-48af-a075-a56721f1140e",
"type": "payment",
"status": "pending",
"status_code": 0,
"amount_from": "1000",
"amount_to": "12.9602550000",
"currency_from": "RUB",
"currency_to": "USDT",
"rate": "0.012960254775",
"qr_url": "https://fin-os.io/api/v1/sandbox/qr/abc123.png",
"expires_at": "2026-05-27T14:38:00+00:00",
"env": "sandbox"
}
}
Buy status
GET
/api/v1/customers/{uuid}/payments/buy/{txUuid}/status
⚷
Bearer Token
Проверить статус buy-транзакции
В sandbox через ~5 секунд автоматически переходит в
completed и USDT кредитится на баланс customer'а. В live статус обновляется через провайдерский webhook.Sell (USDT → RUB)
POST
/api/v1/customers/{uuid}/payments/sell
⚷
Bearer Token
Создать СБП-выплату на банковский счёт
Сумма USDT блокируется (
locked) в момент создания. При success — consume'ится; при failure — возвращается в available.Body
| Name | Type | Required | Description |
|---|---|---|---|
amount_usdt
|
numeric
|
required | 1..1000. |
bank_id
|
string
|
required | Банк-получатель. |
phone
|
string
|
required | Телефон счёта в СБП (E.164). |
Sell status
GET
/api/v1/customers/{uuid}/payments/sell/{txUuid}/status
⚷
Bearer Token
Проверить статус sell-транзакции
Crypto deposit
POST
/api/v1/customers/{uuid}/payments/deposit/address
⚷
Bearer Token
Получить адрес для крипто-депозита
Возвращает адрес для пополнения customer'а в указанной сети. End-user отправляет криптовалюту по этому адресу — балансы customer'а обновятся при подтверждении транзакции в блокчейне.
Body
| Name | Type | Required | Description |
|---|---|---|---|
currency
|
enum
|
optional |
USDT, BTC, ETH, LTC, KAS.
Default:
USDT |
Responses
{
"data": {
"currency": "USDT",
"network": "TRC20",
"address": "TXYZ1234567890abcdef...",
"min_deposit": "1.000000",
"env": "live",
"warning": "Send only USDT in TRC20 network to this address."
}
}
Crypto withdraw
POST
/api/v1/customers/{uuid}/payments/withdraw
⚷
Bearer Token
Crypto-вывод на внешний адрес
Сумма блокируется (
locked). После транзакции в сети — consume'ится.Body
| Name | Type | Required | Description |
|---|---|---|---|
currency
|
enum
|
required |
USDT/BTC/ETH/LTC/KAS.
|
amount
|
numeric
|
required | Минимум 0.000001. |
address
|
string
|
required | Внешний адрес. |