- Home
- Apps
- SaaS Tools
- South Korea e-Tax Invoice (Hometax)
Illustrative previewA build-to-order Frappe app that turns an ERPNext Sales Invoice into a compliant South Korean electronic tax
invoice, transmitted through your Hometax or ASP channel with full correction and archiving workflow.
ECOSIRE scopes, builds, installs and supports it for your ERPNext v15/v16 site.
What is South Korea e-Tax Invoice (Hometax)?
A build-to-order Frappe app that turns an ERPNext Sales Invoice into a compliant South Korean electronic tax invoice, transmitted through your Hometax or ASP channel with full correction and archiving workflow. ECOSIRE scopes, builds, installs and supports it for your ERPNext v15/v16 site. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your ERPNext.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- ERPNext Compatibility
- —
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- MariaDB 10.6+
About this Product
Korean e-Tax Invoice obligations are not a formatting problem, they are a lifecycle problem. Every taxable supply has to be issued as an electronic tax invoice carrying the supplier and buyer business registration numbers, the supply date, an item-level split of supply value and VAT, and an approval identifier returned after transmission — and once issued, a mistake can only be repaired by a properly typed correction (modified) tax invoice that references the original. ERPNext core gives you an excellent Sales Invoice, Item Tax Templates and a GL, but it has no concept of an approval number, no correction lineage, no rejection state to reconcile against, and nowhere to keep the machine-readable payload you actually transmitted next to the human-readable document your customer received. Finance teams end up re-keying invoices into a separate portal or ASP console, then hand-matching two sets of numbers at VAT return time.
We build a dedicated Frappe app — its own module, DocTypes, permissions and scheduler events — that closes that gap inside ERPNext. A Korea E-Tax Invoice DocType is created from a submitted Sales Invoice through an on_submit doc event registered in hooks.py, so nothing depends on a user remembering an extra button. A mapping layer resolves the supplier and buyer registration numbers, representative name, business type/item classification and address from Company, Customer and Address/Contact records, with a Korea E-Tax Settings single DocType holding issuance defaults, invoice-type and correction-purpose codes, and the ASP/Hometax endpoint credentials as Password fields. Amounts are recomposed from the invoice items and the Sales Taxes and Charges table so supply value, VAT and total reconcile line-by-line to the accounting entry, and a validation pass fails loudly on what Korean issuance actually rejects: a malformed 사업자등록번호 checksum, a missing buyer email for delivery, a supply date outside the permitted issuance window, or a zero-rated line with no exemption reason.
Transmission is deliberately queued rather than synchronous. Server-side whitelisted methods enqueue the payload through Frappe's background workers via frappe.enqueue, so a slow or unavailable endpoint never blocks an accountant's submit, and a scheduler event retries pending documents and polls for outcome. One posting produces both artefacts: the machine format sent to the channel, and a Jinja print format attached to the record and emailable to the buyer, so the copy the customer holds and the copy the authority received come from the same source. Every request and response is written to a child log table with timestamp, endpoint, correlation id and raw payload, and the approval identifier is written back onto both the e-Tax Invoice and a custom field on the Sales Invoice. Rejections land in a distinct Rejected state carrying the returned error code and message, with a guided correction workflow that opens a properly typed modified invoice linked to its original — cancellation, amount change, item change or wrong recipient — so the chain is reconstructible in an audit years later. Read-only access is exposed over the Frappe REST API and whitelisted methods for your reporting stack, and a role profile separates the clerk who prepares from the officer who issues.
This is build-to-order, and we say so plainly: it is not a marketplace app you download today. After a short scoping call we confirm your channel (direct certificate-based Hometax issuance versus a certified ASP provider), your invoice-type and correction-purpose coverage, your Frappe/ERPNext version and your data quality on registration numbers, then quote a fixed scope. Typical delivery is one working week from confirmed scope. The app is installed on a staging bench first, put through a UAT cycle against your real master data with a documented rollback, then cut over to production — followed by a support window and handover of the full git repository, so the code is yours whether or not you keep working with us.
What you get
- Installable Frappe app source built and pinned for your exact ERPNext version (v15 or v16), packaged for `bench get-app` / `bench install-app`
- Installation and configuration on your bench: `Korea E-Tax Settings`, role profiles, custom fields and channel credentials wiring
- Technical documentation — DocType and field reference, hook and scheduler map, whitelisted method/API reference, and the correction-type decision table
- User guide for finance staff plus a live training session covering issuance, rejection handling and the correction workflow
- UAT run on a staging bench against your real master data, with a signed-off test script and a documented rollback plan before production cutover
- Post-go-live support window for defect fixes and issuance-behaviour questions
- Handover of the private git repository with full commit history, so your team or another partner can maintain the app
- Mapping worksheet documenting exactly how each Korean field is sourced from your Company, Customer, Item and tax master data
Who this is for
Finance Manager / 경리팀장 at a Korean entity
Owns VAT filing and is accountable when an invoice is issued late, rejected, or corrected the wrong way. Wants issuance to happen from the same screen where the Sales Invoice is submitted, and one report that answers which invoices are issued, pending or rejected for the period — without exporting to a spreadsheet and reconciling against a portal.
Group Controller on a multi-country ERPNext instance
Runs one ERPNext site across several jurisdictions and refuses to let Korea become a manual island. Needs Korean issuance to sit behind the same Sales Invoice lifecycle, GL and close calendar as every other entity, with the approval identifier stored in the ERP so consolidation and audit questions are answerable from one system.
ERP / IT Manager responsible for the bench
Will inherit this app. Cares that it is a real Frappe app with DocTypes, hooks and migrations rather than pasted server scripts, that transmission is queued so it cannot block users, that credentials are stored properly, and that the git repository and the upgrade path to the next ERPNext version are handed over.
External accountant or tax advisor supporting the entity
Reviews issuance before and after filing. Needs read-only visibility of what was transmitted, the response received, and the lineage between an original invoice and its correction — evidence that reconstructs the position without asking the client to log into a separate portal.
How South Korea e-Tax Invoice (Hometax) Compares
| Criterion | ECOSIRE | Custom Build | Competitor | ERPNext Native |
|---|---|---|---|---|
| Fit to your Korean issuance setup | Scoped to your channel, invoice types and master data before a line is written | Fits perfectly if the spec is right, but you own writing that spec | Fits the author's assumed setup; edge cases become your problem | No Korean issuance concept to fit |
| Correction and rejection lifecycle | Typed correction workflow with lineage to the original; rejection state carries the returned error | Achievable, but usually the first thing cut when the deadline tightens | Often issuance-only; corrections handled manually in the portal | Absent — a cancelled Sales Invoice leaves no issuance trail |
| Architecture quality | Real Frappe app: module, DocTypes, hooks, scheduler events, migrations | Depends entirely on the developer; server scripts pasted into a live site are common | Usually a proper app, though internals vary widely | Core ERPNext, well built, but nothing Korea-specific to build on |
| Transmission under load or outage | Queued via background workers with bounded retry and reconciliation polling | Synchronous calls are the usual first draft — a slow endpoint blocks users | Varies; retry behaviour is rarely documented | Not applicable — nothing is transmitted |
| Audit evidence | Append-only transmission log plus archived machine and human artefacts per document | Whatever was specified — logging is frequently an afterthought | Status field commonly present; raw payload retention much less so | GL entries only; no issuance evidence |
| Version compatibility | Built and tested against your v15 or v16 bench, upgrade path documented | You inherit the upgrade burden with no documented field mapping | Depends on the maintainer's release cadence and priorities | Moves with ERPNext core, but adds no Korean capability |
| Time to a working system | one working week from confirmed scope, staged through UAT on a staging bench | Months once discovery, build, testing and rework are counted honestly | Fast to install, then slow through the gap-closing rounds | Available immediately, and immediately insufficient |
| Ownership and exit | Full git repository handed over; your team or another partner can maintain it | You own it outright, along with all the maintenance | Licensed; source access and roadmap influence are limited | No app to own |
Frequently Asked Questions about South Korea e-Tax Invoice
How long does delivery take, and when does the clock start?
This is a build-to-order app, not an instant download. Typical delivery is one working week from confirmed scope — the clock starts once we have agreed the issuance channel, the invoice-type and correction-purpose coverage, your Frappe/ERPNext version, and access to a staging bench. Scoping itself is a short call. If your master data needs cleaning (missing buyer registration numbers or contact emails, for example) that work is called out and estimated separately rather than silently absorbed into the timeline.
What support and updates do I get after go-live?
The engagement includes a post-go-live support window for defect fixes and issuance-behaviour questions, agreed in writing before we start. Beyond that we offer an optional maintenance arrangement covering regulatory or channel-format changes and compatibility work when you upgrade your bench, for example a v15 to v16 move. Because you receive the full git repository you are never locked in: your own team or another partner can maintain the app.
Does this connect directly to Hometax, or do I need a certified provider?
Both patterns are supported and the choice is made during scoping. Many organisations issue through a certified ASP provider that handles certificate custody and channel connectivity; others issue directly with their own certificate. The transmission layer is isolated behind a single service module, so the mapping, validation, correction and archiving logic is identical either way and switching providers later is a contained change rather than a rewrite.
What does ERPNext give me natively, and where exactly does it stop?
ERPNext natively gives you the Sales Invoice, Item Tax Templates, tax computation and the GL — the accounting is sound. What it has no concept of is an issuance lifecycle: no approval identifier field, no rejection state, no correction lineage linking a modified invoice to its original, no transmission log, and no machine-format artefact stored alongside the printed document. That is precisely the layer this app adds, without changing how your team posts invoices.
Will this modify or slow down our existing Sales Invoice workflow?
No. The e-Tax document is created by an `on_submit` doc event and transmission runs in Frappe's background workers, so a slow or unavailable channel never holds up a submit. Your posting flow is unchanged apart from a status indicator on the invoice and a guard preventing cancellation of a Sales Invoice whose e-Tax invoice is already issued — which is the behaviour you want, since a change after issuance must be handled as a correction instead.
How are rejections and mistakes handled?
A rejected transmission lands in a distinct `Rejected` state carrying the error code and message returned by the channel, so nothing fails silently. From there the app opens a guided correction workflow that creates a properly typed modified tax invoice — cancellation, amount change, item change or wrong recipient — linked to the original document. The chain is preserved on both records, so an auditor can reconstruct what was issued, what was corrected and why, years later.
Can our reporting tools and auditors read this data without full ERP logins?
Yes. Issuance data is exposed read-only over the Frappe REST API and whitelisted methods with permissions enforced by role, so a BI tool or an auditor's extract can pull issuance status, approval identifiers and correction lineage without write access. A Query Report covering issued, pending and rejected documents by period ships with the app for teams that prefer to work inside ERPNext.
Related Modules

