Sales Purchase and VAT Taxes
The purpose of this discussion is to help you configure your sales and purchase tax.
2014-05-01 AM - Purchase and Sales Tax
- Relationship between Business Partner, Product and Tax Rate
- 0:03:00 Setting tax on an order line. User's ability to override line tax rate.
- 0:05:30 Relationships between order header, order line and order tax records
- 0:07:00 Tax source code - how to debug how iDempiere chooses the right tax rates
- 0:10:50 Review of Tax Rate window
- 0:23:00 Discussion of Avalara tax calculation and filing service
- 0:27:00 Reference to download US taxes by Zip code (zipcode)
- Reference: http://wiki.adempiere.net/Tax_Setup
- 0:29:00 Accounting impacts of a tax rate
- 0:29:45 Managing multiple taxes (State+County+City) or (multiple compound taxes)
- 0:40:00 Sales Tax reporting
Parent Tax
One topic not discussed in the above video is the concept of a parent tax. Parent taxes are used when you have a single document line that requires multiple taxes. If you want to separate GST vs PST or if you want to separate federal vs local taxes for a single order line, you can set the order line to a parent tax record. The system will then break the tax into its components when the document is prepared. Here is an example:
- Notice in GardenWorld, there is a 'GST/PST' Tax Rate.
- Notice the 'GST/PST' Tax Rate is flagged as isSummary = 'Y'
- Notice the 'GST' and the 'PST' Tax Rate records have a field pointing to the 'GST/PST' summary Tax Rate record.
- To see this in action, draft a new GardenWorld Sales Order to any BP at any location.
- When you create a new Sales Order Line, the system will set the line's Tax record based on the above video's rules.
- You can change this rate as you wish. For example, set the line's Product = 'Azalea Bush' and set the Tax = 'GST/PST'.
- When you save the record, iDempiere will estimate the tax. You can see this in the document header's Grand Total field and in the Order => Order Tax sub-tab.
- When you Doc Action => Prepare the document, the system will replace the estimate with the Parent tax's actual tax rates. You ca see this in the Order => Order Tax sub-tab. The 'PST/GST' record previously created when the document was drafted is not gone, and it has been replaced by the respective 'PST' and 'GST' tax records.
Tax on top of other Tax
There are times when TaxB is calculated based on the total of LineNetAmt + TaxA or said another way Total Tax = Lines*TaxA + Lines*(1+TaxA)*TaxB. Therefore, TaxRateB = (1+TaxA)*TaxB. Use this link to get more explanation. Here is an example:
- TaxA per local law = 8%
- TaxB per local law = 2%
- TaxB (per local law) is calculated after TaxA is calculated and added to the invoice line total
- Assume you have an invoice with lines totaling $100 (before tax)
- TaxA = $100 * 0.08 = $8.00
- TaxB = $108 * 0.02 = $2.16
- Total Tax = $10.16
- Total Invoice = $110.16
- When you create your TaxB TaxRate record in iDempiere, your Rate will be:
- TaxRateB = (1+TaxA)*TaxB =>
- TaxRateB = (1 + 0.08)*0.02 =>
- TaxRateB = 0.0216 =>
- TaxRateB = 2.16%
- Going back to the above example of an invoice with lines totaling $100 (before tax),
- Total Tax = TaxRateA + TaxRateB =>
- Total Tax = 0.08 + 0.0216 =>
- Total Tax = 0.1016 =>
- Total Tax = 10.16% =>
- Total Invoice for a $100 invoice (before tax) = $100 * 10.16 =>
- Total Invoice = $110.16
Tax Reconciliation Discussion
Group discussion about recon and VAT tax corrections
Resolving Errors
Missing Addresses
There are times when you are configuring taxes and you receive error messages (null pointer exception - NPE, and others). If this happens, make sure your Warehouses and Organizations have addresses. There is a hierarchy to how iDempiere obtains the from/to addresses. The Organizations and Warehouses are considered in this hierarchy.