| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 7701 |
| Technical Name |
eh_account_l10n_au_bas |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 7701 |
| Technical Name |
eh_account_l10n_au_bas |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
AU BAS Reporting
Australian Business Activity Statement: G1 to G20 sales and acquisition labels, 1A and 1B GST, W1 and W2 PAYG. Quarterly run with locked snapshot.
Day in the life
Quarter-end. BAS due at the ATO portal in 14 days.
The run for the quarter pulls G1-G20 (sales / GST-free / capital / non-capital), 1A (GST collected) and 1B (GST paid), W1-W4 (PAYG-W), T-codes (PAYG instalments), F-codes (FBT instalments), 7C / 7D (fuel tax credits), 1C-F (WET / LCT). Each label maps to one or more account.tax tags; the compute pass is single-SQL per label. The GST control reconciliation shows 1A + 1B against the GL movement on the company's tax control accounts; non-zero variance flags missing tags before lodgement. The agent lodges via SBR / PLS (out of module scope) using the produced figures.
Overview
What this module does, in one read.
A BAS reporting framework for Australian deployments. One run per (company, quarter); the labels resolve through tax tags so the operator configures the mapping once and every run computes deterministically; lodged runs are locked.
Out of scope: SBR (Standard Business Reporting) wire transport. Lodgement to the ATO uses a registered third-party agent or the SBR API.
Capabilities
Ten things this module gives you, with no padding.
One run per quarter
A unique constraint enforces one BAS run per company per fiscal quarter.
Tax-tag mapping
Each ATO label resolves through one or more account.tax tags; deployments configure the rule once.
Snapshot on post
When the user marks the run as lodged the figures are frozen; re-running the compute on a lodged run raises an explicit error.
Reproducible audit log
Every BAS render is recorded as an eh.account.report.execution row through the same audit pipeline.
No silent fallback
A label with no resolved tags surfaces an explicit message rather than computing zero.
Per-company aware
Runs and labels are scoped to a company.
Plays with the close workflow
When eh_account_close_workflow is installed the BAS run schedules itself as a task on the close checklist.
Built from public spec
The label set follows the published ATO BAS form.
GST control reconciliation
GST collected and GST paid control accounts reconcile against the lodgement totals. A variance row is surfaced on the run with a drill-through to the offending move.
ABN validator
Partners and the company carry a validated ABN field. The check digit is verified on save, so an invalid ABN never reaches the lodgement payload.
Compared
How this module stacks up.
Workflow
Configure once. Operate. Audit. Report.
Four steps, the same across every ERP Heritage module so a finance team learns the suite once.
Configure
Settings > Accounting > ERP Heritage. Multi-company, multi-currency, journals, accounts. One-time setup, persisted on the company record.
Operate
The user works inside the standard Odoo accounting flow. The module surfaces only the controls relevant to its scope.
Audit
Every action that changes accounting state writes an audit row. The audit log is append-only at the framework level.
Report
Reports flow through the same reproducible audit pipeline, with cache invalidation by per-company move version.
Why Heritage
Where this module leads, where it matches, what we are honest about.
- Locked-on-lodge snapshot enforcement
- Tag-driven configuration over a coded label set
- Audit log per BAS render
- G1 to G20 + 1A/1B + W1/W2 label set
- Quarterly cadence
- Multi-company scoping
- No SBR wire transport (lodgement still through agent or SBR API)
- No PAYG monthly variant yet
- No FBT / BAS-W variants yet
The full ERP Heritage Accounting Suite (26 modules)
Engineering
Ten engineering rules we hold ourselves to.
No silent fallbacks.Missing config, missing accounts, malformed input each surface explicit messages naming the bad field.
Tests cover the bug, not just the feature.Every defect found in review has a regression test attached to the fix, kept in the repository.
Plain Python where possible.Algorithms that do not need the ORM live under tools/ with unit tests that run without Odoo.
Atomic counters via SQL.Concurrent counters use UPDATE col = col + 1, never read-modify-write loops.
Per-record savepoints in cron loops.A single bad record never freezes the batch; failing rows are recorded, the rest of the batch keeps moving.
Schema-first XML output.PAIN.001 and PAIN.008 generators target the published namespace; tests parse output back and assert structure.
ValidationError versus UserError.Constraint failures raise ValidationError; action failures raise UserError with a remedy.
Privilege groups, not direct upstream references.ACL CSVs reference suite-specific groups; the post-migration script promotes upstream-only users.
Append-only audit logs.Approval log, override log, reconciliation audit, mandate amendment log all override write and unlink at the model level.
Originality from public spec.Every standard implementation is built from the published technical specification, not from another vendor codebase.
The standard we hold: every shipped capability is original code from a public technical specification, with regression tests, with a documented engineering rule for the invariant the code preserves, and with no vendor names in code or user-facing docs. From the suite contributing process
Frequently asked questions
Honest answers to the questions a buyer asks.
Does this run on Odoo 19 Community?
Yes. Every module is built and tested against Odoo 19 Community. No Enterprise dependency anywhere in the stack.
What is the licence?
LGPL-3, the same licence as Odoo Community. You can read the source, modify it, and ship it inside your own Odoo deployment without restriction.
Will this conflict with another accounting addon I already use?
Probably not. The modules add new models in their own namespace (eh.*) and inherit standard models without overriding behaviour silently. If your existing addon also extends the same standard model, ordinary Odoo inheritance rules apply.
Are the engineering principles documented?
Yes. The contributing process and ten engineering rules are kept in the repository so a reviewer can verify the code holds itself to them.
Is there a test suite?
Yes. Every module ships its own integration tests; the engine module ships a full unit test suite for the SQL builder, cache, and report orchestrator.
How do I get support?
Reach the team via info@erpheritage.com.au. Training, deployment, and custom extension work is handled by ERP Heritage directly.
Built by ERP Heritage
ERP Heritage builds enterprise-grade accounting software for the Odoo community. Our suite covers the operational accounting cycle end to end: invoice intake, posting, reconciliation, reporting, period close, payment runs, customer portal, multi-step approvals, and year-end. Every module ships with explicit licensing posture, documented engineering principles, comprehensive tests, and a clear differentiation story.
Ready to deploy?
Install this module, run the test suite, and inspect the structured audit log. For training, deployment, or a custom extension, reach our team.
Talk to ERP Heritage about Odoo implementation, customisation, training, or support.
End-to-end engagement across the Odoo platform: implementation, customisation, reimplementation, functional and technical training, ongoing support, integration planning, and scoped extensions. One team, one response within a business day.
Please log in to comment on this module