Skip to Content

Банківські виписки в Odoo: родина з 16 модулів

Компанія з рахунками у кількох банках — Приват, Моно, Аваль, Ощад — щодня повторює один і той самий ручний крок: відкрити клієнт-банк, вивантажити виписку, перенести рядки в журнал Odoo. У кожного банку свій формат файлу і свій ризик задвоїти транзакцію при повторному імпорті.

KitWorks закриває цю рутину набором з 16 модулів для Odoo Accounting. Частина підключається до банку напряму через API, частина парсить файл виписки у форматі, який банк реально віддає (DBF, XLS, CSV, XLSX), частина — збагачує вже імпортовану виписку додатковими даними. Разом це 13 банківських інтеграцій (не банків — Monobank, наприклад, представлений двома окремими модулями для особистого і корпоративного API), окремий модуль-збагачувач (kw_bank_statement_liqpay_info) і 2 базові інфраструктурні модулі — kw_bank_statement і kw_bank_statement_api, на яких стоять відповідно всі 13 інтеграцій і, серед них, 4 API-модулі.

Ця стаття — карта: які способи підключення є і де читати технічні деталі кожної інтеграції.

Три способи підключення

API — коли банк надає доступ. Модуль підключається до офіційного API банку і забирає нові транзакції за розкладом. Cron-задача Odoo кожні 5 хвилин обирає один банківський журнал — той, що найдовше чекав синхронізації, — і оновлює лише його, по колу між усіма активними журналами. Це періодичний опитувальний цикл, не миттєвий push; практична затримка — хвилини, не дні. Для Monobank Business і Укргазбанку модуль сам знаходить усі рахунки компанії за токеном. Для ПриватБанку (Autoclient API) такого ендпоінту немає — IBAN рахунку потрібно вказати в налаштуваннях журналу вручну. Спосіб підходить, якщо банк узагалі надає бізнес-API — це Monobank, ПриватБанк і Укргазбанк із поточного списку.

Файловий імпорт — коли банк API не дає. Бухгалтер сам експортує виписку з клієнт-банку у форматі DBF, XLS, CSV або XLSX і завантажує файл через кнопку «Імпорт виписки» на банківському журналі в Odoo. Автосинхронізації тут немає — це свідомий ручний крок, який модуль лише прибирає з "переписати вручну 200 рядків" до "натиснути одну кнопку". Формат специфічний для кожного банку: наприклад, у Кредобанку напрямок дебет/кредит визначається українським текстовим маркером у файлі, тому експорт має бути в українській локалі.

Автозбагачення — коли дані вже є, але неповні. Це окремий випадок: модуль нічого не імпортує сам, а дописує контекст до вже імпортованого рядка виписки. Приклад — kw_bank_statement_liqpay_info: рядки виписки ПриватБанку від LiqPay-платежів виглядають як технічний референс без імені платника; модуль звертається до LiqPay status API і дописує ім'я, телефон і опис платежу до вже існуючого рядка. Механізм працює, лише якщо в налаштуваннях журналу вказано власні публічний і приватний ключі LiqPay-мерчанта (kw.bank.statement.liqpay.config) — без них рядок лишається як є, без помилки. За описом модуля на Apps Store, він не імпортує транзакції і не створює зв'язку з sale.order — лише збагачує вже наявний рядок виписки для зручності читання.

13 банківських інтеграцій — хто підключений і як

Банк / сервіс Спосіб Модуль Формат / API Джерело
ПриватБанк (Privat24 для бізнесу) API kw_bank_statement_privat24_api Autoclient API стаття про ПриватБанк API
Monobank (особистий / ФОП) API kw_bank_statement_monobank_api api.monobank.ua/personal стаття про три банківські API
Monobank Business (юрособи) API kw_bank_statement_monobank_corp_api corp-api.monobank.ua/ext/v1 стаття про Monobank Corporate API
Укргазбанк API kw_bank_statement_ukrgasbank_api API «Мій Укргазбанк» стаття про три банківські API
Райффайзен Банк Аваль файл kw_bank_statement_aval_dbf DBF стаття про 5 файлових банків
Ощадбанк файл kw_bank_statement_oschadbank_dbf DBF стаття про 5 файлових банків
ОТП Банк файл kw_bank_statement_otp_dbf DBF стаття про 5 файлових банків
ПУМБ файл kw_bank_statement_pumb_dbf DBF стаття про 5 файлових банків
Кредобанк файл kw_bank_statement_kredobank_xls XLS стаття про 5 файлових банків
ПриватБанк (Privat24, роздрібний рахунок) файл kw_bank_statement_privat24_xls XLS лістинг Apps Store
iFOBS (клієнт-банкінг) файл kw_bank_statement_ifobs_xls XLS лістинг Apps Store
iBank2UA (клієнт-банкінг) файл kw_bank_statement_ibank2ua_csv CSV лістинг Apps Store
NovaPay файл kw_bank_statement_novapay_xlsx XLSX лістинг Apps Store

