# Robokassa API: POST /Merchant/Payment/Cancel — Отменить холдирование

Отменяет платёж в состоянии HOLD. `OutSum` передаётся, но в подписи вместо суммы пустой сегмент: `MerchantLogin::InvoiceID:Пароль#1`. Итоговый статус проверяют через OpStateExt.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `MerchantLogin` | body | string | да | Идентификатор магазина |
| `InvoiceID` | body | integer | да | Номер счёта |
| `OutSum` | body | string | да | Сумма (не входит в подпись) |
| `SignatureValue` | body | string | да | Подпись |

## Базовые URL

- Боевой (оплата, XML-интерфейсы, холдирование, рекурренты): `https://auth.robokassa.ru`
- Боевой (счета, возвраты, фискализация): `https://services.robokassa.ru`

## Авторизация

Тип: Другое

Стандартной схемы авторизации нет: каждый запрос подписывается контрольной суммой, состав которой зависит от метода. В личном кабинете магазина берутся `MerchantLogin`, Пароль#1, Пароль#2 (и Password3 для API возвратов), там же выбирается алгоритм хэша (в примерах документации — MD5). Пароль#1 используется для подписи запросов на оплату, Пароль#2 — для проверки уведомлений и XML-интерфейсов. Invoice API и Refund API принимают тело в виде JWT, подписанного HMAC.

Подпись запуска оплаты: `MerchantLogin:OutSum:InvId:модификаторы:Пароль#1:Shp_*`. Пример из документации (PHP, MD5):

```
$signature = md5("$merchantLogin:$outSum:$invId:$password1");
```

## Нюансы

- После оплаты Robokassa отправляет на ResultURL поля `OutSum`, `InvId`, `Fee`, `EMail`, `SignatureValue`, `PaymentMethod`, `IncCurrLabel` и параметры `Shp_*`. Подпись проверяют по формуле `OutSum:InvId:Пароль#2:Shp_*` и только потом меняют статус заказа.
- Обработчик ResultURL должен ответить строкой `OK` + номер заказа (например `OK12`), иначе уведомление считается недоставленным.
- Пользовательские параметры с префиксом `Shp_` возвращаются в уведомлениях без изменений и включаются в подпись в алфавитном порядке.
- При холдировании (`StepByStep=true`) в строку подписи добавляется модификатор `true`: `MerchantLogin:OutSum:InvId:true:Пароль#1`.
- Сумму передают с точностью до двух знаков после запятой, все данные — в UTF-8.
- Ошибка подписи обычно означает неверный порядок параметров или неверный пароль.
- XML-интерфейсы и Invoice API возвращают HTTP 200 и при прикладных ошибках; результат смотрят в `Result.Code` или `isSuccess`.
- OpStateExt, холдирование, рекурренты и возвраты не работают в тестовом режиме.
- У Robokassa есть публичный MCP-сервер для ИИ-ассистентов: https://mcp.robokassa.ru/

## Сценарии с этим методом

- [Двухстадийная оплата: заблокировать и списать позже](https://mcp-everything.ru/integrations/robokassa/scenarios/dvuhstadiynaya-oplata-zablokirovat.md)

---

Если этого недостаточно — официальная документация: https://docs.robokassa.ru/ru/quick-start
Вся интеграция одним документом: https://mcp-everything.ru/integrations/robokassa.md
