- 首页
- Apps
- SaaS Tools
- Ghana E-VAT Compliance for ERPNext
示意预览A build-to-order Frappe app that turns ERPNext Sales Invoices into GRA E-VAT compliant fiscal documents,
with rejection handling, correction workflow and a complete audit trail.
ECOSIRE scopes, builds, installs and supports it on your bench.
什么是 Ghana E-VAT Compliance for ERPNext?
A build-to-order Frappe app that turns ERPNext Sales Invoices into GRA E-VAT compliant fiscal documents, with rejection handling, correction workflow and a complete audit trail. ECOSIRE scopes, builds, installs and supports it on your bench. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $999.00 USD; request a quote for a scoped proposal.
核心功能
按需定制,全程代劳
无需自行搭建——由 ECOSIRE 构建、安装并提供支持的可用应用。
- 1
您下单
以一次性构建价格开始。我们在启动时与您共同确定范围。
- 2
我们构建与安装
ECOSIRE 在您的 ERPNext 上构建、配置并安装。
- 3
上线 + 支持
约一个工作周内上线,并包含两周上线支持。我们交付的代码中的缺陷免费修复。
技术规格
- ERPNext 兼容性
- —
- 许可证
- 许可证需要确认
- Python 要求
- Python 3.10+
- 数据库
- MariaDB 10.6+
关于此产品
Finance teams invoicing in Ghana carry an obligation ERPNext core was never designed for: every taxable sale has to be presented to the Ghana Revenue Authority in the GRA's own machine format, carry the fiscal identifiers the GRA returns, and be reproducible on demand years later. Out of the box, ERPNext gives you a Sales Invoice, a Sales Taxes and Charges Template, and a print format. It does not give you a fiscalisation state on the document, a queue that retries a failed transmission, a place to store the GRA response identifiers against the invoice, or a legal way to correct a document that has already been fiscalised. Most teams end up with a parallel spreadsheet and a person who re-keys invoices into a portal — which is slow, unauditable, and breaks the moment volume grows or that person is on leave.
We build a proper Frappe app — its own module, its own DocTypes, installed on your bench alongside ERPNext rather than patched into it. The core is a Ghana E-VAT Settings single DocType holding endpoint, credentials and environment (sandbox vs live), plus a child DocType that maps your ERPNext tax accounts and Item Tax Templates onto the GRA's tax categories and rate codes, so the classification lives in master data and not in code. A hooks.py doc event on Sales Invoice.on_submit builds the payload from the submitted document, and a queued background job (never the web request) performs the transmission, so a slow or unreachable GRA endpoint can never block a user pressing Submit. Every attempt is written to a Ghana E-VAT Transmission Log DocType: request payload, response body, HTTP status, timestamp, and the operator who triggered it — an append-only trail you can hand an auditor.
The same posting produces both outputs the law and the customer need. The machine format is generated from the invoice's own fields — no re-keying — while a Frappe print format renders the human-readable invoice carrying the GRA identifiers, the QR or verification data returned on acceptance, and the fiscal reference, so the document a customer receives and the document the GRA holds are provably the same posting. Rejections are treated as a first-class state rather than an error: the invoice carries a fiscalisation status field (Pending, Queued, Accepted, Rejected, Cancelled) with the GRA's reason code and message rendered inline via a client script, a list-view indicator so finance can see the whole backlog at a glance, and a correction workflow that produces a properly linked credit note or re-submission rather than silently editing a submitted document. A scheduler event sweeps stuck and rejected records on your chosen cadence and can alert a role, so nothing sits unnoticed until month end. Whitelisted methods expose retry, status refresh and bulk re-submission over the Frappe REST API for your own tooling, and a dedicated role plus role profile keeps credentials and manual re-submission away from ordinary invoice clerks.
This is build-to-order, not a marketplace download. We start with a short scoping call to confirm your GRA registration status, invoice volume, tax categories in use, ERPNext version and any customisations already on Sales Invoice. We then build against your actual bench and your Frappe/ERPNext version — v15 and v16 are both supported — deliver to a staging site for UAT with your own invoices, and only then go live with a documented rollback. Typical delivery is one working week from confirmed scope. You receive the full source in a git repository you own, so nothing about your compliance depends on our continued involvement.
你得到什么
- Installable Frappe app source built and tested against your exact Frappe/ERPNext version (v15 or v16)
- Installation and configuration on your bench, including Ghana E-VAT Settings, tax mapping and role profile setup
- Technical documentation covering DocType schema, hooks, scheduler events, whitelisted API methods and the GRA payload mapping
- End-user guide plus a live training session for your finance team covering issuing, monitoring and correcting fiscalised invoices
- UAT on a staging site using your own invoice data, with a signed-off test script and a documented rollback plan
- Go-live support window after cutover, covering defect fixes in the delivered scope
- Private git repository handover — you own the source, history and the right to maintain it independently
- Sandbox-to-live cutover checklist including credential rotation and a first-day reconciliation procedure
这是给谁的
Finance Manager / Financial Controller
Accountable for the accuracy of what the GRA holds versus what the ledger says. Needs every taxable sale fiscalised without a parallel spreadsheet, a visible backlog of rejections, and a defensible audit trail at year end.
Accounts Receivable / Billing Team Lead
Issues the invoices daily and feels every second of friction. Needs Submit to stay fast, rejections to explain themselves in plain language on the document, and a correction path that does not require calling IT.
ERPNext System Administrator / Internal Frappe Developer
Owns the bench and will inherit the code. Needs a proper app rather than customisations sprayed across Custom Fields and Server Scripts, clean hooks, readable logs, and a repository they can maintain through the next `bench update`.
Group CFO / Compliance Lead of a multi-entity business
Operates Ghana alongside other jurisdictions on one ERPNext instance. Needs Ghana E-VAT handled per-company without disturbing the tax setup of other entities, and evidence the control is automated rather than person-dependent.
Ghana E-VAT Compliance for ERPNext 如何比较
| 标准 | 伊科西尔 | 定制建造 | 竞争对手 | ERPNext 原生 |
|---|---|---|---|---|
| Fit to your GRA setup and tax categories | Mapped to your actual tax accounts and Item Tax Templates during scoping | Exactly what you specify, if you can specify it correctly first time | Generic mapping you bend your master data to fit | No GRA concept at all — only ERPNext tax templates |
| Time to a working system | one working week from confirmed scope, staging UAT included | Months of hiring, spec writing and iteration | Fast to install, then weeks of workarounds | Immediate, but the compliance work stays manual |
| Rejection and correction handling | Status states, GRA reason codes on the document, linked credit note workflow | Built only if someone thought to specify it | Often a raw error log with no correction path | Not applicable — nothing is transmitted |
| Audit trail and archiving | Append-only Transmission Log with payload, response and operator, exportable | Depends entirely on the developer's discipline | Usually a truncated error field | Version history on the invoice only |
| Upgrade path across Frappe v15/v16 | Tested per version, with patches and fixtures for `bench update` | Your team owns every migration | Depends on the vendor's release cadence and priorities | Core upgrades handled, compliance gap unchanged |
| Source code ownership | Full source in a git repo you own, no lock-in | Yours, at full development cost | Licensed binary or vendor-controlled repo | Open source core, no compliance layer to own |
| Cost profile | Fixed build price after scoping, plus optional support | Open-ended developer time plus ongoing maintenance | Low list price, hidden customisation and rework cost | Free software, expensive manual process |
| Who carries the compliance risk day to day | Automated control with an alerting scheduler and named role | Whoever built it, until they leave | You, once the vendor's assumptions diverge from yours | One person and a spreadsheet |
关于Ghana E-VAT Compliance的常见问题
How long does delivery take?
This is a build-to-order app, not an instant download. Typical delivery is one working week from confirmed scope — that clock starts once we have agreed the tax mapping, your GRA credentials or sandbox access, and your ERPNext version. The scoping call itself takes about 30 minutes and is where we establish that scope.
What support and updates do I get after go-live?
Every engagement includes a post-go-live support window covering defect fixes within the delivered scope. Beyond that, you own the git repository, so you can maintain it in house or retain us on a support agreement. When the GRA changes its specification or you upgrade Frappe/ERPNext, we quote that as a defined change — we do not silently push updates into your production bench.
Will this work with our customised Sales Invoice?
Usually yes, and that is exactly what the scoping call is for. The app installs as its own module and hooks into standard doc events rather than editing core files, so it coexists with Custom Fields, Server Scripts and other apps. If you already have a heavily customised submit flow, we review it before quoting so the integration is designed, not discovered mid-build.
What happens when the GRA endpoint is down or rejects an invoice?
Transmission runs as a background job, so a slow or unreachable endpoint never blocks a user submitting an invoice. Failed attempts stay Queued and are retried by a scheduler event with backoff; a rejection moves the invoice to Rejected and surfaces the GRA reason code on the document, with a correction workflow to issue a linked credit note or re-submit. Nothing is silently dropped and every attempt is logged.
Which Frappe and ERPNext versions are supported?
We build and test against Frappe/ERPNext v15 and v16. We build for the version you actually run — tell us on the scoping call and we target that branch. Supporting a second version later is a small, quotable change rather than a rebuild.
Do you need our live GRA credentials to build this?
No. We build and test against the GRA sandbox environment wherever one is available to your organisation. Live credentials are entered by your own team into the Ghana E-VAT Settings DocType at cutover, stored as Password fields, and are never held by us.
Can we call this from our own systems rather than the ERPNext UI?
Yes. The app exposes whitelisted methods for retry, status refresh and bulk re-submission over the Frappe REST API, authenticated with normal Frappe API keys and governed by the same role permissions as the UI. If you invoice from an external system that already posts into ERPNext, fiscalisation follows automatically from the submit event.
相关模块

Google Sheets Two-Way Sync for ERPNext
A no-code, scheduled bridge between Google Sheets and any ERPNext DocType, with insert and upsert modes, incremental sync, and an optional two-way write-back. ECOSIRE builds, installs, and supports it for your v15/v16 site after a scoping call.
Ghana E-VAT Compliance
A build-to-order Frappe app that turns ERPNext Sales Invoices into GRA E-VAT compliant fiscal documents, with rejection handling, correction workflow and a complete audit trail. ECOSIRE scopes, builds, installs and supports it on your bench.
- Dedicated Frappe app with its own module, installed on your bench beside ERPNext — no core file edits, no monkey patching
- Ghana E-VAT Settings single DocType holding endpoint URL, credentials, environment toggle (sandbox/live) and retry policy, with secrets stored as Password fields
- Tax mapping child table binding ERPNext Item Tax Templates, tax accounts and Sales Taxes and Charges rows to GRA tax categories and rate codes, so classification lives in master data
- `hooks.py` doc events on Sales Invoice `on_submit` and `on_cancel` that enqueue transmission as a background job — user submission is never blocked by GRA latency


