Перейти до вмісту
Розробникам

REST, JSON і один вебхук.

Мінімум, якого достатньо для продакшену: створити платіж, отримати підтвердження, закрити замовлення.

  1. 01

    Ключі

    Залиште заявку, підключіть IBAN і візьміть sk_test у дешборді.

  2. 02

    Платіж

    POST /v1/invoices із сумою і номером замовлення. Отримуєте pay_url.

  3. 03

    Вебхук

    Приймайте invoice.paid, перевірте підпис — і закривайте замовлення.

POST

Створити платіж

Сума у копійках, reference — ваш номер замовлення. Повторний запит з тим самим reference повертає той самий платіж.

/v1/invoices
curl -X POST https://api.kvitnyk.com/v1/invoices \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 124000,
    "currency": "UAH",
    "reference": "A-10427",
    "description": "Замовлення A-10427",
    "callback_url": "https://shop.ua/hooks/kvitnyk"
  }'

{
  "id": "inv_8Qk2m",
  "status": "pending",
  "pay_url": "https://pay.kvitnyk.com/8Qk2m",
  "qr_payload": "BCD002UCT...",
  "expires_at": "2026-09-12T18:40:00Z"
}
WEBHOOK

Підтвердження платежу

Приходить після того, як надходження зійшлося з виставленим платежем. Перевіряйте підпис у заголовку перед обробкою.

X-Kvitnyk-Signature: sha256=...
POST /hooks/kvitnyk

{
  "event": "invoice.paid",
  "invoice_id": "inv_8Qk2m",
  "reference": "A-10427",
  "amount": 124000,
  "paid_amount": 124000,
  "currency": "UAH",
  "payer_bank": "monobank",
  "payer_name": "І*** К***",
  "matched_by": "reference",
  "verified_at": "2026-09-12T18:12:41Z"
}

HTTP 200 → доставлено
інакше: 5 повторів, 1m → 1h

Статуси платежу

pendingПлатіж виставлено, надходження ще немає.
paidСума зійшлася — платіж підтверджено, вебхук надіслано.
reviewНадходження є, але автоматично не звелося: інше призначення, платіж від третьої особи або кілька схожих сум. Чекає на рішення в дешборді — підтвердити вручну можна одним кліком, вебхук піде після цього.
underpaidЗайшло менше, ніж виставлено. У payload — фактична сума.
overpaidЗайшло більше, ніж виставлено. Різницю повертаєте самостійно.
expiredТермін платежу минув, надходження не було.
refundedВи повернули кошти клієнту — позначено вручну або через API.
  • Sandbox

    Окремі ключі й емуляція надходжень: можна прогнати всі статуси, не переказуючи реальні кошти.

  • Ідемпотентність

    Reference — ключ унікальності. Повторні запити не створюють другий платіж і не дублюють вебхук.

  • Готові модулі

    WooCommerce, Prom, Shopify та приклади для Node, PHP, Python і Laravel.

  • Ліміти API

    100 запитів/хв на ключ. Вебхуки — 5 повторів із наростаючою затримкою до однієї години.

Наступний крок

Ключі й sandbox — того ж дня.

Заявка без дзвінків і договорів. Тестові ключі видаємо того ж дня, продакшн — після підключення рахунку.