Перейти до основного контенту
База знань · виробничий облік USD41,42 ПДВ20% МЗП8 000

Odoo

Модуль

Декларація з ПДВ в Odoo

Як зібрати декларацію з ПДВ з journal entries Odoo: рядки 1-21, додатки Д1-Д6, експорт у формат ДПС.

Шлях у меню
Бухгалтерія → Звіти → Декларація ПДВ
Технічна модель
account.tax, account.move.line (через tax_tag)
Редакція
2026-05-28

Що це і навіщо

Декларація з ПДВ — щомісячний (для більшості) звіт у ДПС про обороти, ставки, ПЗ і ПК. Подається до 20-го числа місяця, наступного за звітним. У ній 25+ рядків, шість додатків Д1-Д6 і свої правила заповнення. Помилка в одному рядку — штраф 510 ₴ (ст. 120 ПКУ). Систематична помилка — 1020 ₴. Тому декларацію хочеться формувати з облікової системи автоматично, а не вручну з зошита.

У стандартному l10n_ua декларації немає. Є тільки англомовний tax report з модуля account_reports (Enterprise), який видає табличку «Sales Tax / Purchase Tax», далеку від форми ДПС. Для реальної роботи треба або Oblik-ERP (там декларація з автозаповненням), або власний модуль поверх.

Як це працює

Механіка проста:

  1. На кожній account.tax в Odoo є tax_report_line через account.tax.repartition.line. Це адреса: куди в декларації потрапить ця сума.
  2. Коли проводку проводять (Post), Odoo створює account.move.line з tax_tag_ids — тегами рядків декларації.
  3. Звіт групує рядки за тегами й видає підсумки.
# Як подивитись, які теги у податку
tax = self.env.ref('l10n_ua.l10n_ua_tax_20')
for line in tax.invoice_repartition_line_ids:
    print(line.repartition_type, line.account_id.code, line.tag_ids)

Шлях у меню (з Oblik-ERP): Accounting → Reporting → Tax Report → Ukrainian VAT Declaration. Звіт можна сформувати за період, переглянути порядково, видати XML для подання.

У контексті українського обліку

Структура декларації:

  • Рядки 1.1, 1.2, 1.3 — ПЗ за внутрішніми постачаннями (20%, 7%, 0%).
  • Рядок 2.1 — експортні постачання (0% по ст. 195.1).
  • Рядки 3 — окремі операції (звільнені, поза об’єктом).
  • Рядки 10, 11 — ПК від постачальників, ввезення.
  • Рядки 14, 15 — коригування ПК, ПЗ.
  • Рядки 16-21 — підсумкові розрахунки, до сплати / до відшкодування.

Додатки:

  • Д1 — розрахунок коригування (всі вхідні і вихідні РК за період).
  • Д2 — інформація про залишок від’ємного значення.
  • Д3 — заява на відшкодування.
  • Д4 — інформація про відшкодування на банк.
  • Д5 — інформація про постачальників і покупців (розшифровка ПК і ПЗ).
  • Д6 — інформація про необ’єктні операції.

Д5 — найболючіший. Це постатейний список усіх ПН за період. Зібрати його з Odoo легко (на основі account.move), але на кожному рядку потрібні partner_id, ІПН і номер ПН. Якщо майстер-дата партнерів у тебе розсипана — Д5 не подаси.

Як ми робимо (defense-контекст)

ТОВ «УкрПром-Тех» формує декларацію щомісяця в три кроки:

  1. Перевірка ПДВ-журналів за період. Журнальні звіти «ПДВ — обов’язки» та «ПДВ — кредит». Кожен запис має мати partner_id, ставку й бути проведеним (posted).
  2. Звіряння з ЄРПН. Наш модуль тягне з ДПС реєстр зареєстрованих ПН. Звіряємо зі своїми даними: усе, що є в Odoo, має бути й у реєстрі. Розбіжності з’ясовуємо завжди.
  3. Формування декларації. Кнопка «Generate VAT Declaration» у звітах. Рядки перевіряємо вручну: експорт іде в рядок 2.1, операції за ст. 197.6 — у рядок 3, ввезення послуг від нерезидента — у рядок 7. Після перевірки — експорт XML.

Особливість для оборонних постачань: операції постачання військовим (звільнені від ПДВ за п. 32 підрозд. 2 розд. ХХ ПКУ) ідуть у рядок 3.2. Тут легко переплутати зі звичайним звільненням, тож ми завели окремий fiscal position і окрему ставку «0% — оборонне постачання» з відповідним тегом.

Типові граблі

  • Сума у декларації ≠ сума у журналі. Причини: проводки не posted (а draft), tax_tag не виставлено, lock date змінено посеред періоду. Перевіряй account.move.line.search([('parent_state','!=','posted'),('tax_ids','!=',False)]).
  • Експортні операції потрапили в рядок 1.1, а не 2.1. Забули fiscal position. Лікувати — переоформити інвойс через сторно або вручну переставити tax_tag (страшно, остання надія).
  • Касовий метод, ПДВ не нараховано. На постачальника-комунальника в тебе Cash Basis Tax. Створив Bill — ПДВ повис на 6442 (відстрочений) і в декларацію не потрапить, доки не оплатиш. Це норма. Але якщо забув підв’язати ПН до Bill — не побачиш його в Д5.
  • Партнер без ІПН. У Д5 рядок «нерезидент» чи «фізособа» проходить без проблем. Але якщо це юрособа, а ти вписав лише назву — Д5 не пройде валідацію в ДПС. Зроби ІПН обов’язковим полем для партнерів-юросіб.
  • Відшкодування заявили, рахунок не той. Д4 вимагає МФО банку. Якщо у компанії заведено кілька банків, а Д4 тягне дефолтний — отримання може заблокуватися на 60 днів. Перевіряй перед поданням.
  • РК у Д1 — не той знак. Зменшуюче РК має йти зі знаком «-», збільшуюче — зі знаком «+». Якщо ставка змінюється, потрібен окремий рядок РК: один на сторно старого, другий на правильний. Знак легко переплутати.

Дотичне

Де цей модуль зустрічається9