> For the complete documentation index, see [llms.txt](https://help.unitpay.ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.unitpay.ru/payments/pre-authorization-payments.md).

# Двухэтапные платежи (преавторизация)

**Преавторизация** — это двухэтапный платёж: сначала сумма на карте клиента **блокируется**, а затем **списывается отдельно** по подтверждению продавца. Такой подход используется, когда нужно гарантировать наличие средств, но списать их позже — например, после подтверждения заказа или услуги.

{% hint style="warning" %}
Метод оплаты СБП не поддерживает предавторизацию на уровне протокола НСПК. Если платёж создан с параметром `preauth=1` и пользователь выбирает СБП, средства списываются сразу — платёж автоматически проводится как одностадийный. Подробнее — в разделе [Особенности работы с СБП](#osobennosti-raboty-s-sbp).
{% endhint %}

**Как это работает:**

1. Блокировка средств — сумма замораживается на карте клиента, но не списывается.
2. Подтверждение или отмена — продавец может либо подтвердить списание, либо отменить платёж.
3. Автоматическая разблокировка — если платёж не подтверждён в течение установленного срока, средства автоматически разблокируются.

***

## Инициализация платежа с преавторизацией

Для создания платежа с преавторизацией необходимо передать дополнительный параметр **preauth**. Полный набор параметров описан на [странице создания платежа](https://help.unitpay.ru/payments/create-payment).

<mark style="color:blue;">`GET`</mark> `https://unitpay.ru/api?method=initPayment`

#### Path Parameters

<table><thead><tr><th width="186.6666259765625">Name</th><th width="111.2222900390625">Type</th><th>Description</th></tr></thead><tbody><tr><td>preauth</td><td>integer</td><td>Используйте этот флаг для создания платежа с преавторизацией. По умолчанию флаг выключен и значение равно 0, для включения необходимо передать 1.</td></tr><tr><td>preauthExpireLogic</td><td>integer</td><td>Поле для логики блокировки платежей с преавторизацией:<br>1 - при отсутствии запроса на подтверждение или отмену, платеж по истечении срока блокировки на стороне банка-эквайера (~114 часов после создания платежа) будет подтвержден;<br>0 - при отсутствии запроса на подтверждение или отмену, платеж по истечении срока блокировки на стороне банка-эквайера (~114 часов после создания платежа) будет отменен. <br><br>Если параметр не будет использован, платеж будет отменен по истечении срока.</td></tr></tbody></table>

```json
{
    "result": {
        "type": "redirect",
        "paymentId": 1234567890,
        "message": "Счет успешно выставлен, ожидается оплата",
        "receiptUrl": "https://unitpay.ru/pay/receipt/1234567890-454ac183ac",
        "statusUrl": "https://unitpay.ru/pay/receipt/1234567890-454ac183ac",
        "redirectUrl": "https://unitpay.ru/pay/redirect/1234567890-454ac183ac"
    }
}
```

## Подтверждение платежа с преавторизацией

Для подтверждения платежа с преавторизацией (списания заблокированных на карте плательщика средств) выполните этот запрос:

```bash
GET https://unitpay.ru/api

method    = confirmPayment
paymentId = 2142345678
secretKey = sk_live_2YQt9m
```

#### Обязательные параметры

<table><thead><tr><th width="159">Name</th><th width="196.2222900390625">Type</th><th>Description</th></tr></thead><tbody><tr><td>paymentId</td><td>integer</td><td>ID платежа в системе UnitPay</td></tr><tr><td>secretKey</td><td>string</td><td>Секретный ключ проекта, доступен в настройках проекта</td></tr></tbody></table>

{% tabs %}
{% tab title="Успешный ответ" %}

```json
{ "message": "Платеж успешно подтвержден" }
```

{% endtab %}

{% tab title="Ошибочный ответ" %}

```json
{
    "error": {
        "message": "Платеж не может быть подтвержден"
    }
}
```

{% endtab %}
{% endtabs %}

## Отмена платежа с преавторизацией

Для отмены платежа с преавторизацией (разблокировки средств на карте плательщика) выполните следующий запрос:

```bash
GET https://unitpay.ru/api

method    = confirmPayment
paymentId = 2142345678
secretKey = sk_live_2YQt9m
```

#### Path Parameters

<table><thead><tr><th width="203.4444580078125">Name</th><th width="155.3333740234375">Type</th><th>Description</th></tr></thead><tbody><tr><td>paymentId</td><td>integer</td><td>ID платежа в системе UnitPay</td></tr><tr><td>secretKey</td><td>string</td><td>Секретный ключ проекта, доступен в настройках проекта</td></tr></tbody></table>

{% tabs %}
{% tab title="Успешный ответ" %}

```json
{ "message": "Блокировка успешно отменена" }
```

{% endtab %}

{% tab title="Ошибочный ответ" %}

```json
{
    "error": {
        "message": "Платеж не может быть отменен"
    }
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Двухстадийные платежи можно использовать при создании [подписок](https://help.unitpay.ru/payments/recurring-payments/create-subscription).
{% endhint %}

#### Особенности работы с СБП

Метод СБП не поддерживает холдирование средств на уровне протокола НСПК. При создании платежа с `preauth=1` и выборе пользователем оплаты через СБП платёж автоматически понижается до одностадийного. Это поведение не является ошибкой — оно позволяет не ограничивать пользователей в выборе метода оплаты на форме.

**Отличия от стандартного двухэтапного платежа:**

|                       | Карта (preauth=1)  | СБП (preauth=1)                              |
| --------------------- | ------------------ | -------------------------------------------- |
| Средства после оплаты | Заблокированы      | Списаны сразу                                |
| Финальный статус      | Холдирован         | Оплачен                                      |
| `confirmPayment`      | Списывает средства | Возвращает ошибку                            |
| `cancelPayment`       | Снимает блокировку | Возвращает средства (refund). Доступен сразу |

**Ответы API**

При инициализации платежа с `preauth=1` и `paymentType=sbp` в поле `message` возвращается предупреждение:

```json
{
    "result": {
        "type": "redirect",
        "paymentId": 1234567890,
        "message": "Счёт успешно выставлен, ожидается оплата. СБП не поддерживает двухстадийную оплату: после оплаты деньги списываются сразу, без холдирования. Подтверждать платёж не нужно. Для возврата используйте метод refundPayment.",
        "receiptUrl": "https://unitpay.ru/pay/receipt/1234567890-454ac183ac",
        "statusUrl": "https://unitpay.ru/pay/receipt/1234567890-454ac183ac",
        "redirectUrl": "https://unitpay.ru/pay/redirect/1234567890-454ac183ac"
    }
}
```

При вызове `confirmPayment` для СБП-платежа:

```json
{
    "error": {
        "message": "Подтверждение недоступно: платёж проведён как одностадийный, так как метод СБП не поддерживает предавторизацию."
    }
}
```

При вызове `cancelPayment` для СБП-платежа поведение и все возможные ответы идентичны методу `refundPayment` — см. [документацию по возвратам](https://help.unitpay.ru/payments/payment-refund).

{% hint style="warning" %}
Для СБП-платежей с `preauth=1` параметр `preauthExpireLogic` игнорируется — срок жизни счёта соответствует стандартному таймауту СБП-платежей.
{% endhint %}
