In this article
In the following we will explain what need to be considered when creating a BananaApps for VAT reporting suitable a specific country.
- Creating the Vat code for the specific country.
- Creating the country specific reports or export files, using the functionalities offered by the Banana API .
Documentation
Examples files
- The examples files are available on github/General/CaseStudies.
- Solutions making use of the vat api.
Vat Table
We have 2 main groups:
- Vat due to the tax autorithy.
- Vat recoverable
Creating the VatCode for a specific country
When you use Banana Accounting in a new country you need to adapt the VatCode table to your country needs. Basically you should procede as described here.
- You should be aware of how the Vat reporting form is. You need to create the VatCode so that the user can assign to the transcaction the correct code so that the Vat is calculated and the amount can be assigned to a specific item in the Vat declaration.
- If there are different Vat percentage you should create a VatCode for sales and a VatCode for recoverable, due the the fact that when there is a Vat declaration the Vat payable must be separated from the Vat recoverable.
- You may nedd to create more Vat code for the same percentage if the Vat tax form require you to separate some amounts.
Example, for a country that has a Vat percentage of 5% and 10%.
- For the 0% you need to report both the sales exempt and the export:
- Create a Vat code S0 for Vat Exempt (Vat due Yes even if percentage is 0)
- Create a Vat code SE for Vat Export. (Vat due Yes even if percentage is 0)
- For the 5%
- Create a Vat code S5 for sales at 5% (Vat due Yes)
- Create a Vat code P5 for purchase. (Vat due void, means recoverable)
- If you need to show separatly on the tax form the discounts create a Vat code SD5 for discount on sales at 5%.
If it is not necessary to show separatly the discounts, when entering the transactions for discount we precede the Vat code with the "-S5" so the amount will be reversed.
There are countries where the are many Vat percentage and a complex tax reporting form. In this case you will end up having a Vat table with many codes.
Use the Gr1 to groups Vat Code toghether
If the Vat amounts for different Vat code need to be grouped together you can use the Gr1 to enter to witch field the Vat code belong.
- When creating a BananaApps to groups the amounts together you can use this groups to report the amounts.
- In case the user need to add a new VatCode that fit in a form it can do it and it get correctly summed in the tax form.
Specify in the Gr1 the field number of the Vat form, separating the number with a ";" if the same goes in more then on group. For examples:
- The field 100 of the tax form requre to declare all sales amounts.
- The different sales need also to be indicated in the specific tax field, so we specify also the other tax field.
- Discount need to be indicate separately so we specify for a discount the specific field. The same for purchases.
Give the full Vat code table
It is possible that you will end up with a very complex Vat table.
Some user will probably use only few Vat code, the one that are necessary for their actitivity.
But it is better not to give to the user a stripped down Vat table, for the fact that it may need one specific Vat code.
In this case enter the 1 in the Disable columns. The user will be able to use the code but this will not appear in the list of available VatCode when entering it in the Transactions table.
Assigning vat code to the accounts table
For each account you can assign a default Vat Code (column Vat code).
When you enter or import transactions the Vat code will be retrived, but you can in case changte it.
Vat Transactions
We see above different example of VAT transactions.
- Doc 10-11.
We record cash sale usind different Amount type.
We see that the transaction amount is different but the Taxable amount and Vat amount are always the sames.
VAT amount is in negative for the fact that the VAT amount is registered in credit, and therefore the amount must be pay to the tax authority. - Doc 20.
Return of goods from customer.
We use the same VAT code, but preceded by the minus sing. The taxable amount and VAT amout sign is inverted.
Vat Amount is positive (debit) meaning we recover the vat from the tax authoriy. - Doc 100-102.
Purchase the VAT amount is positive (debit) meaning we recover the vat from the tax authortity. - Doc 130.
Return of good to suppliers the VAT code is inverted, and we own the taxt to the authority.
Excel summary
With Banana ExcelSync we have created a excel spreadshed with the summary value of the vat code.
Javascipt API equivalent
The API to retrieve the values above would be.
//get the description of the vat code Banana.document.vatDescription("S10"); // use the vatCurrent Balance to retrieve the different values Banana.document.vatCurrentBalance("S10").vatTaxable; Banana.document.vatCurrentBalance("S10").vatAmount; Banana.document.vatCurrentBalance("S102").vatNotDeductible; Banana.document.vatCurrentBalance("S10").vatPosted; Banana.document.vatCurrentBalance("S10").rowCount;
- vatTaxable is the amount netto, the one tha usually must figure on the vat report as the amount of revenue to declare.
- vatAmount is the Vat amount.
- vatTaxable + vatAmount is the amount inclusive Vat..
- vatNotDeductible is the amount of vat that cannot be fiscally deducted. In case you have an expense where the Vat cannot be totally deducted.
- vatPosted (vatAmount - vatNotDeductible) is the amount that has been posted on tha vat account.
- count is the number of row that have been found to use the vatCode.
The sign of the vatAmount
The sign of the vatAmount follows the accounting convention.
- If the sign of the vatAmount is negative (debit) it means that the vat is due.
- If the sign of the vatAmount is positive it means that the vat is recoverable.
The sign of the vatTaxable follow the sign of the vatAmount. In case the vatAmount is zero the vatTaxable sign is negative if the isDue of the vatCode is true.
If you use the vatAmount to create a tax form you should take care to invert the amount.
vatAmount sign and isDue flag:
- Vat code that have the isDue to true (1) normally have the vatAmount in negative, but the vatAmount could also be positive in case the user has used the vatCode with the minus sign "-S10".
The minus sign before the vatCode is used in case of reversal transaction (correction of an incorrect transactions). In this case the vatAmount would be recorded in the positive. - Vat code that have the isDue to false (void) normally have the vatAmount in positive, but the vatAmount could also be necative in in case the user has used the vatCode with the minus sign "-P10".
In this case the vatAmount would be recorded in negative.
Amount used in the vat report for the tax authorities
Vat due
The amounts are usually in negative,so they must be inverted.
Banana.document.vatCurrentBalance("S10").vatTaxable * (-1); Banana.document.vatCurrentBalance("S10").vatAmount * (-1);
They could be positive in the case that there have been a good returned from clients that exceed the amount of sales.
Vat recoverable
The amounts are usually in negative,so they must be inverted.
Banana.document.vatCurrentBalance("P10").vatTaxable; Banana.document.vatCurrentBalance("P10").vatAmount;
They could be negative in the case that there have been a good returned to suppliers that exceed the amount of sales.
Period
Vat report are usually done for a period (month, quarter or semester).
You should use the vatCurrentBalance with tha startDate and endDate
//vat report for January 2018 var startDate = "2018-01-01"; var endDate = "2018-01-31 Banana.document.vatCurrentBalance("S10", startDate, endDate).vatTaxable; Banana.document.vatCurrentBalance("P10", startDate, endDate).vatTaxable;
Summing many Vat codes
You can have the total of different code by separating the vat code with the sign "|"
//vat report for January 2018 var startDate = "2018-01-01"; var endDate = "2018-01-31 // The taxable amount Banana.document.vatCurrentBalance("S0|S5|S10|SD5|SD10", startDate, endDate).vatTaxable * (-1); // The vat due Banana.document.vatCurrentBalance("S0|S5|S10|SD5|SD10", startDate, endDate).vatAmount * (-1); // The vat taxable vat recoverable Banana.document.vatCurrentBalance("P0|P5|P10|PD5|PD10", startDate, endDate).vatTaxable; // The vat vat recoverable Banana.document.vatCurrentBalance("P0|P5|P10|PD5|PD10", startDate, endDate).vatAmount;
Printing the vat tansactions list
To print the transactions with Vat or doing Vat calculation use the function Banana.document.journal().
// use the data from the transactions and only normal accounts (exclude cost centers) var journal = Banana.document.journal(Banana.document.ORIGINTYPE_CURRENT, Banana.document.ACCOUNTTYPE_NORMAL); for (i = 0; i < journal.rowCount; i++) { var tRow = journal.row(i); // we get the vat values var vatTaxable = tRow.value('JVatTaxable'); var vatAmount = tRow.value('VatAmount'); var vatPosted = tRow.value('VatPosted'); }
Within the samples apps repository you find two examples of transactions list:
- List of transactions with vatTaxable, vatAmount and vatPosted.
- List of transctions with vatTaxable, vatAmount and vatPosted also converted in the transaction's currency.