#Webhook

При смене статуса транзакции отправляем POST на webhook_url (из запроса) или из настроек мерчанта.


#Заголовки

Content-Type: application/json
Authorization: Bearer <merchant.webhook_token>
X-Signature: <hex HMAC-SHA256(body + path + search, secret)>

#Тело — для PayIn (card)

{
  "id": "Kx7mN2pQ4rT9wY",
  "merchant_transaction_id": "ord_001",
  "client_id": "user_42",
  "type": "in",
  "payment_method": "card",
  "amount": "5000",
  "paid_amount": "5000",
  "currency": "RUB",
  "currency_rate": "0",
  "amount_in_usd": "54.05",
  "rate": "92.5",
  "commission": "1.62",
  "status": "paid",
  "paid_at": "2026-05-04T10:23:45.123Z",
  "expires_at": "2026-05-04T11:00:00.000Z",
  "created_at": "2026-05-04T10:00:00.000Z",
  "card_number": "2200000000000000",
  "owner_name": "IVAN IVANOV",
  "bank_id": "...",
  "bank_name": "Сбер"
}

#Тело — для PayOut (card)

{
  "id": "Kx7mN2pQ4rT9wY",
  "merchant_transaction_id": "payout_001",
  "client_id": "user_42",
  "type": "out",
  "payment_method": "card-out",
  "amount": "5000",
  "paid_amount": "5000",
  "currency": "RUB",
  "currency_rate": "0",
  "amount_in_usd": "54.05",
  "rate": "92.5",
  "commission": "1.62",
  "status": "paid",
  "paid_at": "2026-05-04T10:23:45.123Z",
  "expires_at": null,
  "created_at": "2026-05-04T10:00:00.000Z",
  "card_number": "2200000000000000",
  "owner_name": "IVAN IVANOV",
  "bank_id": "...",
  "bank_name": "Сбер"
}

#Поля webhook'а — что меняется по методу

Метод (payment_method в webhook)Поля реквизита
card, card-internal, card-cross, card-outcard_number, owner_name, bank_id, bank_name
sbp, sbp-internal, sbp-cross, sbp-outphone_number, owner_name, bank_id, bank_name
account, account-outaccount_number, owner_name, bank_id, bank_name
qr, qr-internal, qr-cross, qr-nspk(только базовые поля, без реквизита)
mobile, mobile-internal, mobile-crossphone_number, owner_name, operator_id, operator

#Возможные status в webhook

process · paid · underpaid · overpaid · cancel · expired · disputed · chargeback · error