Термінал в смартфоні iOS
Для інтеграції з Терміналом в смартфоні на iOS у вас має бути зареєстрований термінал. Подати заявку на реєстрацію можна на сайті https://monobank.ua/terminal
Виклик застосунку “Термінал by mono” та передача параметрів для проведення оплати
Для правильного формування запиту вам знадобиться отримати ряд параметрів
- terminal - отримується за допомогою методу отримання списку терміналів
- integratorId - необхідно звернутися до нас в підтримки, щоб ми вам його надали
Виклик застосунку через deeplink
Приклад deeplink для оплати:
Приклад deeplink для повернення:
Опис параметрів:
| Поле | Тип | Обов’язкове | Опис |
| id | string | так | Унікальний ідентифікатор платежу (до 250 символів), генерується інтегратором. |
| integratorId | string | так | Ідентифікатор інтегратора (генерує mono, надається партнеру). |
| terminal | string | так | id терміналу (MT%). |
| amount | number | так | Сума платежу в копійках (наприклад, 10800 = 108.00 грн). |
| purpose | string | так | Призначення платежу. Максимальна довжина – 250 символів. |
| paymentType | string | ні | Тип операції: purchase (покупка, за замовчуванням) або refund (повернення). |
| paymentFlow | string | ні | Тип оплати: nfc (за замовчуванням). |
| rrn | string | ні | RRN NFC (обовʼязково для типу операції refund). |
| callbackSuccess | string (URL) | так | Посилання для виклику при успішному платежі. |
| callbackFail | string (URL) | так | Посилання для виклику при неуспішному платежі. |
| deeplinkCallback | string (URL) | ні | Діплінк для підняття аплікації інтегратора. |
Рекомендуємо передавати саме universal link у параметрі `deeplinkCallback`. На відміну від schema url (наприклад, `myapp://`), universal link не вимагає додаткових змін у коді застосунку або оновлення в App Store для коректної роботи. Universal link відкриває застосунок, якщо він встановлений, або відкриває веб-сторінку, якщо застосунок не встановлено.
Приклад: deeplinkCallback: https://yourapp.com/payment-callback
Отримання відповіді
Отримання відповіді про успішну оплату або повернення.
Параметри будуть надіслані у callbackSuccess метод POST який був переданий інтегратором у deeplink:
| Поле | Тип | Обов’язкове | Опис |
| bank | string | так | АТ Універсал Банк – константа |
| terminal | string | так | id терміналу (MT%) |
| paymentType | string | так | purchase – Продаж refund – Повернення |
| amount | integer | так | Сума (в копійках) |
| ccy | string | так | Код валюти - UAH |
| status | string | так | Статус платежу success або failed |
| internalPaymentId | string | так | Внутрішній ID транзакції |
| externalPaymentId | string | так | Зовнішній ID транзакції згенерований інтегратором |
| maskedPan | string | так | Маска картки платника |
| cardMask | string | так | Mastercard, Visa |
| approvalCode | string | так | Код авторизації |
| rrn | string | так | rrn |
| dataTime | string | так | Дата і час транзакції |
| responseCode | string | так | Код відповіді Якщо успіх - 1 |
Приклад відповіді:
json
{
"bank": "АТ Універсал Банк",
"terminal": "MT512345",
"paymentType": "purchase",
"amount": 10000,
"ccy": "UAH",
"status": "success",
"dataTime": "2025-07-22 10:00:00",
"internalPaymentId": "cddd581a-5e7c-41bb-b855-b620987de280",
"externalPaymentId": "92603267-cb5f-4d2c-917e-e4b6c1e41e0c",
"maskedPan": "44441111******24",
"cardMask": "visa",
"approvalCode": "220486",
"rrn": "000012345678",
"responseCode": "1"
}
Отримання відповіді на неуспішну оплату/повернення.
Параметри будуть надіслані у callbackFail метод POST який був переданий інтегратором у deeplink:
| Поле | Тип | Обов’язкове | Опис |
| errorMessage | string | ні | Код помилки |
| responseCode | string | так | Код помилки платіжної системи |
| bank | string | так | АТ Універсал Банк – константа |
| terminal | string | так | id терміналу (MT%) |
| paymentType | string | так | purchase – Продаж refund – Повернення |
| maskedPan | string | ні | Маска картки платника |
| cardMask | string | ні | Mastercard, Visa |
| approvalCode | string | ні | Код авторизації |
| rrn | string | ні | rrn |
| amount | integer | ні | Сума |
| ccy | string | ні | Код валюти |
| dataTime | string | ні | Дата і час транзакції |
| internalPaymentId | string | так | Внутрішній ID транзакції |
| externalPaymentId | string | так | Зовнішній ID транзакції згенерований інтегратором |
Приклад відповіді:
json
{
"bank": "АТ Універсал Банк",
"terminal": "MT512345",
"paymentType": "purchase",
"amount": 9800,
"ccy": "UAH",
"status": "rejected",
"dataTime": "2025-07-22 10:00:00",
"internalPaymentId": "cb8b68de-a923-44fd-b786-131584008b2e",
"externalPaymentId": "fdf73256-5049-4c92-9df5-bb8999163bd7",
"rrn": "",
"errorMessage": "801-55:Невірний пін-код"
}
Якщо після створення посилання покупець не проведе оплату, то якщо перевести його на оплату по тому ж самому посиланню, то платіж не пройде. Необхідно сформувати нове посилання
Коди responseCode
| Код помилки | Опис |
| 06 | Потрібен пін або 3дс |
| 22 | Перевищено еквайринговий ліміт |
| 25 | Слабкий PIN |
| 50 | Несанкціоноване використання |
| 51 | Закінчився термін дії картки |
| 52 | Невірна карта |
| 53 | Невірний PIN-код |
| 54 | Системна помилка |
| 55 | Невідповідна транзакція |
| 56 | Невідповідний рахунок |
| 57 | Транзакція не підтримується |
| 58 | Картка обмежена (операція по картці не дозволена) |
| 59 | Недостатньо коштів на рахунку |
| 60 | Перевищено ліміт на число використань картки |
| 61 | Встановлені ліміти банку які не дозволяють проводити транзакцію |
| 63 | Ліміти банку |
| 67 | Недопустима сума |
| 68 | Транзакцію відхилено зовнішнім хостом |
| 69 | Неузгоджений запит (дана картка не обслуговується в даному терміналі) |
| 72 | Авторизатор недоступний |
| 74 | Помилка формату |
| 75 | Транзакцію відкинуто зовнішнім хостом за спеціальною умовою |
| 80 | Невірний CVV |
| 82 | Транзакція не дозволена з такими умовами проведення |
Робота з callback
У deeplink ви передаєте 3 посилання:
- callbackSuccess
- callbackFail
- deeplinkCallback
callbackSuccess - необхідний для отримання інформації про успішну оплату на ваш сервер для подальшого використання
callbackFail - необхідний для отримання інформації про не успішний платіж. Важливо, що текст самої помилки переданий не буде, буде передаватися лише код. Коди помилок описані нижче
deeplinkCallback - необхідний якщо потрібно підіймати екран після створення оплати. Наприклад, це може бути екран вашого застосунку.
Буде накладено підпис на callback для безпеки передачі даних. Необхідно звернутися в підтримку для отримання ключа для подальшої розшифровки даних.
Флоу по створенню оплати

Флоу по створенню запиту на повернення
