> ## Documentation Index
> Fetch the complete documentation index at: https://oblodai.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# POST /v1/wallet/blocked-address-refund

Вернуть средства, полученные на (обычно заблокированном) статическом кошельке, на один указанный адрес.
Возвращается **чистая** сумма — та, что фактически была зачислена на баланс мерчанта: уже за вычетом
комиссии платформы, удержанной при зачислении депозитов (ставка для статических кошельков, по
умолчанию \~1.5% — см. [Статические кошельки](/guides/static-wallets)), и за вычетом отменённых
[reorg](/reference/glossary)‑депозитов — депозитов, откатившихся при переписывании недавних блоков
сети. По сути это списание с баланса — выплата; однократно и идемпотентно на уровне кошелька.

**URL:** `https://api.oblodai.com/v1/wallet/blocked-address-refund` · **Аутентификация:**
обязательна.

<Note>
  Примеры используют хелпер `call()` и переменные `$SECRET`/`$PUBLIC_ID` — их определение см. в
  [Как подписать запрос](/guides/signing-requests). Проще не писать подпись руками, а взять
  [SDK](/sdk/overview).
</Note>

***

## Параметры запроса

<ParamField body="uuid" type="string" required>
  Идентификатор статического кошелька (из ответа [`/v1/wallet`](/reference/wallet-create)).
</ParamField>

<ParamField body="address" type="string" required>
  Адрес назначения возврата.
</ParamField>

***

## Пример запроса

<CodeGroup>
  ```bash cURL theme={null}
  BODY='{"uuid":"0e5b6b9a-…","address":"TYr2...9kQp"}'
  TS=$(date +%s)
  SIG=$(printf '%s\n%s\n%s\n%s' "$TS" 'POST' '/v1/wallet/blocked-address-refund' "$BODY" \
    | openssl dgst -sha256 -hmac "$SECRET" -hex | sed 's/^.* //')
  curl -s https://api.oblodai.com/v1/wallet/blocked-address-refund \
    -X POST -H 'Content-Type: application/json' \
    -H "X-Public-Id: $PUBLIC_ID" -H "X-Timestamp: $TS" -H "X-Signature: $SIG" \
    -d "$BODY"
  ```

  ```python Python theme={null}
  call("/v1/wallet/blocked-address-refund", {"uuid": "0e5b6b9a-…", "address": "TYr2...9kQp"})
  ```

  ```js Node.js theme={null}
  await call("/v1/wallet/blocked-address-refund", { uuid: "0e5b6b9a-…", address: "TYr2...9kQp" });
  ```
</CodeGroup>

***

## Пример ответа

```json theme={null}
{
  "state": 0,
  "result": {
    "uuid": "b71c2d3e-…",
    "wallet_uuid": "0e5b6b9a-…",
    "amount": "149.50",
    "commission": "0.50",
    "currency": "USDT",
    "address": "TYr2...9kQp",
    "status": "check",
    "is_final": false
  }
}
```

<ResponseField name="uuid" type="string">
  Идентификатор операции возврата.
</ResponseField>

<ResponseField name="wallet_uuid" type="string">
  Кошелёк, с которого возвращаются средства.
</ResponseField>

<ResponseField name="amount" type="string">
  Возвращаемая чистая сумма.
</ResponseField>

<ResponseField name="commission" type="string">
  Удержанный сетевой газ.
</ResponseField>

<ResponseField name="currency" type="string">
  Валюта возврата.
</ResponseField>

<ResponseField name="address" type="string">
  Адрес назначения.
</ResponseField>

<ResponseField name="status" type="string">
  Статус операции (как у выплаты).
</ResponseField>

<ResponseField name="is_final" type="bool">
  Достигнут ли [терминальный статус](/reference/glossary) (конечное состояние, объект больше не изменится).
</ResponseField>

***

## Коды ошибок

| Код                               | Значение                                                                                                                 |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `400 request.bad_json`            | Тело не парсится.                                                                                                        |
| `400 refund.no_address`           | Не передан адрес назначения.                                                                                             |
| `400 wallet.bad_uuid`             | Некорректный `uuid`.                                                                                                     |
| `400 refund.nothing_to_refund`    | На кошельке нет средств к возврату.                                                                                      |
| `400 refund.destination_internal` | Адрес назначения принадлежит шлюзу ([self‑dealing](/reference/glossary) — выплата на собственный адрес шлюза запрещена). |
| `400 refund.dust`                 | Сумма слишком мала ([dust](/reference/glossary) — не покрывает даже сетевую комиссию).                                   |
| `404 wallet.static_not_found`     | Кошелёк не найден.                                                                                                       |

Адрес назначения дополнительно проходит проверку формата под сеть и комплаенс‑скрининг.

***

## Нюансы

* Возвращается только **чистая** сумма — reorg‑отменённые депозиты исключаются.
* При самом возврате удерживается только сетевой газ (`commission`), который вычитается из `amount`
  (получатель получает `amount − commission`); комиссия платформы уже была удержана при зачислении и в
  базу возврата не входит.
* Идемпотентно по кошельку (ключ `refund-wallet:<uuid>`).

***

## Связанные страницы

<CardGroup cols={2}>
  <Card title="POST /v1/wallet/block" href="/reference/wallet-block" icon="arrow-right" horizontal />

  <Card title="Объект кошелька" href="/reference/wallet-object" icon="arrow-right" horizontal />
</CardGroup>
