protopays · API

Webhook по фиат-выплате

После подтверждения или отклонения админом сервис отправляет HTTP POST с JSON на callbackUri из создания выплаты. Тип события: payin.status.updated.

Корень объекта

ПолеТипОбяз.Описание
typestringдаВсегда payin.status.updated.
eventIdstringдаУникальный id события для дедупликации (evt_ + ULID).
createdAtstring (ISO8601)даВремя формирования события (UTC).
dataobjectдаid (uuid), orderId, status (UPPERCASE), amount, currency.
meta.reasonstringнетПри FAILED — код/причина (например admin_reject).
meta.proofUrlsstring[]нетПри COMPLETED — прямые URL чеков трейдера (если загружены). См. раздел Чеки выплаты.

Примеры

Успешное завершение:

{
  "type": "payin.status.updated",
  "eventId": "evt_01hz…",
  "createdAt": "2026-05-22T12:00:00Z",
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "orderId": "payout-order-001",
    "status": "COMPLETED",
    "amount": "500",
    "currency": "RUB"
  },
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "order_id": "payout-order-001",
  "meta": {
    "proofUrls": [
      "https://api.example.com/storage/payin_proofs/42/check.jpg"
    ]
  }
}

Отклонение:

{
  "type": "payin.status.updated",
  "eventId": "evt_01hz…",
  "createdAt": "2026-05-22T12:05:00Z",
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "orderId": "payout-order-001",
    "status": "FAILED",
    "amount": "500",
    "currency": "RUB"
  },
  "meta": {
    "reason": "admin_reject"
  }
}

Терминальные статусы в webhook

В data.status: COMPLETED, FAILED, CANCELLED и при создании — текущий статус. Шаги pending / awaiting_admin — через GET статуса.

Обработка

  • Отвечайте HTTP 2xx; повторы возможны — идемпотентность по eventId и data.id.
  • Подпись исходящего webhook — по той же схеме, что входящие запросы (если включена на ключе).
  • Общие правила доставки — в разделе Webhooks.
  • Прямые ссылки на чеки при успехе — в Чеки выплаты.