Korea e-Tax Invoice
Korea NTS e-Tax invoice (전자세금계산서): NTS TaxInvoice XML, PKI signature prep, BRN checksum validation, clearance via customer ASP (BYOK)
Korea e-Tax Invoice
NTS electronic tax invoicing (전자세금계산서) for Odoo — TaxInvoice XML, PKI signature prep & ASP clearance
Connect Odoo to the Republic of Korea National Tax Service (NTS) e-Tax invoice system — the oldest mandatory clearance model in the world. Customer invoices and credit notes become NTS TaxInvoice XML, are prepared for your accredited-certificate signature, and are cleared through your ASP — which returns the official approval number (승인번호).
Important correction — version 1.1.1 (2026-09-10)
If you are running 1.0.x, please update. The XML produced by earlier versions was not a conformant NTS TaxInvoice document: the namespace, the root element order, the party and total blocks and several line element names did not match the KEC standard, and the document type codes named the wrong documents — a credit note went out as 0102 영세율 세금계산서 and an exempt sale as 0201 수정세금계산서.
1.1.1 rebuilds the document against the official KEC root schema and five real NTS documents, fixes the amounts on a 부가가치세 tax-included Korean chart, and removes the Hometax verification-URL QR, which never resolved to a document. On update, e-Tax documents still in Generated are put back to To Send so they are rebuilt in the corrected format; documents already cleared by the NTS are left untouched, because an issued 전자세금계산서 is corrected by a 수정세금계산서 (our Korea e-Tax Modified Invoice module), never withdrawn by a software update.
After the update, check Accounting → Configuration → Taxes: every sale tax now carries a Korea e-Tax classification. The Odoo Korean chart is classified for you; a tax you created yourself needs one, otherwise invoices using it are refused rather than filed under a guessed regime.
NTS TaxInvoice XML
The real KEC tree — ExchangedDocument, TaxInvoiceDocument, TaxInvoiceTradeSettlement with InvoicerParty / InvoiceeParty, the four 결제방법 blocks and SpecifiedMonetarySummation, then up to 99 TaxInvoiceTradeLineItem. Type codes are composed 분류 + 종류: 0101 세금계산서, 0102 영세율, 0301 계산서, and 0201 / 0401 for their corrections. The generated document is checked element by element against a real NTS certification document and against a schema shipped with the module.
PKI signature preparation
The NTS reference transform chain — inclusive W3C C14N plus the NTS XPath node-set filter — an SHA-256 DigestValue, a complete ds:Signature placed before TaxInvoiceDocument, and the exact bytes your certificate signs with RSA-SHA256. The digest is verified byte-for-byte against an independent XMLDSig implementation. We do not sign for you: we prepare what is signed, and your accredited certificate never leaves your side.
Real BRN validation
The 10-digit Business Registration Number (사업자등록번호) is validated with the official NTS check-digit algorithm (weights 1·3·7·1·3·7·1·3·5 plus the ninth-digit carry) on company and partner, with taxpayer-class detection.
NTS business-rule validation
A Korea rule set layered on the engine's EN 16931-style core checks supplier and buyer identifiers, the buyer identification kind, the 승인번호 shape, whole-won amounts, the no-tax rule on a 계산서, the tax regime of every line (과세 10% / 영세율 / 면세) and the representative before anything is submitted. Anything it cannot measure it refuses by name; nothing is filed under a guess.
Clearance via your ASP
Submit, status polling and cancel/reissue over a configurable accredited ASP REST API — editable base URL and endpoint paths (issue, status, cancel, BRN lookup), API-key or bearer auth, automatic retry with exponential backoff and full transport logging. The NTS is reached by the ASP, not by this module. Cancel is the ASP-side pre-transmission cancel (발행취소), which accredited ASPs offer while a document has not yet been sent to the NTS; once the NTS has issued an approval number a document is corrected by a 수정세금계산서 (our Korea e-Tax Modified Invoice module), and the button says so instead of pretending.
Bring-your-own-key
Your ASP API key and certificate material live on your own database. They are transmitted only to the accredited ASP endpoint you configure — nowhere else — and certificate signing happens in your own certificate store.
Guided onboarding
A wizard captures your BRN, representative, business type/class and ASP credentials, validates the BRN with the real NTS checksum and leaves the company ready to issue e-Tax invoices. An optional cron, shipped disabled, drains posted documents to the ASP in batches — the NTS requires reporting by the day after issuance. A verification QR carrying the approval number, the BRNs and the totals is rendered for the printed invoice as a compact offline payload. On the invoice you choose the Payment Means (결제방법) bucket and, independently, Receipt / Claim (영수 · 청구); neither is guessed from the payment status. The interface is available in Korean and English.
Compatible with Odoo 18, Odoo 19 and Odoo 20.
Disclosure
This module transmits invoice data only to the accredited ASP endpoint you configure, which relays it to the National Tax Service. Your ASP API key and certificate material are bring-your-own-key, stored solely on your own database and never sent anywhere else.
Screenshots
Every e-Tax action on the customer invoice: validate, generate, apply your certificate’s signature, submit, poll the NTS and cancel at the ASP before transmission.
The Korea e-Tax tab: clearance state and 24-digit 승인번호, the two independent axes 영수 / 청구 and 결제방법, the SHA-256 digest and the exact bytes your certificate signs.
The generated document: the real KEC namespace, ExchangedDocument, TaxInvoiceDocument with TypeCode 0101, and TaxInvoiceTradeSettlement with InvoicerParty / InvoiceeParty.
The ASP connection: BYOK credentials, sandbox and production base URLs, four editable endpoint paths (issue, status, cancel, BRN lookup) and the NTS registration id.
The Korea e-Tax classification on the tax itself — 과세 / 영세율 / 면세 / not an e-Tax sale — filled automatically for the Odoo Korean chart.
Update date: 2026-10-01
User guides (PDF)
Related modules
Korea 4 Insurances
Korea four social insurances payroll: National Pension (4.75% 2026 schedule), Health Insurance (7.19% 2026) + Long-Term Care, Employment Insurance, Industrial Accident, with monthly EDI report preparation.
Korea Payroll
Korea payroll: earned-income withholding tax (간이세액) + local income tax on top of the four social insurances, computed per employee with a payroll register.
Korea Year-End Settlement
Korea year-end settlement (연말정산): deduction-data capture, settlement calculation and NTS withholding-statement prep on top of Korea payroll.