Оплатити частинами
Створення та управління заявками «Оплатити частинами» через банки-партнери RozetkaPay
«Оплатити частинами» — форма розстрочки, за якої клієнт розбиває вартість замовлення на N платежів в одному з банків-партнерів або в сервісі кредитування від Rozetka.
Доступні банки
Значення для поля bank_name:
bank_name | Назва |
|---|---|
rozetkapay | «Оплатити частинами від Rozetka» |
abank | А-Банк |
fuib | ПУМБ |
izibank | izibank |
monobank | monobank |
oschadbank | Ощадбанк |
otpbank | OTP Bank |
privatbank | ПриватБанк |
Перед створенням заявки отримайте список банків, підключених для проєкту, та доступні для них кількості платежів і ліміти:
curl -X GET https://api.rozetkapay.com/api/payparts/v1/banks/info \ -u "login:password"Відповідь
[ { "name": "abank", "logo_url": "https://cdn.rozetkapay.com/banks/abank.svg", "product_name": "Оплата частинами", "available_periods": [2, 3, 4, 6, 9, 12], "limits": { "min_amount": 300, "max_amount": 50000 } }]| Параметр | Опис |
|---|---|
name | Назва банку — передавайте як bank_name |
available_periods | Допустимі значення parts_count |
limits.min_amount / max_amount | Мінімальна / максимальна сума |
logo_url | Лого банку |
product_name | Назва продукту банку |
Створення заявки
curl -X POST https://api.rozetkapay.com/api/payparts/v1/order/create \ -u "login:password" \ -H "Content-Type: application/json" \ -d '{ "auto_confirm_after_success": false, "bank_name": "abank", "mode": "direct", "external_id": "order_12345", "amount": 1100, "currency": "UAH", "parts_count": 4, "description": "Замовлення на сайті", "products": [ { "name": "Праска", "quantity": 1, "price": 1100 } ], "result_url": "https://your-site.com/result", "callback_url": "https://your-site.com/callback", "customer": { "first_name": "Ivan", "last_name": "Ivanov", "phone": "+380501234567", "email": "user@example.com" } }'Весь перелік полів — у API Reference →
Параметри
| Параметр | Обов’язковий | Тип | Опис |
|---|---|---|---|
bank_name | Так | string | Назва банку з GET /api/payparts/v1/banks/info |
mode | Так | string | direct або hosted. Для oschadbank — тільки hosted |
external_id | Так | string | Унікальний номер замовлення |
unified_external_id | Ні | string | Додатковий (не унікальний) номер |
amount | Так | number | Сума замовлення |
currency | Так | string | Валюта (ISO 4217) |
parts_count | Так | integer | Кількість платежів |
description | Так | string | Опис замовлення |
auto_confirm_after_success | Ні | boolean | true — заявка підтверджується автоматично; false — підтвердити вручну |
products | Ні/Так | array | Товари в замовленні (name, quantity, price). Обов’язковий для rozetkapay |
result_url | Ні/Так | string | URL повернення. Обов’язковий для rozetkapay |
callback_url | Ні | string | URL для callback |
customer | Так | object | Дані покупця |
payload | Ні | string | Додаткові дані |
Вимоги залежно від банку
| Банк | mode | Реквізит платника |
|---|---|---|
rozetkapay | direct | номер телефону |
abank | direct | номер телефону |
fuib | direct | номер телефону |
izibank | direct | номер телефону |
monobank | direct | номер телефону |
oschadbank | hosted | дані картки |
otpbank | direct | номер телефону |
privatbank | direct | номер телефону — необов’язковий |
oschadbank — єдиний банк, який працює в режимі hosted: покупець вводить дані картки на платіжній сторінці.
У режимі direct заявка йде одразу в банк, покупець підтверджує її пуш-повідомленням у застосунку банку, а у відповіді немає посилання (action_required: false) — чекайте на callback. Винятки:
rozetkapay— у відповіді посилання на кредитний checkout RozetkaPay, куди треба перенаправити покупця;privatbank— якщо переданоcustomer.phone, покупець отримує пуш у Privat24, інакше у відповіді буде посилання на підтвердження.
Відповідь
{ "id": "336419005713727488", "external_id": "order_12345", "unified_external_id": "order_12345", "is_success": true, "action_required": true, "action": { "type": "url", "value": "https://buy.rozetkapay.com/order/eac490d8-..." }, "details": { "method": "create", "status": "init", "amount": 1100, "currency": "UAH", "created_at": "2025-04-22T10:00:00Z" }}Якщо action_required: true, перенаправте покупця на action.value для завершення оформлення.
Підтвердження заявки
curl -X POST https://api.rozetkapay.com/api/payparts/v1/order/confirm \ -u "login:password" \ -H "Content-Type: application/json" \ -d '{ "external_id": "order_12345", "callback_url": "https://your-site.com/callback" }'| Параметр | Обов’язковий | Опис |
|---|---|---|
external_id | Так | Номер замовлення |
callback_url | Ні | URL для callback |
payload | Ні | Додаткові дані |
Відміна заявки
Доступна для створеної, але ще не підтвердженої заявки.
curl -X POST https://api.rozetkapay.com/api/payparts/v1/order/cancel \ -u "login:password" \ -H "Content-Type: application/json" \ -d '{ "external_id": "order_12345", "callback_url": "https://your-site.com/callback" }'Повернення коштів
curl -X POST https://api.rozetkapay.com/api/payparts/v1/refund \ -u "login:password" \ -H "Content-Type: application/json" \ -d '{ "external_id": "order_12345", "amount": 1100, "currency": "UAH", "callback_url": "https://your-site.com/callback" }'| Параметр | Обов’язковий | Опис |
|---|---|---|
external_id | Так | Номер замовлення |
amount | Ні | Сума повернення (без неї — повна сума) |
currency | Ні | Валюта |
callback_url | Ні | URL для callback |
Відміна pending-повернення
Якщо повернення у статусі refund_pending (недостатньо балансу), його можна скасувати:
curl -X POST https://api.rozetkapay.com/api/payparts/v1/refund/cancel \ -u "login:password" \ -H "Content-Type: application/json" \ -d '{ "external_id": "order_12345" }'Примусове повторення повернення
curl -X POST https://api.rozetkapay.com/api/payparts/v1/refund/retry \ -u "login:password" \ -H "Content-Type: application/json" \ -d '{ "external_id": "order_12345" }'Тестування
У sandbox замість справжніх банків використовуйте stub — це банк-емулятор, який повертає передбачуваний результат (успіх або відмову) залежно від номера телефону покупця, не звертаючись до реального банку.
Тестові номери телефонів — у розділі Тестові картки, блок «Тестування «Оплатити частинами» та кредитів від Rozetka».
Фіскалізація
«Оплатити частинами» підтримує ПРРО-фіскалізацію з власним набором полів у products[] (price, external_id, name, quantity, tax_group). Див. Фіскалізація продажів.