VAT and Bulgarian fiscal
Audience
Anyone running Bulgarian accounting in PLANA. This is the PLANA-unique content that does not exist in vanilla Odoo.
PLANA Business Cloud ships with a Bulgarian fiscal pack pre-configured at provisioning time: VAT rates, fiscal positions, the chart of accounts (l10n_bg), and the regulator-format reports for monthly VAT, VIES, and Intrastat. This page explains what's there, what to verify before going live, and how to run the monthly cycle.
What's installed by default
A fresh PLANA Business Cloud tenant comes with:
| Component | Source |
|---|---|
Bulgarian chart of accounts (l10n_bg) | OCA + PLANA additions |
| Bulgarian VAT rates (20% standard, 9% reduced, 0%, exempt) | Pre-configured |
| Fiscal positions for B2B / B2C / EU / non-EU | Pre-configured |
| Monthly VAT report in NRA-submission format | PLANA module |
| VIES report for intra-EU B2B | PLANA module |
| Intrastat report for goods movement | PLANA module |
| BG-specific number formatting (dot decimal, BGN currency) | Per locale |
You start with a working setup. The remaining work is to verify that your specific business's setup matches and to review the fiscal positions assigned to your customers and vendors.
Verifying VAT rates
Configuration → Taxes.
The expected default set:
| Tax | Rate | Use |
|---|---|---|
| VAT 20% Sale | 20% | Standard sales |
| VAT 9% Sale | 9% | Reduced — books, food, etc. (per the BG VAT Act) |
| VAT 0% Sale (export) | 0% | Export outside EU |
| VAT Exempt Sale | — | Exempt categories |
| VAT 20% Purchase | 20% | Standard purchases |
| VAT 9% Purchase | 9% | Reduced purchases |
These rates are kept current with regulator changes. If the National Revenue Agency (NRA) changes a rate, PLANA pushes an update.
Fiscal positions
A fiscal position transforms taxes and account assignments based on the customer or vendor. PLANA ships these:
| Fiscal position | Applies to | Effect |
|---|---|---|
| None (default) | Domestic Bulgarian | Standard VAT applies |
| EU B2B (reverse charge) | EU companies with a valid VAT ID | Removes VAT; flags as reverse-charge in VIES |
| EU B2C | EU individual consumers | Standard BG VAT applies |
| Non-EU export | Customers outside the EU | 0% VAT; sale flagged as export |
| Non-EU import (reverse charge) | Vendors outside the EU | Triggers reverse-charge VAT on import |
Assign a fiscal position on each contact in Customer → Accounting tab → Fiscal Position. New customers usually auto-assign correctly based on their country and VAT ID; verify after import.
The chart of accounts
The Bulgarian chart follows the structure required by the NRA:
- Class 1: Capital and reserves (
1xx) - Class 2: Long-term assets (
2xx) - Class 3: Inventories (
3xx) - Class 4: Receivables and payables (
4xx) - Class 5: Financial accounts (
5xx) - Class 6: Expenses (
6xx) - Class 7: Revenue (
7xx) - Class 8: Off-balance-sheet (
8xx)
You can add sub-accounts within each class. You cannot restructure the main classes — the regulator requires this layout.
The monthly VAT cycle
End of every month, run this:
1. Review and post unreconciled bank transactions
Banks → each bank journal → Reconciliation until everything is reconciled. Unreconciled transactions don't appear on the VAT report.
2. Confirm all draft invoices and bills
Customers → Invoices → filter Draft → post each. Same for vendor bills. The VAT report only counts posted documents.
3. Run the VAT report (Bulgarian format)
Reports → Bulgarian VAT report.
Pick the period (e.g. May 2026). Click Generate. The report has three tabs:
| Tab | What |
|---|---|
| Sales | All sales transactions in the period, with VAT due |
| Purchases | All purchase transactions, with deductible VAT |
| Summary | VAT due – VAT deductible = VAT payable / refundable |
Click Export to download the NRA-format XML. This is the file you upload to the NRA portal as your monthly VAT submission.
4. Run the VIES report (if applicable)
If you sold to EU B2B customers in the period:
Reports → VIES report → pick the quarter → Export.
This produces the quarterly VIES declaration for the NRA.
5. Run the Intrastat report (if applicable)
If you moved goods across an EU border:
Reports → Intrastat → Dispatches (goods out) and Arrivals (goods in). Export each in the required format.
The Intrastat threshold in Bulgaria (2026: BGN 1.65M for dispatches, BGN 1.0M for arrivals) determines whether you're required to file.
6. Period close
Once the VAT is submitted to the NRA, close the period to prevent back-dated changes:
Configuration → Fiscal Years → click your year → Periods → click the month → Close.
See Period closing for the full procedure.
Customer / vendor tax ID
Every contact must have a tax ID for the report to count their transactions correctly:
| Field | Where |
|---|---|
| Tax ID (EIK / ЕИК) | Contact → Accounting tab → "Tax ID" |
| VAT (for EU B2B) | Contact → Accounting tab → "VAT" |
A missing tax ID on a customer used in an invoice will appear in the VAT report's validation step. Fix the contact and re-generate.
NRA-format export
The export from the Bulgarian VAT report follows the NRA's XML schema. PLANA tracks regulator changes and updates the export format accordingly. If the NRA portal rejects your file:
- Check the period — is it within the regulator's accepted window?
- Check the company tax ID on the file matches your registration
- Check that all customer tax IDs are present
- Ask in the workspace Matrix room — PLANA will diagnose
Year-end
In addition to the monthly cycle, year-end requires:
- Annual VAT report — January
- Year-end closing entries — in Accounting → Closing
- Annual tax return — typically March of the following year
See Period closing → Fiscal year closing for the procedure. PLANA does not file your annual tax return — your accountant does, using the reports PLANA produces.
Where to read more
- Chart of accounts
- NPR · VIES · Intrastat — submission formats
- Period closing
- Reports — the full report catalogue
- Customer invoicing — what fiscal position affects in practice