Smart Bank Reconciliation for ERPNext
A Mint-style bank reconciliation experience for ERPNext: visual side-by-side matching, fuzzy AI suggestions with confidence scores, and one-click entry creation. ECOSIRE builds, installs, and supports it for your instance after a scoping call — this is a commissioned build, not an instant download.

STC Pay & Apple Pay Wallet Kit for ERPNext
A build-to-order Frappe app that adds STC Pay and Apple Pay one-tap wallet acceptance to your ERPNext checkout, wired into the Saudi gateways you already use. ECOSIRE builds, installs, and supports it for your instance.

Stripe Billing & Subscriptions Plus
A build-to-order Frappe app that connects ERPNext to Stripe for checkout, recurring subscription sync, card-present Terminal payments, and webhook-driven reconciliation. ECOSIRE scopes, builds, installs and supports it on your bench.
South Korea e-Tax Invoice
A build-to-order Frappe app that turns an ERPNext Sales Invoice into a compliant South Korean electronic tax invoice, transmitted through your Hometax or ASP channel with full correction and archiving workflow. ECOSIRE scopes, builds, installs and supports it for your ERPNext v15/v16 site.
- Dedicated Frappe app with its own module, `hooks.py` doc events and fixtures — installed as a bench app, never as untracked server scripts pasted into a live site
- `Korea E-Tax Invoice` DocType auto-created from Sales Invoice via an `on_submit` hook, with naming series, workflow states (Draft / Queued / Issued / Rejected / Cancelled) and a linked custom field back on the Sales Invoice
- `Korea E-Tax Settings` single DocType holding channel endpoint, credentials as Password fields, issuance defaults, and the invoice-type and correction-purpose code tables
- Business registration number (사업자등록번호) checksum validation, plus resolution of supplier/buyer registration number, representative name, business type and classification from Company, Customer, Address and Contact records
