A configurable VAT/sales-tax return preparation and statutory reporting pack for ERPNext that maps your ledgers to box-by-box returns across multiple jurisdictions. ECOSIRE builds, installs, and supports it for your ERPNext instance after a scoping call. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $499.00 USD; request a quote for a scoped proposal.

A configurable VAT/sales-tax return preparation and statutory reporting pack for ERPNext that maps your ledgers to box-by-box returns across multiple jurisdictions. ECOSIRE builds, installs, and supports it for your ERPNext instance after a scoping call.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
Finance teams filing VAT or sales-tax returns across more than one country quickly hit the edge of what ERPNext gives out of the box. Native ERPNext tracks tax through the Sales Taxes and Charges and Purchase Taxes and Charges tables and can produce a generic tax report, but it has no concept of a jurisdiction-specific return layout — the numbered boxes of a UK VAT100, a UAE FTA VAT201, an EU-style return, or a country SAF-T file. Teams end up exporting the General Ledger to spreadsheets every period, hand-mapping tax accounts to return boxes, and manually reasoning about reverse-charge, import VAT, and partial exemption. That work is slow, error-prone, and impossible to audit cleanly.
`Tax Return Template` DocType defining the numbered boxes for each country and return type, versioned so old periods keep the layout they were filed under
Child-table mapping rules that bind each return box to specific tax accounts, tax rates, item tax templates, and transaction direction (sale/purchase, standard/reduced/zero/exempt)
`Tax Return` transaction DocType that aggregates `GL Entry` and tax-detail rows for a company and period into a box-by-box output
Explicit reverse-charge handling that posts both the notional output and reclaimable input legs to the correct boxes without double counting
Import-VAT treatment separated from domestic input tax so postponed/deferred import accounting maps to the right boxes
SAF-T / tax-audit-file export scaffolding you extend to a jurisdiction's exact XML/CSV schema
The VAT/Tax Return Filing & Reports Pack is a proper Frappe app (its own module, DocTypes, and hooks.py) that ECOSIRE builds to your jurisdictions. At its core is a configurable mapping layer: a Tax Return Template DocType defines the boxes for a given country and return type, and child-table rules map each box to a set of tax accounts, tax rates, item tax templates, and transaction directions (sale/purchase, standard/reduced/zero/exempt, domestic/import/reverse-charge). A Tax Return transaction DocType then runs against a selected company and period, aggregates the underlying GL Entry and tax-detail rows through that mapping, and produces a box-by-box return you can review, adjust, lock, and export. Reverse-charge and import VAT are handled explicitly — the mapping can post both the output and input legs of a reverse charge to the correct boxes so the net is correct without double counting.
Technically, the pack is built for Frappe/ERPNext v15 and v16. Aggregation runs in whitelisted server-side methods (parameterized queries, never string-built SQL), exposed over the Frappe REST API so returns can be generated or fetched programmatically. hooks.py doc events guard period integrity — once a Tax Return is submitted and the period is locked, controllers block back-dated edits to tax transactions in that window, and any correction flows through a controlled Tax Adjustment Entry that lands in the next open return. Client scripts drive the return workspace UI (recalculate, drill from a box down to the contributing invoices, flag variances). Role profiles and permission rules separate who can prepare a return from who can lock and file it, and scheduler events can pre-stage draft returns and send period-end reminders. Where a jurisdiction needs a machine-readable file, the pack ships SAF-T / tax-audit-file export scaffolding you extend to the exact schema.
Because this is build-to-order, you are not downloading a fixed marketplace app. After a short scoping call we confirm your jurisdictions, return layouts, chart-of-accounts and tax mapping, and any audit-file format, then build and configure the app against your ERPNext instance. Typical delivery is 2-4 weeks from confirmed scope. You receive the installable source for your version, UAT on a staging copy of your data, a go-live window, and a support period — not a black box.
Owns VAT/sales-tax compliance across several registered entities and needs one consistent ERPNext-native way to produce each jurisdiction's return without exporting to spreadsheets every period.
Prepares the actual returns and needs box-by-box figures they can drill into, reconcile against the GL, and defend in an audit — plus a clean path for post-lock adjustments.
Maintains the instance and wants a properly packaged Frappe app with clear DocTypes, permissions, and hooks that upgrades cleanly across v15/v16 rather than ad-hoc customizations.
Runs periodic filings for multiple ERPNext clients and needs configurable per-country templates and audit-file export scaffolding they can adapt per engagement.
Buy the license on ecosire.com and download the VAT/Tax Return Filing & Reports Pack app ZIP from your account dashboard.
Extract the ZIP into your bench's apps folder, or run `bench get-app` with the path to the extracted app.
Run `bench --site SITE_NAME install-app APP_NAME` followed by `bench migrate` to install VAT/Tax Return Filing & Reports Pack and apply its schema.
Open the ECOSIRE License settings on your site and activate your license key. Requires the free ecosire_connect and ecosire_license_client apps.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Return layout | Box-by-box per jurisdiction via configurable `Tax Return Template` | Whatever you scope and build yourself | Usually one country's fixed layout | |
| Multi-jurisdiction | Multiple countries and return types from one template model | Possible but you build each one | Typically single-jurisdiction focus | |
| Reverse-charge & import VAT | Explicit two-leg mapping and separate import-VAT boxes | Depends on your build effort | Varies; often partial | |
| Period lock & adjustments | `hooks.py` lock + forward-flowing `Tax Adjustment Entry` | Must be designed and built | Rarely enforced | |
| Audit file / SAF-T | Export scaffolding extended to your schema | Built from scratch | Only if that country's app includes it | |
| Fit to your accounts | Mapped to your chart of accounts and tax templates in scoping | Fully bespoke | Assumes standard setup | |
| Ownership & support | You own the git repo; defined support window | You own it; you maintain it | Vendor-controlled, subscription | |
| Delivery | Build-to-order, 2-4 weeks, UAT + rollback | Open-ended internal timeline | Instant install, generic fit |
This is a build-to-order product, not an instant download. After a scoping call to confirm your jurisdictions, return layouts, and tax mapping, typical delivery is 2-4 weeks from confirmed scope. Wider multi-country rollouts or custom audit-file formats can extend that, and we agree the timeline in the scoping document before work starts.
The pack is jurisdiction-configurable rather than fixed. We build the `Tax Return Template` boxes and account mappings for the specific countries and return types you tell us in scoping — for example UAE FTA VAT201, UK VAT100, EU-style returns, or GCC/regional sales-tax filings. Additional jurisdictions can be added later using the same template model.
We build for Frappe/ERPNext v15 and v16. We target the exact version and patch level of your instance so the app installs cleanly, and the code follows standard Frappe app conventions (DocTypes, `hooks.py`, whitelisted methods) so it survives routine upgrades.
Every build includes a post-go-live support window for defect fixes and configuration questions. Because you receive the full git repository, you own the code and can maintain it in-house or engage ECOSIRE for ongoing changes, version upgrades, or new jurisdictions under a separate support arrangement.
It reads from your existing tax data — `GL Entry` and the sales/purchase tax detail rows — so your day-to-day invoicing is unchanged. Once a return is submitted and its period is locked, `hooks.py` doc events block back-dated edits to tax transactions in that window; corrections flow through a controlled `Tax Adjustment Entry` into the next open return, so a filed period is never silently altered.
The pack produces the box-by-box figures and, where scoped, machine-readable audit-file/SAF-T output. Direct e-filing depends on whether the authority exposes an API and what accreditation it requires. Where a supported filing API exists we can scope an integration on top of the return output; otherwise the pack prepares the exact figures and file for submission through the authority's portal.
Yes. Reverse-charge is mapped so both the notional output and the reclaimable input legs post to the correct boxes, giving the right net without double counting. Import VAT is treated separately from domestic input tax so postponed or deferred import accounting maps to the boxes your jurisdiction requires.
A configurable VAT/sales-tax return preparation and statutory reporting pack for ERPNext that maps your ledgers to box-by-box returns across multiple jurisdictions. ECOSIRE builds, installs, and supports it for your ERPNext instance after a scoping call.