Nordlet проти Odoo для розробників платформ
Порівняння для розробників, які обирають між вбудованим API обліку та пакетом програм з відкритим кодом на основі офіційної документації кожного продукту.
Odoo та Nordlet часто розглядають одночасно команди платформ, проте це абсолютно різні типи продуктів. Odoo — це широкий пакет бізнес-додатків із вбудованим обліком, який можна розгорнути самостійно та модифікувати. Nordlet — це обліковий бекенд без жодних амбіцій поза межами бухгалтерії, створений для викликів із чужого продукту.
Вибір зазвичай зводиться до двох питань: яку частину вашого бізнесу ви хочете об'єднати в єдину систему та хто нею керуватиме. Уся інформація про Odoo нижче базується на офіційній документації та сторінках ціноутворення Odoo із відповідними посиланнями.
Що собою представляє кожен продукт
Odoo — це пакет з відкритим кодом, що охоплює бухгалтерію, складський облік, виробництво, продаж, CRM, управління персоналом, вебсайти тощо, доступний у вигляді Odoo Online, на Odoo.sh або для самостійного хостингу. Його сильними сторонами є масштабність, розширюваність і можливість самостійного запуску. Особливості обліку конкретних країн реалізовано через модулі локалізації, а навколо продукту сформувалася велика спільнота.
Nordlet — це хмарний API обліку. Він надає незмінну (immutable) бухгалтерську книгу подвійного запису, выставлення рахунків, обліку закупівель, банківських виписок і звірки (reconciliation), складського обліку, основних засобів, заробітної плати, звітності та обробки податків ЄС через єдиний REST-інтерфейс — наразі це понад 400 ендпоїнтів у 29 модулях, згенерованих з єдиної специфікації OpenAPI. Існує і готовий застосунок, який працює на тих самих ендпоїнтах, що й доступні для зовнішніх викликів.
Питання API, яке вирішує більшість оцінок
Саме тут продукти найбільше розходяться для розробників платформ.
Зовнішній API Odoo працює на рівні моделей. Ви автентифікуєтеся, а потім викликаєте методи ORM для моделей даних, таких як account.move для записів журналу та рахунків, res.partner для контактів та account.account для плану рахунків, через XML-RPC або JSON-RPC. Це потужно: усе, що система може змоделювати, доступне для виклику. Водночас це означає, що відповідальність за правильне використання моделей лежить на вас, а ваша інтеграція прив'язана до внутрішньої моделі даних Odoo, а не до стабільного доменного контракту.
Два факти з офіційних матеріалів Odoo змінюють розрахунки:
- Документація Odoo зазначає, що доступ до зовнішнього API надається на тарифному плані Custom і недоступний на планах One App Free або Standard. Таким чином, доступ до API є питанням ціноутворення, а не лише технічним аспектом. Актуальні плани та ціни наведено на сторінці цін Odoo.
- Odoo оголосила, що ендпоїнти
/xmlrpc,/xmlrpc/2та/jsonrpcпланується вивести з експлуатації (у версіях Odoo 22 та Odoo Online 21.1) із заміною на новіший API JSON-2. Інтеграція, написана для поточних RPC-ендпоїнтів, у майбутньому потребуватиме міграції.
API Nordlet працює на доменному рівні. Операції виконуються як POST /v1/{module}/{resource}/{action} із тілом у форматі JSON, тому ви викликаєте sales/invoices/issue замість безпосереднього маніпулювання моделлю журналу, а за бухгалтерські наслідки відповідає сам API. Ключі мають такі сфери дії (scopes), як sales:write. Повторні спроби (retries) захищені заголовком Idempotency-Key: той самий ключ із тим самим корисним навантаженням відтворює збережену відповідь, а той самий ключ зі зміненим навантаженням відхиляється з помилкою idempotency_key_reuse замість мовчазного прийняття. Події вебхуків записуються в транзакційну скриньку вихідних повідомлень (transactional outbox) у межах тієї самої транзакції бази даних, тому відкачена подія документа ніколи не генерує подію, а доставлення підписується за допомогою HMAC-підпису, який ви можете перевірити.
Порівняння функцій
Клітинки з позначкою "не підтверджено публічно" означають, що ми не змогли перевірити цю функцію на тому рівні, який необхідний розробнику перед прийняттям рішення. Це не твердження про її відсутність.
| Можливість | Nordlet | Odoo |
|---|---|---|
| Формат продукту | Обліковий API, у хмарі | Повний бізнес-пакет; у хмарі або локально (self-hosted) |
| Основний інтерфейс | REST API з типизованим TypeScript SDK | Вебзастосунок; зовнішній API на рівні моделей |
| Протокол API | JSON через HTTPS, у стилі RPC (POST на кожну дію) | XML-RPC та JSON-RPC з переходом на JSON-2 API |
| Доступність API | Усі плани, усі модулі | Кастомний план (Custom) згідно з документацією Odoo |
| Книга подвійного запису | Так, баланс контролюється тригером бази даних під час фіксації | Так, у межах модуля бухгалтерії |
| Блокування періодів | Так; проведення, датовані закритим періодом, відхиляються з помилкою 409 |
Дати блокування підтримуються в модулі бухгалтерії |
| Ключі ідемпотентності | Так, задокументована семантика включає повтор і колізії | Не підтверджено публічно для зовнішнього API |
| Вебхуки | Так, з підписом, повторними спробами та з транзакційної скриньки | Автоматичні дії та вебхуки існують; гарантії доставки не підтверджено публічно |
| Журнал аудиту (audit record) | Кожна зміна містить ініціатора, дію, сутність, різницю (diff); доступний для запитів | Записи у стрічці (chatter) та логах; область дії залежить від моделі |
| ПДВ ЄС | Ставки для кожної з 27 країн ЄС, перевірка VIES, розрахунок OSS/IOSS із коригуваннями | Модулі локалізації для кожних країн; глибина залежить від країни |
| Електронне выставлення рахунків | EN 16931 UBL для Peppol BIS 3.0; національні формати для IT, PL, RO | Модулі локалізації покривають кілька національних форматів |
| Склад, виробництво | FIFO-облік запасів, специфікації (BOM), збирання та розбирання, маршрути, робочі центри, виробничі замовлення з обліком за операціями, контроль якості, обслуговування | Широкі можливості, ключова перевага |
| CRM, вебсайт, маркетинг | Лише запити партнерів, групи та статуси; немає конструктора сайту чи маркетингових інструментів | Так, ключова перевага |
| Самостійний хостинг (Self-hosting) | Ні; підтримка BYOC зазначена на тарифному плані Custom | Так |
| Доступність вихідного коду | Пропрієтарний | Ядро з відкритим кодом, платні редакції |
| Мультикомпанійність | Необмежена кількість компаній під одним обліковим записом, доступ на основі ролей | Мультикомпанійність підтримується |
Моделі ціноутворення
Їх неможливо порівняти рядок до рядка, оскільки тарифікація стосується різних речей.
Odoo стягує плату за користувача на місяць, при цьому безплатний тариф обмежений одним додатком, а доступ до зовнішнього API надається на плані Custom. Для платформи незручність полягає в тому, що кількість «користувачів» є поганим показником навантаження, коли облік генерує ваше програмне забезпечення, а не співробітники. Самостійний хостинг усуває витрати на підписку, але додає витрати на інфраструктуру та обслуговування.
Nordlet тарифікує за кількістю запитів. Опубліковані плани становлять €10 на місяць за 3 000 запитів, €50 за 30 000 і €300 за 200 000, при цьому додаткові запити оплачуються за запит, а кастомний тариф доступний за запитом. Кожен план включає всі модулі та повний API; кількість користувачів, компаній та пісочниць є необмеженою. Запитом вважається будь-яка дія, виконана через API або додаток.
Практичний наслідок: маркетплейс із чотирма співробітниками та 50 000 щомісячних облікових операцій платить за 50 000 операцій за моделлю з оплатою за використання та за чотирьох користувачів за моделлю за користувача, причому показник для користувачів не змінюється в разі подвоєння обсягів, що має обидва боки медалі. Змоделюйте власні показники.
Де Odoo є кращим вибором
- Ви хочете мати бухгалтерію, склад, виробництво, CRM та вебсайт у єдиній системі з однією базою даних.
- Вам необхідно розгорнути систему самостійно з міркувань локалізації даних, вартості чи політики безпеки.
- Ви хочете модифікувати вихідний код і маєте внутрішні ресурси для підтримки цих модифікацій під час оновлень.
- Ваш облік є внутрішнім адміністративним процесом компанії, а не функцією продукту, який ви продаєте.
- Ви працюєте в країні, де модуль локалізації Odoo є потужним і активно підтримується.
Масштабність Odoo є реальністю, і жоден обліковий API не здатний її повністю замінити.
Де доречний Nordlet
- Облікові події створюються вашим програмним забезпеченням, а не співробітниками.
- Вам потрібні книги обліку для багатьох компаній під одним обліковим записом без необхідності оформлювати підписку для кожної одиниці.
- Вам потрібні гарантовані інваріанти, на які може покладатися ваша платформа: збалансовані проведення, безперервна нумерація, закриті періоди, незмінна історія, ідемпотентні записи.
- Ви хочете інтегруватися зі стабільним доменним контрактом, а не з внутрішньою моделлю даних.
- Ваші обов'язки зі сплати ПДВ в ЄС охоплюють кілька країн, і ви б вважали за краще не підтримувати цю логіку самостійно.
Обмеження, якщо говорити відверто: Nordlet перебуває на стадії раннього доступу та залучення проєктів для тестування (onboarding design partners); він є хмарним рішенням, а не для самостійного хостингу; картки партнерів містять запити, групи та статуси замість воронки продажів, а також відсутній конструктор вебсайтів і маркетинговий функціонал; розрахунок заробітної плати доступний лише для Литви; а готові пакети внутрішньої звітності наразі створені для трьох країн — Литви (FR0600), Німеччини (UStVA) та Польщі (JPK_V7M), тоді як податки OSS та IOSS розраховуються, але не подаються від вашого імені.
Що варто перевірити перед прийняттям рішення
- Уточніть потрібний тарифний план Odoo. Якщо доступ до зовнішнього API вимагає плану Custom, розраховуйте його вартість виходячи з кількості ваших користувачів, а не початкового тарифу.
- Дізнайтеся про графік міграції RPC для будь-якої інтеграції Odoo, яку ви плануєте зберегти після запланованого видалення поточних ендпоїнтів.
- Протестуйте повторні спроби (retries) на обох платформах. Надішліть той самий запит двічі та порахуйте створені записи.
- Протестуйте блокування. Закрийте період, а потім спробуйте провести в нього документ.
- Перевірте специфіку ваших країн. Для Odoo — який модуль локалізації використовується та наскільки активно він підтримується; для Nordlet — які вихідні форми ПДВ для цих країн доступні наразі.
- Змоделюйте загальну вартість за три роки, включаючи витрати на хостинг і зусилля на оновлення в разі самостійного хостингу, а також зростання обсягу запитів за моделлю тарифікації за використання.
FAQ
Чи є Odoo безплатною?
Odoo пропонує безплатний тариф, обмежений одним додатком, а спільнотна редакція (community edition) має відкритий код. Для інтеграції з платформою відповідними витратами зазвичай є хостинг, оновлення, підтримка локалізації та платний тариф, необхідний для доступу до зовнішнього API, а не сама ліцензія.
Чи можна використовувати Odoo як вбудований обліковий бекенд для маркетплейсу?
Це можливо реалізувати шляхом інтеграції, і деякі команди роблять саме так. Варто зважати на те, що зовнішній API працює на рівні моделей даних, доступ до API прив'язаний до певного тарифного плану, поточні RPC-ендпоїнти планують замінити, а відповідальність за правильне використання облікових моделей лежить на вас. Зіставте ці фактори з власними вимогами, перш ніж робити припущення.
Чи робить Nordlet усе те ж саме, що й Odoo?
Ні. Nordlet — це бухгалтерський облік і суміжні операції: выставлення рахунків, головна книга, банк, склад, основні засоби, виробництво, зарплата, звітність, податки ЄС. Виробництво охоплює специфікації (BOM), маршрути, робочі центри, виробничі замовлення з обліком за операціями, контроль якості та обслуговування обладнання, але без функцій планування попиту та потужностей, які пропонує Odoo. Картки партнерів містять запити, групи та статуси замість воронки продажів, а також немає конструктора вебсайтів і маркетингових інструментів.
Що краще підходить для ПДВ в ЄС?
Це залежить від країни. Nordlet пропонує ставки ПДВ ЄС для кожної країни, перевірку VIES, розрахунок декларацій OSS та IOSS з коригуваннями за попередні періоди, регістри iSAF та EN 16931 UBL, причому найглибше опрацьованим є пакет для Литви. Можливості Odoo базуються на модулях локалізації, глибина та підтримка яких відрізняються залежно від країни, тому чесною відповіддю для будь-якої конкретної країни буде перевірка відповідного модуля цієї країни.
Чи можу я самостійно хостити Nordlet?
Ні на стандартних планах. Тарифний план Custom передбачає підтримку розгортання на власних хмарних потужностях (bring-your-own-cloud), що є темою для окремого обговорення, якщо самостійний хостинг є обов'язковою вимогою.