Skip to main content

Building a Vietnamese Localization for Acumatica: 6 technical gaps vs. Vietnamese accounting standards and how we closed them

  • Oct 19, 2026 7:28 AM UTC
  • 0 replies
  • 22 views
  • Translate All

lacpham63
Freshman I

Over the past period our team at S4 Consulting has been building a Vietnamese Localization for Acumatica under Circular 99/2025/TT-BTC, the accounting regime Vietnamese companies follow from fiscal year 2026. I want to share the main technical gaps we found between standard Acumatica and Vietnamese Accounting Standards (VAS), and how we closed them. Hopefully this is useful for partners and customers working on other country localizations too.

Why a localization is needed at all

Acumatica is built around common international practice: multi-line journal entries, reports by account class, and an automatic year-end close into retained earnings. Vietnamese statutory accounting adds requirements that international practice simply does not have. Chief accountants are not asking for "nicer reports"; they need books and statements in prescribed formats that auditors and tax authorities will accept.

Gap 1 - Offset account on every ledger line

Vietnamese books (General Journal S03a-DN, account ledgers S38-DN) and the direct-method cash flow statement require every debit to be paired with a credit account ("tài khoản đối ứng"). An Acumatica batch can have many lines with no explicit pairing.

How we solved it: a graph extension on batch release and post splits each batch from GL, AR, AP, IN and CA into offset pairs, using four rule-based matching passes. The pairs are stored in separate tables, so standard Acumatica data is untouched. A splitting error never blocks posting; the batch can be re-run, and a reconciliation screen lists failed or unbalanced batches for the accountant to review.

Gap 2 - Chart of accounts and VAS mapping

Many companies, especially FDI subsidiaries, keep a group chart of accounts. Vietnamese reports must still be presented on the Circular 99 chart, with a split between current and non-current items.

How we solved it: new columns on the Chart of Accounts screen - "VAS account", "Parent account (VN reports)" and "Term (VAS)" - plus a configuration screen that creates or completes the Circular 99 accounts. B01-DN and B09-DN read the term column to split lines correctly.

Gap 3 - Statutory books, statements and prints

Circular 99 prescribes S-DN books, B01-DN, B02-DN, B03-DN and B09-DN notes, receipt and payment vouchers, each with a legal-entity header and signatories. Standard financial statements in Acumatica follow an international layout.

How we solved it: report templates are data-defined in JSON (for example B01-DN has 126 lines and B09-DN has 111 sections), so regulation changes are handled mostly by configuration, and company-specific additions survive template reloads. Statutory prints are built in Report Designer and print in Vietnamese, English or bilingual, using the Translation Dictionary. Every figure drills down to accounts, the account ledger and the original batch.

B01-DN statement of financial position, statutory print under Circular 99 from the Acumatica ledger (S4 demo company)

Gap 4 - Year-end closing through account 911

Vietnamese practice closes revenue and expense accounts into account 911 (determination of business results) and then to retained earnings, with real journal entries that appear in the books. Acumatica's year-end close works differently.

How we solved it: a three-stage closing that generates real entries and can be reversed with reversing entries. Closing happens only at year end, so the standard Profit & Loss and dashboards keep reading correctly by account class during the year.

Gap 5 - Non-deductible expenses for corporate income tax

Vietnamese CIT rules disallow certain expenses (non-compliant cash payments, invalid invoices, penalties, missing invoices and so on). Accountants usually track these in spreadsheets and only reconcile at year end.

How we solved it: lines on purchase invoices, cash transactions and journal entries can be flagged as non-deductible with a mandatory reason, with defaults by account. Changes after posting are logged. A summary screen groups the amounts by reason and account, and B02-DN can be viewed including, excluding, or showing only non-deductible expenses.

Non-deductible expenses for CIT, summarised by reason and account (S4 demo company)

Gap 6 - Statutory and management reporting on one ledger

Management wants the same statements filtered by branch, business line or project, at different account detail. The risk is that a management version gets filed by mistake.

How we solved it: all books and reports filter by company, branch and subaccount within user rights. Whenever a management-only option is selected, the printout carries the note "Internal management report, not for filing".

Design principles we kept

  • Delivered as a standard Customization Project, with no changes to Acumatica core code.
  • Core algorithms (offset splitting, report formulas, amount in words) live in a platform-independent .NET Standard library covered by automated tests.
  • Screens are built on the Modern UI and grouped in a "Vietnam Accounting (TT99)" workspace.
  • Every data change goes through platform documents and journal entries.

About S4 Consulting

S4 Consulting is an Acumatica Gold Partner in Vietnam focused on Acumatica implementations. Besides the accounting localization above, we provide localization packages for VN Payroll (salary, social insurance, personal income tax), e-invoicing, and site safety for Acumatica Construction Edition - all aligned with Vietnamese regulations. More details: Vietnamese Localization for Acumatica.

I would be glad to hear from others who have built localizations for countries with prescribed statutory formats. How did you handle offset accounts or country-specific closing in your projects?