Finance OS / API

Withdraw

POST /api/wallet/withdraw
Bearer Token

Запросить вывод средств

Инициирует вывод указанной суммы на внешний адрес. Операция асинхронная — сразу возвращается транзакция в статусе pending, далее обрабатывается compliance + broadcast в сеть. Финальный статус приходит через webhook.

Request body

Name Type Required Description
currency string required Валюта вывода.
network string required Сеть. Влияет на комиссию.
amount string (decimal) required Сумма к получению (не включая комиссию).
address string required Адрес получателя. Валидируется на формат + checksum для сети.
memo string optional Memo/tag для XRP, XLM, EOS. Игнорируется для других сетей.
two_factor_code string required 6-значный TOTP. Обязателен для вывода >$100 даже если 2FA не включён глобально.
description string optional Внутренняя пометка для истории (видна только пользователю).
external_id string optional Ваш внутренний ID операции для сверки.
Idempotency обязателен
Всегда передавайте заголовок Idempotency-Key: {uuid} при выводе. Без него повтор запроса (например, после network timeout) может привести к двойному выводу.

Response

Responses

{
  "data": {
    "id": "tx_5f8d7a3c-1234-4567-89ab-cdef01234567",
    "type": "withdraw",
    "status": "pending",
    "amount": "50.000000",
    "currency": "USDT",
    "network": "TRC20",
    "fee": "1.000000",
    "fee_currency": "USDT",
    "to_address": "TRecipientAddress...",
    "created_at": "2026-05-27T14:23:00Z",
    "estimated_completion": "2026-05-27T14:25:00Z",
    "links": {
      "self": "https://fin-os.io/api/transactions/tx_5f8d..."
    }
  }
}
{
  "message": "Insufficient balance.",
  "error_code": "INSUFFICIENT_BALANCE",
  "details": {
    "requested": "50.000000",
    "available": "23.500000",
    "currency": "USDT"
  }
}
{
  "message": "Recipient address is sanctioned.",
  "error_code": "SANCTION_HIT",
  "details": {
    "screening_provider": "internal_aml",
    "category": "OFAC_SDN"
  }
}
{
  "message": "KYC level 2+ required for withdrawals.",
  "error_code": "KYC_REQUIRED"
}
{
  "message": "Idempotency key conflict.",
  "error_code": "IDEMPOTENCY_CONFLICT"
}

Lifecycle

  1. 202 Accepted — операция принята, баланс заблокирован.
  2. Compliance check (5-30 сек) — проверка AML, санкций, лимитов.
  3. Broadcasting — транзакция отправлена в сеть, tx_hash доступен.
  4. Confirming — ждём подтверждений сети (TRC20: 1, BTC: 2, ETH: 12).
  5. Completed — финализирована. Webhook wallet.withdraw.completed.

Лимиты вывода

Name Type Required Description
KYC L1 $0 optional Вывод запрещён.
KYC L2 $10,000/день, $50,000/месяц optional Стандартный лимит.
KYC L3 без лимитов optional Subject to AML monitoring.
OTC partner $1,000,000/день optional Специальный профиль для B2B-клиентов.