# Открыть спор по выплате

Разбирательство ведёт сервис выплат: он хранит вложения и выносит
вердикт, мы передаём обращение и зеркалим состояние. Решение в вашу
пользу (`user_won`) приводит заявку в `fail` с возвратом средств,
решение в пользу исполнителя (`trader_won`) оставляет её в `success`.
Право `payouts.write`.

Endpoint: POST /payouts/{id}/dispute
Version: 1.0.0
Security: apiKeyAuth

## Security:

  - `apiKeyAuth` (unknown)
    apiKey in header X-API-Key

## Path parameters:

  - `id` (string, required)

## Request fields (multipart/form-data):

  - `comment` (string, required)
    Example: Получатель не видит зачисление, прошло 40 минут

  - `files` (array)
    До 3 файлов, каждый не больше 5 МБ

## Response 201:

  - `201` (unknown)
    Спор открыт

## Response 201 fields (application/json):

  - `id` (string)

  - `externalId` (string | null)

  - `status` (string)
    Enum: "pending", "waiting_trader", "in_progress", "success", "fail"

  - `amountRub` (number)
    Example: 12000

  - `chargedUsdt` (number)
    Сколько списано с баланса компании
    Example: 147.71

  - `rate` (number)
    Курс заявки, зафиксирован при создании
    Example: 81.24

  - `requisiteType` (string)
    Enum: "card", "phone"

  - `requisite` (string)

  - `bankId` (string | null)

  - `bank` (string | null)
    Название на момент создания заявки

  - `recipientFirstName` (string | null)

  - `recipientLastName` (string | null)

  - `failReason` (string | null)
    Enum: "timeout", "no_traders", "bank_not_exists", "requisites_invalid", "trader_declined", "dispute_lost", "cancelled_by_admin", "cancelled_by_merchant", "service_unavailable", "other", "null"

  - `comment` (string | null)
    Комментарий сервиса выплат к провалу

  - `refundedAt` (string | null)
    Момент возврата средств. Единственный признак того, что деньги
вернулись, — ориентируйтесь на него, а не на статус `fail`.

  - `dispute` (object | null)

  - `dispute.id` (string)

  - `dispute.status` (string)
    Enum: "open", "resolved"

  - `dispute.resolution` (string | null)
    `user_won` — заявка уходит в fail, средства возвращаются
    Enum: "user_won", "trader_won", "null"

  - `dispute.comment` (string | null)
    Комментарий поддержки сервиса выплат к решению; пока спор открыт — `null`

  - `dispute.openedAt` (string | null)

  - `dispute.resolvedAt` (string | null)

  - `takenAt` (string | null)

  - `completedAt` (string | null)

  - `createdAt` (string)

## Response 400:

  - `400` (unknown)
    Спор сейчас открыть нельзя. Ошибки сервиса выплат передаются с их
HTTP-кодом (`p2p NNN: …` в `message`).

## Response 400 fields (application/json):

  - `statusCode` (integer, required)
    HTTP-код ответа.
    Example: 400

  - `error` (string, required)
    Текстовое название HTTP-кода (у ошибок прав — `PERMISSION_DENIED`, как раньше).
    Example: Bad Request

  - `errorCode` (string, required)
    Стабильный машиночитаемый код, есть всегда. Со временем могут