Загальний огляд усіх банків із таблицею — також у статті "13 українських банків + Odoo".

Окремо — LiqPay-enricher для виписки ПриватБанку, який не входить у ці 13, бо не є самостійною банківською інтеграцією.

Що спільне для всіх модулів

Уся родина стоїть на двох допоміжних модулях (hidden framework, підтягуються автоматично як залежність):

  • kw_bank_statement — базовий модуль. Додає до рядка виписки поля для сирих даних банку (ім'я контрагента як його передав банк, рахунок, ЄДРПОУ, МФО, опис) і детермінований ключ дедуплікації з обмеженням SQL UNIQUE — це технічна причина, чому повторний імпорт того самого періоду не створює дублів. Прив'язка контрагента йде за ЄДРПОУ або банківським рахунком. (лістинг Apps Store)
  • kw_bank_statement_api — базовий фреймворк для API-банків. Розширює журнал полями статусу синхронізації, оркеструє cron-задачу, яка обробляє журнали по черзі, і логує HTTP-запити до банку для трасування помилок. На ньому стоять усі 4 API-модулі. (лістинг Apps Store)

Чого ця родина модулів не робить

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

Для файлових банків (DBF/XLS/CSV/XLSX) немає фонової синхронізації — завантаження файлу це свідомий ручний крок бухгалтера, не автоматична задача.

Autoclient API ПриватБанку не має ендпоінту "покажи всі мої рахунки": помилка в IBAN на етапі налаштування означає порожню виписку, а не підказку від банку.

Enricher kw_bank_statement_liqpay_info дописує ім'я й телефон платника до рядка виписки, але не створює зв'язок із записом sale.order.

Токен для Monobank Business видає банк окремо, на запит компанії, і узгодження може зайняти час — підключення краще планувати заздалегідь, а не в останній день перед запуском.

Питання, які виникають найчастіше

Чи можна підключити кілька банків одночасно? Так. Кожен банк — окремий банківський журнал зі своїми реквізитами й розкладом синхронізації; дедуплікація працює в межах кожного журналу окремо, а партнерська база спільна для всієї системи. (Джерело: стаття про три банківські API)

Чим відрізняються модулі для Privat24 API та Privat24 XLS? Це два різні продукти в Apps Store, бо й API-ендпоінти в ПриватБанку для бізнес-рахунку і для фізосіб/ФОП різні: kw_bank_statement_privat24_api — Autoclient API для бізнес-рахунку, kw_bank_statement_privat24_xls — файловий імпорт роздрібного XLS-експорту. (Джерело: стаття про ПриватБанк API)

Чи потрібен окремий журнал на кожен рахунок, якщо банк один, а рахунків кілька? Так, для будь-якого способу підключення — журнал на кожен рахунок. Для файлових банків це очевидно: один файл — один рахунок, і для Аваля модуль додатково фільтрує рядки за номером рахунку журналу. Для API-банків з автовиявленням рахунків (Monobank Business, Укргазбанк) різниця лише в зручності: рахунок обирається зі списку, знайденого автоматично, а не вводиться вручну — але без вказаного фільтра рахунку в журналі транзакції з усіх виявлених рахунків компанії зіллються в один журнал. (Джерело: стаття про 5 файлових банків, стаття про три банківські API)

Чи створює повторний імпорт дублікати? Ні. Базовий модуль kw_bank_statement додає до рядка виписки детермінований ключ дедуплікації з обмеженням SQL UNIQUE — при повторному імпорті того самого періоду створюються лише рядки з новим ключем, решта пропускається. (Джерело: лістинг Apps Store kw_bank_statement)

Деталі кожної інтеграції, вимоги до підключення і покрокові інструкції — у профільних статтях і на сторінках модулів в Apps Store за посиланнями вище.

KitWorks, Тетяна Іванчук 8 вересня 2026 р.
Поділитися цією публікацією
Теги
Архів