How tax management works
Three foundational concepts drive every tax calculation in DualEntry. Nexus. A nexus represents a jurisdiction where you’re registered to collect and remit tax (a US state, a non-US country, or in some cases a sub-region). You configure your nexuses under Configuration → Tax Setup → Nexuses, and DualEntry uses those registrations to decide which taxes apply to a transaction. If you’re not registered in a jurisdiction, DualEntry won’t apply its tax and won’t accidentally over-collect. Address-driven determination. Tax is calculated based on the parties on the transaction and their addresses. For sales, DualEntry prioritizes the shipping address on the record, falls back to the billing address when shipping isn’t specified, and then to the customer’s default address. For purchases, the vendor’s address combined with your nexus determines treatment. Address-level precision matters: US sales tax rates can change at the zip-code level, and cross-border VAT and GST rules pivot entirely on the buyer’s country. Direct GL posting. Tax doesn’t create a separate journal entry. When you post an invoice or bill, the tax amount is part of the same posting transaction that hits the General Ledger, debiting or crediting the appropriate tax accounts (sales tax payable, VAT receivable, GST output, and so on) as line-level entries on the source document. The Tax Payable system account is the reserved account DualEntry uses for this direct posting of tax liability: collected sales tax, output VAT, and output GST credit it as part of the source transaction, and remitting the tax to the agency debits it back down. This matches how all transactions post in DualEntry and keeps the audit trail tied to the originating record. See General Ledger for more on the direct-posting model. For organizations that prefer a third-party engine, DualEntry also supports an Avalara integration as an alternative for US sales tax calculation.US vs non-US tax: two models, one platform
US sales and use tax and international VAT/GST behave differently enough that DualEntry models them as two related but distinct systems. US tax is jurisdiction-based. A US transaction gets a tax code (typically a combination of state, county, and city) that determines the rate. Compound codes stack components separately so the breakdown is visible on invoices and reports. Sales tax is collected from the customer and remitted to the taxing authority; use tax is self-assessed on purchases where the vendor didn’t charge tax. VAT and GST are rate-based. A non-US transaction uses a tax rate (for example, 5%, 20%, zero-rated, exempt) tied to a country’s tax system. VAT and GST track input and output tax separately: output VAT or GST on sales is a liability you remit, while input VAT or GST on purchases is a receivable you reclaim. Both sides flow into a periodic return. The distinction matters because the configuration, calculation, and reporting workflows differ. The same DualEntry tenant supports both. See US Taxes for the sales and use tax flow, and Non-US Taxes for VAT and GST.Cross-cutting concepts
A few capabilities span both tax models. Tax registration numbers. Customer and vendor records carry tax registration numbers (US sales tax permit, VAT number, GST number, PST number) in a unified registration field. DualEntry uses these to determine reverse-charge eligibility for VAT, B2B treatment for GST, and exemption matching for US sales tax. Exemptions. Customers can be marked tax-exempt at the record level for US sales tax (with an exemption certificate stored for audit), or treated as zero-rated or exempt at the line level under VAT and GST. Exemption logic is checked at posting time so the GL impact is correct from the moment the transaction lands. Multi-currency. Tax calculations run in the transaction currency, with FX revaluation handled through your multi-currency setup. This matters for international AR and AP where you bill in customer currency but report in company currency. Tax reporting and payment. Tax data feeds dedicated reports (sales tax liability, VAT returns, GST returns) that you run by period and jurisdiction. When you remit tax to a tax agency, DualEntry records the payment as a debit to the tax liability account and a credit to cash, closing out the period’s collected tax.Setup and where to go next
If you’re setting up tax for the first time, work through the pages in this order:- Configure your nexuses under Configuration → Tax Setup → Nexuses for every jurisdiction where you’re registered to collect or remit tax.
- Add tax registration numbers to your customer and vendor records.
- Walk through the model that applies to your business: US Taxes, Non-US Taxes, or both if you operate globally.