появляться новые коды, поэтому неизвестное значение обрабатывайте
как общую ошибку для своего `statusCode`.
    Enum: "VALIDATION_ERROR", "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "CONFLICT", "UNPROCESSABLE", "INTERNAL_ERROR", "SERVICE_UNAVAILABLE", "BAD_GATEWAY", "AUTH_REQUIRED", "INVALID_API_KEY", "INVALID_CREDENTIALS", "SESSION_INVALID", "COMPANY_INACTIVE", "NO_COMPANY_MEMBERSHIP", "PERMISSION_DENIED", "ACCOUNT_ALREADY_EXISTS", "QR_AMOUNT_MISSING", "QR_INVALID", "QR_RESOLVE_FAILED", "AMOUNT_BELOW_MIN", "AMOUNT_ABOVE_MAX", "ST00012_SUM_MISSING", "ST00012_SUM_INVALID", "GIBDD_UIN_INVALID", "FINE_ALREADY_PAID", "FINE_NOT_FOUND", "QUOTE_NOT_FOUND", "QUOTE_EXPIRED", "INSUFFICIENT_BALANCE", "COMPANY_NOT_FOUND", "ORDER_NOT_FOUND", "UNSUPPORTED_CALLBACK_STATUS", "RATE_UNAVAILABLE", "DRIVER_HELPER_TRANSIENT", "WALLET_BACKEND_ERROR", "DISPUTE_NOT_FOUND", "DISPUTE_NOT_ALLOWED", "IDEMPOTENCY_KEY_REQUIRED", "CARDS_NOT_ENABLED", "CARD_NOT_FOUND", "CARD_REQUEST_NOT_FOUND", "CARD_REQUEST_NOT_CANCELABLE", "CARD_NOT_ACTIVE", "CARD_NOT_OWNED", "CARD_RECHARGE_INVALID", "CARD_EXTERNAL_ID_TAKEN", "BRIDGE_ERROR", "MEMBER_NOT_FOUND", "CANNOT_CHANGE_OWN_ROLE", "ROLE_CHANGE_NOT_ALLOWED", "INVITE_NOT_FOUND", "INVITE_USED", "INVITE_EXPIRED", "INVITE_INVALID", "WEBHOOK_DELIVERY_NOT_FOUND", "WEBHOOK_URL_NOT_CONFIGURED", "INVALID_SIGNATURE", "PAYOUTS_NOT_ENABLED", "PAYOUT_NOT_FOUND", "PAYOUT_REQUISITE_INVALID", "PAYOUT_BANK_UNKNOWN", "PAYOUT_BANK_REQUIRED", "PAYOUT_ACTIVE_LIMIT", "PAYOUT_REQUISITE_COOLDOWN", "PAYOUT_OUTSIDE_WORKING_HOURS", "PAYOUT_NOT_CANCELABLE", "PAYOUT_DISPUTE_NOT_ALLOWED", "PAYOUT_SERVICE_REJECTED", "PAYOUT_SERVICE_UNAVAILABLE"

  - `message` (any, required)
    Сообщение для человека (на русском). У ошибок валидации — массив строк.

  - `details` (object)
    Необязательные подробности ошибки, например
`{ "required": "orders.create" }`, `{ "minAmountRub": 100 }`
или `{ "nspkCode": "RQ00010" }`.
    Example: {"nspkCode":"RQ00010"}

  - `required` (string)
    Только у `PERMISSION_DENIED` — право, которого не хватает API-ключу.
    Example: orders.create

  - `path` (string)
    Путь запроса, вызвавшего ошибку, вместе с query-строкой.
    Example: /orders/prepare

  - `timestamp` (string)
    Время ошибки (ISO 8601).
    Example: 2026-05-27T16:41:49.000Z

  - `requestId` (string)
    Идентификатор запроса, он же приходит в заголовке ответа
`X-Request-Id`. Указывайте его в обращениях в поддержку.
    Example: 439436bd-201c-4084-9063-58cfa2cd40ad

## Response 401:

  - `401` (unknown)
    Нет учётных данных или они неверны (API-ключ / сессионный токен).

## Response 401 fields (application/json):

  - `statusCode` (integer, required)
    HTTP-код ответа.
    Example: 400

  - `error` (string, required)
    Текстовое название HTTP-кода (у ошибок прав — `PERMISSION_DENIED`, как раньше).
    Example: Bad Request

  - `errorCode` (string, required)
    Стабильный машиночитаемый код, есть всегда. Со временем могут
