[IMP] TaxCloud: updated doc
Changed out-of-date function and updated doc/changed grammar. Forward up to 16 (16 exluded)
task id: 2909436
closes odoo/documentation#2908
X-original-commit: 7cf109db1e
Signed-off-by: Platteau Xavier (xpl) <xpl@odoo.com>
@ -1,139 +1,151 @@
|
|||||||
=========================================================
|
====================
|
||||||
Get correct tax rates in the United States using TaxCloud
|
TaxCloud integration
|
||||||
=========================================================
|
|
||||||
|
|
||||||
The **TaxCloud** integration allows you to correctly calculate the sales
|
|
||||||
tax for every address in the United States and keeps track of which products
|
|
||||||
are exempt from sales tax and in which states each exemption applies.
|
|
||||||
TaxCloud calculates sales tax in real-time for every state, city, and
|
|
||||||
special jurisdiction in the United States.
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
=============
|
|
||||||
|
|
||||||
In TaxCloud
|
|
||||||
-----------
|
|
||||||
* Create a free account on `TaxCloud
|
|
||||||
<https://taxcloud.com/#register>`__ website.
|
|
||||||
* Register your Odoo website on TaxCloud to get an *API ID* and an *API Key*.
|
|
||||||
|
|
||||||
.. image:: taxcloud/taxcloud01.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
* In Settings on TaxCloud, click *Locations* to enter the location of your Office(s) & Warehouse(s).
|
|
||||||
* In Settings on TaxCloud, click *Manage Tax States* to verify the states where you collect sales tax.
|
|
||||||
|
|
||||||
In Odoo
|
|
||||||
-------
|
|
||||||
* Go to :menuselection:`Invoicing / Accounting --> Configuration --> Settings`
|
|
||||||
and check *TaxCloud - Compute tax rates based on U.S. ZIP codes* (note: actually uses complete street address).
|
|
||||||
* Enter your TaxCloud credentials.
|
|
||||||
* Click SAVE to store your credentials.
|
|
||||||
|
|
||||||
.. image:: taxcloud/taxcloud02.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
* Click the Refresh Icon next to *Default Category* to import the TIC product categories
|
|
||||||
from TaxCloud (Taxability Information Codes). Some categories may imply specific rates or attract product/service type exemptions.
|
|
||||||
* Select your default *TIC Code*. This will apply to any new
|
|
||||||
product created.
|
|
||||||
* Set a specific TaxCloud TIC Category on the *General Information* tab of the Product,
|
|
||||||
or on the Product Category.
|
|
||||||
* Make sure your company address is complete (including the state
|
|
||||||
and the zip code). Go to :menuselection:`Settings --> Users & Companies --> Companies`
|
|
||||||
to open and edit your Company record.
|
|
||||||
|
|
||||||
Automatically post taxes to the correct Tax Payable account
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
* For each one of your companies that uses TaxCloud, it might be necessary to create a
|
|
||||||
**User-Defined Default** so that the new taxes generated by the TaxCloud integration are created
|
|
||||||
with the correct Tax Payable account:
|
|
||||||
|
|
||||||
.. warning::
|
|
||||||
A User-Defined Default impacts all records at creation. It means that **every** new tax will be
|
|
||||||
set up to record income in the specified Tax Payable account, unless the tax is manually edited
|
|
||||||
to specify a different income account (or there exists another User-Defined Default that takes
|
|
||||||
precedence).
|
|
||||||
|
|
||||||
* In :menuselection:`Accounting --> Configuration --> Chart of Accounts`, select the Tax Payable
|
|
||||||
account for the company. Take note of the account's ``id`` in the URL string.
|
|
||||||
|
|
||||||
.. image:: taxcloud/user-default-find-account-id.png
|
|
||||||
:alt: The account's ID can be found in the URL string as 'id=...'.
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
* Activate the :ref:`developer mode <developer-mode>`, then go to
|
|
||||||
:menuselection:`Settings --> Technical --> Actions --> User-Defined Defaults`, and
|
|
||||||
click on *Create*.
|
|
||||||
|
|
||||||
* Click on *Field*, then, in the drop-down menu, on *Search More*.
|
|
||||||
|
|
||||||
.. image:: taxcloud/user-default-search-field.png
|
|
||||||
:alt: Click on 'Search More' in the 'Field' drop-down menu.
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
* In the pop-up's search box, filter on the model ``tax.repartition.line`` and the field ``account``.
|
|
||||||
Select the ``account`` field of the ``tax.repartition.line`` model.
|
|
||||||
|
|
||||||
.. image:: taxcloud/user-default-select-field.png
|
|
||||||
:alt: Select the 'account' field of the 'tax.repartition.line' model.
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
* In the **Default Value** field, enter the ID of the company's Tax Payable account.
|
|
||||||
Select the company for which this configuration should apply in the *Company* field.
|
|
||||||
Click *Save*.
|
|
||||||
|
|
||||||
.. image:: taxcloud/user-default-enter-default-account-id.png
|
|
||||||
:alt: Enter the ID of the company's Tax Payable account.
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
|
|
||||||
How it works
|
|
||||||
============
|
|
||||||
|
|
||||||
Salestax is calculated in Odoo based on fiscal positions
|
|
||||||
(see :doc:`fiscal_positions`).
|
|
||||||
A Fiscal Position for the United States is created when installing *TaxCloud*.
|
|
||||||
Everything works out-of-the-box.
|
|
||||||
|
|
||||||
You can configure Odoo to automatically detect which Customers should use this fiscal
|
|
||||||
position. Go to :menuselection:`Accounting --> Configuration --> Fiscal Positions`
|
|
||||||
to open and edit the record.
|
|
||||||
|
|
||||||
.. image:: taxcloud/taxcloud03.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Now, this fiscal position is automatically set on any sales order, web order, or invoice
|
|
||||||
when the customer country is *United States*. This triggers the
|
|
||||||
automated tax computation.
|
|
||||||
|
|
||||||
.. image:: taxcloud/taxcloud04.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Add your product(s). You have two options to get Sales Tax on the Order. You can confirm it,
|
|
||||||
or you can save it and from the *Action* Menu choose **Update Taxes with TaxCloud**.
|
|
||||||
|
|
||||||
|
|
||||||
Coupons & Promotions
|
|
||||||
====================
|
====================
|
||||||
|
|
||||||
If you use the Coupon or Promotion Programs, the integration with Taxcloud might seem a bit odd.
|
TaxCloud calculates the sales tax rate in real time for every state, city, and special jurisdiction
|
||||||
|
in the United States. It keeps track of which products are exempt from sales tax and in which states
|
||||||
|
each exemption applies.
|
||||||
|
|
||||||
The problem lies with the fact that Taxcloud does not accept lines with negative amounts as part of
|
TaxCloud registration
|
||||||
the tax computation. This means that the amount of the lines added by the promotion program must be
|
=====================
|
||||||
deduced from the total of the lines it impacts. This means, amongst other complications, that orders
|
|
||||||
that use coupons or promotions with a Taxcloud fiscal position **must** be invoiced completely -
|
|
||||||
you cannot create invoices for partial deliveries, etc.
|
|
||||||
|
|
||||||
Another specific oddity is possible in the UI: imagine that you sell a product from the Taxcloud
|
Register an account on `TaxCloud.com <https://taxcloud.com/register>`_ and complete the setup.
|
||||||
category *[20110] Computers* and that you have a promotion program in place that provides a 50%
|
Once you go live, get the :guilabel:`TaxCloud API Keys` by clicking on :guilabel:`Stores`, then
|
||||||
discount on this product. If the tax rate for this particular product is 7%, the tax rate that will
|
:guilabel:`Get Details`.
|
||||||
be computed from the Taxcloud integration will display 3.5%. This happens because the discount is
|
|
||||||
included in the price that is sent to Taxcloud, but in Odoo this discount is in another line
|
.. image:: taxcloud/taxcloud-api-keys.png
|
||||||
entirely. At the end of the day, your tax computation will be correct (since a 3.5% tax on the full
|
:align: center
|
||||||
price is the equivalent of a 7% tax on half the price), but this might be surprising from a user
|
:alt: Example of a store's TaxCloud API Keys
|
||||||
point of view.
|
|
||||||
|
Enable TaxCloud
|
||||||
|
===============
|
||||||
|
|
||||||
|
#. Go to :menuselection:`Accounting Dashboard --> Configuration --> Settings` and in the
|
||||||
|
:guilabel:`Taxes` section enable :guilabel:`TaxCloud`.
|
||||||
|
#. Add the store's :guilabel:`Login ID` under :guilabel:`API ID` and the store's :guilabel:`Key`
|
||||||
|
under :guilabel:`API KEY`. Click on :guilabel:`Save`.
|
||||||
|
#. Click the :guilabel:`Refresh` button (:guilabel:`🗘`) next to :guilabel:`Default Category` to
|
||||||
|
import the TIC :dfn:`Taxability Information Codes` product categories from TaxCloud. Some
|
||||||
|
categories may imply specific tax rates or exemptions.
|
||||||
|
#. Select a :guilabel:`Default Category` and :guilabel:`Save`. The :guilabel:`Default Category` is
|
||||||
|
applied when no :guilabel:`TaxCloud Category` is set on your products or product categories,
|
||||||
|
or when no product is found on an order/invoice.
|
||||||
|
|
||||||
|
.. image:: taxcloud/taxcloud-settings.png
|
||||||
|
:align: center
|
||||||
|
:alt: Filling in TaxCloud API Keys in Odoo
|
||||||
|
|
||||||
|
Set TaxCloud categories on products
|
||||||
|
===================================
|
||||||
|
|
||||||
|
If you need to use more than one TIC category (i.e., the :guilabel:`Default Category`), go to the
|
||||||
|
product's :guilabel:`General Information` tab and select a :guilabel:`TaxCloud Category`.
|
||||||
|
|
||||||
|
If you want to configure multiple products simultaneously, ensure they share the same
|
||||||
|
:guilabel:`Product Category` and click on the external link button (:guilabel:`🡕`) to set a
|
||||||
|
:guilabel:`TaxCloud Category` on the :guilabel:`Product Category` instead.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you set a :guilabel:`TaxCloud Category` on a product and another on its :guilabel:`Product
|
||||||
|
Category`, Odoo only considers the :guilabel:`TaxCloud Category` found on the product itself.
|
||||||
|
|
||||||
|
A :guilabel:`TaxCloud Category` set on a **parent product category** does not apply to its
|
||||||
|
**child product categories**. For example, if you set :guilabel:`TaxCloud Category` on the *All*
|
||||||
|
:guilabel:`Product Category`, it is not applied to the *All/Sales* :guilabel:`Product Category`.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
Make sure your company address is complete, including the state and the ZIP code. Go to
|
||||||
|
:menuselection:`Settings --> Companies: Update Info` to open and edit your company address.
|
||||||
|
|
||||||
|
Automatically post taxes in the correct tax payable account
|
||||||
|
===========================================================
|
||||||
|
|
||||||
|
To make sure the new taxes generated by the TaxCloud integration are created with the correct
|
||||||
|
**Tax Payable** account, create a **user-defined default**. This process should be repeated for each
|
||||||
|
one of your companies that uses TaxCloud.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
A user-defined default impacts all records at creation. It means that **every** new tax is
|
||||||
|
set up to record income in the specified Tax Payable account unless the tax is manually edited to
|
||||||
|
specify a different income account (or if another user-defined default takes precedence).
|
||||||
|
|
||||||
|
To do so, go to :menuselection:`Accounting Dashboard --> Configuration --> Accounting: Chart of
|
||||||
|
Accounts`, find the company's :guilabel:`Tax Payable` account, and click on :guilabel:`Setup`. Take
|
||||||
|
note of the number after `id=` in the URL string; it is the **Tax Payable account ID** and will
|
||||||
|
be used later.
|
||||||
|
|
||||||
|
.. image:: taxcloud/tax-payable-id.png
|
||||||
|
:align: center
|
||||||
|
:alt: Example of Tax Payable account id in the URL string
|
||||||
|
|
||||||
|
Activate the :ref:`developer mode <developer-mode>`, then go to :menuselection:`Settings -->
|
||||||
|
Technical --> Actions: User-defined Defaults` and click on :guilabel:`Create`.
|
||||||
|
|
||||||
|
Click on :guilabel:`Field` drop-down menu and then on :guilabel:`Search More...`.
|
||||||
|
|
||||||
|
.. image:: taxcloud/user-defaults-search-more.png
|
||||||
|
:alt: User-defined Defaults Field search
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Use the search bar to filter for the :guilabel:`Tax Repartition Line` model, and use it a second
|
||||||
|
time to filter for the :guilabel:`Account` field. Select the line with :guilabel:`Tax Repartition
|
||||||
|
Line` under the :guilabel:`Model` column.
|
||||||
|
|
||||||
|
.. image:: taxcloud/user-defaults-search-filters.png
|
||||||
|
:alt: Searching for the Tax Repartition Line model and Account field
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Once you are back to the :guilabel:`User-defined Defaults` creation, enter the **Tax Payable account
|
||||||
|
ID** you took note of earlier under the :guilabel:`Default Value (JSON format)` field.
|
||||||
|
|
||||||
|
Select the company for which this configuration should apply under the :guilabel:`Company` field and
|
||||||
|
click :guilabel:`Save`.
|
||||||
|
|
||||||
|
.. image:: taxcloud/user-defaults-complete-configuration.png
|
||||||
|
:align: center
|
||||||
|
:alt: Example of a User-defined Defaults configuration
|
||||||
|
|
||||||
|
Automatically detect the fiscal position
|
||||||
|
========================================
|
||||||
|
|
||||||
|
Sales taxes are calculated in Odoo based on :doc:`fiscal positions <fiscal_positions>`. A fiscal
|
||||||
|
position for the United States is created when enabling TaxCloud.
|
||||||
|
|
||||||
|
You can configure Odoo to automatically detect to which customers the fiscal position should be
|
||||||
|
applied. To do so, go to :menuselection:`Accounting Dashboard --> Configuration --> Accounting:
|
||||||
|
Fiscal Positions` and select :guilabel:`Automatic Tax Mapping (TaxCloud)`. Enable :guilabel:`Detect
|
||||||
|
Automatically` and then :guilabel:`Save`.
|
||||||
|
|
||||||
|
.. image:: taxcloud/fiscal-position-detect.png
|
||||||
|
:align: center
|
||||||
|
:alt: Detect Automatically setting on the TaxCloud fiscal position
|
||||||
|
|
||||||
|
Now, this fiscal position is automatically set on any order or invoice if the customer country is
|
||||||
|
*United States*. This triggers the automated tax computation.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
To get the sales taxes on a sales order, confirm it or click the :guilabel:`Update Taxes` button
|
||||||
|
next to :guilabel:`Add Shipping`.
|
||||||
|
|
||||||
|
Interaction with coupons and promotions
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
If you use the **Coupon** or **Promotion Programs**, the integration with TaxCloud might behave
|
||||||
|
unexpectedly. Indeed, as TaxCloud does not accept lines with negative amounts as part of the tax
|
||||||
|
computation, the amount of the lines added by the promotion program must be deduced from the total
|
||||||
|
of the lines it impacts.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
This means, amongst other complications, that orders using coupons or promotions with a TaxCloud
|
||||||
|
fiscal position **must** be invoiced completely - you cannot create invoices for partial
|
||||||
|
deliveries, etc.
|
||||||
|
|
||||||
|
Another unexpected behavior is possible. For example, you sell a product for which you have a
|
||||||
|
promotion program that provides a 50% discount. If the product's tax rate is 7%, the tax rate
|
||||||
|
computed from the TaxCloud integration displays 3.5%. This happens because the discount is included
|
||||||
|
in the price sent to TaxCloud. However, in Odoo, the discount is on another line entirely. Still,
|
||||||
|
the tax computation is correct. Indeed, a 3.5% tax on the full price is the equivalent of a 7% tax
|
||||||
|
on half the price, but this might be unexpected from a user point of view.
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
- :doc:`fiscal_positions`
|
:doc:`fiscal_positions`
|
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 9.5 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 7.3 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 15 KiB |