появляться новые коды, поэтому неизвестное значение обрабатывайте
как общую ошибку для своего `statusCode`.
    Enum: "VALIDATION_ERROR", "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "CONFLICT", "UNPROCESSABLE", "INTERNAL_ERROR", "SERVICE_UNAVAILABLE", "BAD_GATEWAY", "AUTH_REQUIRED", "INVALID_API_KEY", "INVALID_CREDENTIALS", "SESSION_INVALID", "COMPANY_INACTIVE", "NO_COMPANY_MEMBERSHIP", "PERMISSION_DENIED", "ACCOUNT_ALREADY_EXISTS", "QR_AMOUNT_MISSING", "QR_INVALID", "QR_RESOLVE_FAILED", "AMOUNT_BELOW_MIN", "AMOUNT_ABOVE_MAX", "ST00012_SUM_MISSING", "ST00012_SUM_INVALID", "GIBDD_UIN_INVALID", "FINE_ALREADY_PAID", "FINE_NOT_FOUND", "QUOTE_NOT_FOUND", "QUOTE_EXPIRED", "INSUFFICIENT_BALANCE", "COMPANY_NOT_FOUND", "ORDER_NOT_FOUND", "UNSUPPORTED_CALLBACK_STATUS", "RATE_UNAVAILABLE", "DRIVER_HELPER_TRANSIENT", "WALLET_BACKEND_ERROR", "DISPUTE_NOT_FOUND", "DISPUTE_NOT_ALLOWED", "IDEMPOTENCY_KEY_REQUIRED", "CARDS_NOT_ENABLED", "CARD_NOT_FOUND", "CARD_REQUEST_NOT_FOUND", "CARD_REQUEST_NOT_CANCELABLE", "CARD_NOT_ACTIVE", "CARD_NOT_OWNED", "CARD_RECHARGE_INVALID", "CARD_EXTERNAL_ID_TAKEN", "BRIDGE_ERROR", "MEMBER_NOT_FOUND", "CANNOT_CHANGE_OWN_ROLE", "ROLE_CHANGE_NOT_ALLOWED", "INVITE_NOT_FOUND", "INVITE_USED", "INVITE_EXPIRED", "INVITE_INVALID", "WEBHOOK_DELIVERY_NOT_FOUND", "WEBHOOK_URL_NOT_CONFIGURED", "INVALID_SIGNATURE", "PAYOUTS_NOT_ENABLED", "PAYOUT_NOT_FOUND", "PAYOUT_REQUISITE_INVALID", "PAYOUT_BANK_UNKNOWN", "PAYOUT_BANK_REQUIRED", "PAYOUT_ACTIVE_LIMIT", "PAYOUT_REQUISITE_COOLDOWN", "PAYOUT_OUTSIDE_WORKING_HOURS", "PAYOUT_NOT_CANCELABLE", "PAYOUT_DISPUTE_NOT_ALLOWED", "PAYOUT_SERVICE_REJECTED", "PAYOUT_SERVICE_UNAVAILABLE"

  - `message` (any, required)
    Сообщение для человека (на русском). У ошибок валидации — массив строк.

  - `details` (object)
    Необязательные подробности ошибки, например
`{ "required": "orders.create" }`, `{ "minAmountRub": 100 }`
или `{ "nspkCode": "RQ00010" }`.
    Example: {"nspkCode":"RQ00010"}

  - `required` (string)
    Только у `PERMISSION_DENIED` — право, которого не хватает API-ключу.
    Example: orders.create

  - `path` (string)
    Путь запроса, вызвавшего ошибку, вместе с query-строкой.
    Example: /orders/prepare

  - `timestamp` (string)
    Время ошибки (ISO 8601).
    Example: 2026-05-27T16:41:49.000Z

  - `requestId` (string)
    Идентификатор запроса, он же приходит в заголовке ответа
`X-Request-Id`. Указывайте его в обращениях в поддержку.
    Example: 439436bd-201c-4084-9063-58cfa2cd40ad

## Response 403:

  - `403` (unknown)
    У участника нет права, которое нужно этому эндпоинту (например,
`orders.create`, `orders.read`, `cards.recharge`). Недостающее право
приходит в теле, в `required` / `details`.

## Response 403 fields (application/json):

  - `statusCode` (integer, required)
    HTTP-код ответа.
    Example: 400

  - `error` (string, required)
    Текстовое название HTTP-кода (у ошибок прав — `PERMISSION_DENIED`, как раньше).
    Example: Bad Request

  - `errorCode` (string, required)
    Стабильный машиночитаемый код, есть всегда. Со временем могут
появляться новые коды, поэтому неизвестное значение обрабатывайте
как общую ошибку для своего `statusCode`.
    Enum: "VALIDATION_ERROR", "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "CONFLICT", "UNPROCESSABLE", "INTERNAL_ERROR", "SERVICE_UNAVAILABLE", "BAD_GATEWAY", "AUTH_REQUIRED", "INVALID_API_KEY", "INVALID_CREDENTIALS", "SESSION_INVALID", "COMPANY_INACTIVE", "NO_COMPANY_MEMBERSHIP", "PERMISSION_DENIED", "ACCOUNT_ALREADY_EXISTS", "QR_AMOUNT_MISSING", "QR_INVALID", "QR_RESOLVE_FAILED", "AMOUNT_BELOW_MIN", "AMOUNT_ABOVE_MAX", "ST00012_SUM_MISSING", "ST00012_SUM_INVALID", "GIBDD_UIN_INVALID", "FINE_ALREADY_PAID", "FINE_NOT_FOUND", "QUOTE_NOT_FOUND", "QUOTE_EXPIRED", "INSUFFICIENT_BALANCE", "COMPANY_NOT_FOUND", "ORDER_NOT_FOUND", "UNSUPPORTED_CALLBACK_STATUS", "RATE_UNAVAILABLE", "DRIVER_HELPER_TRANSIENT", "WALLET_BACKEND_ERROR", "DISPUTE_NOT_FOUND", "DISPUTE_NOT_ALLOWED", "IDEMPOTENCY_KEY_REQUIRED", "CARDS_NOT_ENABLED", "CARD_NOT_FOUND", "CARD_REQUEST_NOT_FOUND", "CARD_REQUEST_NOT_CANCELABLE", "CARD_NOT_ACTIVE", "CARD_NOT_OWNED", "CARD_RECHARGE_INVALID", "CARD_EXTERNAL_ID_TAKEN", "BRIDGE_ERROR", "MEMBER_NOT_FOUND", "CANNOT_CHANGE_OWN_ROLE", "ROLE_CHANGE_NOT_ALLOWED", "INVITE_NOT_FOUND", "INVITE_USED", "INVITE_EXPIRED", "INVITE_INVALID", "WEBHOOK_DELIVERY_NOT_FOUND", "WEBHOOK_URL_NOT_CONFIGURED", "INVALID_SIGNATURE", "PAYOUTS_NOT_ENABLED", "PAYOUT_NOT_FOUND", "PAYOUT_REQUISITE_INVALID", "PAYOUT_BANK_UNKNOWN", "PAYOUT_BANK_REQUIRED", "PAYOUT_ACTIVE_LIMIT", "PAYOUT_REQUISITE_COOLDOWN", "PAYOUT_OUTSIDE_WORKING_HOURS", "PAYOUT_NOT_CANCELABLE", "PAYOUT_DISPUTE_NOT_ALLOWED", "PAYOUT_SERVICE_REJECTED", "PAYOUT_SERVICE_UNAVAILABLE"

  - `message` (any, required)
    Сообщение для человека (на русском). У ошибок валидации — массив строк.

  - `details` (object)
    Необязательные подробности ошибки, например
`{ "required": "orders.create" }`, `{ "minAmountRub": 100 }`
или `{ "nspkCode": "RQ00010" }`.
    Example: {"nspkCode":"RQ00010"}

  - `required` (string)
    Только у `PERMISSION_DENIED` — право, которого не хватает API-ключу.
    Example: orders.create

  - `path` (string)
    Путь запроса, вызвавшего ошибку, вместе с query-строкой.
    Example: /orders/prepare

  - `timestamp` (string)
    Время ошибки (ISO 8601).
    Example: 2026-05-27T16:41:49.000Z

  - `requestId` (string)
    Идентификатор запроса, он же приходит в заголовке ответа
`X-Request-Id`. Указывайте его в обращениях в поддержку.
    Example: 439436bd-201c-4084-9063-58cfa2cd40ad

## Response 404:

  - `404` (unknown)
    Заявка не найдена

## Response 404 fields (application/json):

  - `statusCode` (integer, required)
    HTTP-код ответа.
    Example: 400

  - `error` (string, required)
    Текстовое название HTTP-кода (у ошибок прав — `PERMISSION_DENIED`, как раньше).
    Example: Bad Request

  - `errorCode` (string, required)
    Стабильный машиночитаемый код, есть всегда. Со временем могут
появляться новые коды, поэтому неизвестное значение обрабатывайте
как общую ошибку для своего `statusCode`.
    Enum: "VALIDATION_ERROR", "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "CONFLICT", "UNPROCESSABLE", "INTERNAL_ERROR", "SERVICE_UNAVAILABLE", "BAD_GATEWAY", "AUTH_REQUIRED", "INVALID_API_KEY", "INVALID_CREDENTIALS", "SESSION_INVALID", "COMPANY_INACTIVE", "NO_COMPANY_MEMBERSHIP", "PERMISSION_DENIED", "ACCOUNT_ALREADY_EXISTS", "QR_AMOUNT_MISSING", "QR_INVALID", "QR_RESOLVE_FAILED", "AMOUNT_BELOW_MIN", "AMOUNT_ABOVE_MAX", "ST00012_SUM_MISSING", "ST00012_SUM_INVALID", "GIBDD_UIN_INVALID", "FINE_ALREADY_PAID", "FINE_NOT_FOUND", "QUOTE_NOT_FOUND", "QUOTE_EXPIRED", "INSUFFICIENT_BALANCE", "COMPANY_NOT_FOUND", "ORDER_NOT_FOUND", "UNSUPPORTED_CALLBACK_STATUS", "RATE_UNAVAILABLE", "DRIVER_HELPER_TRANSIENT", "WALLET_BACKEND_ERROR", "DISPUTE_NOT_FOUND", "DISPUTE_NOT_ALLOWED", "IDEMPOTENCY_KEY_REQUIRED", "CARDS_NOT_ENABLED", "CARD_NOT_FOUND", "CARD_REQUEST_NOT_FOUND", "CARD_REQUEST_NOT_CANCELABLE", "CARD_NOT_ACTIVE", "CARD_NOT_OWNED", "CARD_RECHARGE_INVALID", "CARD_EXTERNAL_ID_TAKEN", "BRIDGE_ERROR", "MEMBER_NOT_FOUND", "CANNOT_CHANGE_OWN_ROLE", "ROLE_CHANGE_NOT_ALLOWED", "INVITE_NOT_FOUND", "INVITE_USED", "INVITE_EXPIRED", "INVITE_INVALID", "WEBHOOK_DELIVERY_NOT_FOUND", "WEBHOOK_URL_NOT_CONFIGURED", "INVALID_SIGNATURE", "PAYOUTS_NOT_ENABLED", "PAYOUT_NOT_FOUND", "PAYOUT_REQUISITE_INVALID", "PAYOUT_BANK_UNKNOWN", "PAYOUT_BANK_REQUIRED", "PAYOUT_ACTIVE_LIMIT", "PAYOUT_REQUISITE_COOLDOWN", "PAYOUT_OUTSIDE_WORKING_HOURS", "PAYOUT_NOT_CANCELABLE", "PAYOUT_DISPUTE_NOT_ALLOWED", "PAYOUT_SERVICE_REJECTED", "PAYOUT_SERVICE_UNAVAILABLE"

  - `message` (any, required)
    Сообщение для человека (на русском). У ошибок валидации — массив строк.

  - `details` (object)
    Необязательные подробности ошибки, например
`{ "required": "orders.create" }`, `{ "minAmountRub": 100 }`
или `{ "nspkCode": "RQ00010" }`.
    Example: {"nspkCode":"RQ00010"}

  - `required` (string)
    Только у `PERMISSION_DENIED` — право, которого не хватает API-ключу.
    Example: orders.create

  - `path` (string)
    Путь запроса, вызвавшего ошибку, вместе с query-строкой.
    Example: /orders/prepare

  - `timestamp` (string)
    Время ошибки (ISO 8601).
    Example: 2026-05-27T16:41:49.000Z

  - `requestId` (string)
    Идентификатор запроса, он же приходит в заголовке ответа
`X-Request-Id`. Указывайте его в обращениях в поддержку.
    Example: 439436bd-201c-4084-9063-58cfa2cd40ad

## Response 400 examples:

  - `Выплату ещё никто не взял — отмените её` (unknown)

  - `Спор уже открыт` (unknown)

  - `Пустой комментарий` (unknown)

## Response 401 examples:

  - `Не передан ни API-ключ, ни сессионный токен` (unknown)

  - `Неизвестный или перевыпущенный API-ключ` (unknown)

  - `Сессионный токен истёк или повреждён` (unknown)

  - `Компания отключена (API-ключ участника)` (unknown)

  - `Участник удалён из компании` (unknown)

## Response 403 examples:

  - `Нет нужного права` (unknown)

