TaxCloud PoS
by Sodexis https://taxcloud.com/integrations/odoo/ , TaxCloud https://taxcloud.com/integrations/odoo/| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Point of Sale (point_of_sale)
• Discuss (mail) • Inventory (stock) • Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 2881 |
| Technical Name |
taxcloud_pos_tc |
| License | OPL-1 |
| Website | https://taxcloud.com/integrations/odoo/ |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Point of Sale (point_of_sale)
• Discuss (mail) • Inventory (stock) • Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 2881 |
| Technical Name |
taxcloud_pos_tc |
| License | OPL-1 |
| Website | https://taxcloud.com/integrations/odoo/ |
TaxCloud PoS
Description
This is the official TaxCloud integration for Odoo Point of Sale (POS) that enables real-time U.S. sales tax calculation for POS orders and which is fully compatible with multi-POS store environments by seamlessly connecting Odoo with the TaxCloud API.
Enhanced POS flexibility: The PoS Contact setup has been transitioned from the Warehouse level to the POS Store level. This change enhances flexibility and ensures more precise management of PoS transactions.
Configuration
Go to Point of Sale - -> Configuration - -> Settings - -> Accounting -
-> TaxCloud PoS Integration.
When this boolean “TaxCloud PoS Integration” is enabled,
POS orders created using the TaxCloud fiscal position will have their transactions sent to TaxCloud, applicable only for the specific POS store where the boolean is
activated.

Go to Point of Sale - -> Configuration - -> Settings - -> Accounting- -> Flexible Taxes.
In the standard Odoo configuration, there is an option to set flexible
taxes for each POS session using the “Flexible
Taxes” boolean under POS settings.
Assign the TaxCloud fiscal position as the default
(e.g., Automatic Tax Mapping (TaxCloud), which will be automatically applied to any POS order
created during an active session. Such orders must be transmitted to TaxCloud for tax
calculation.

We need to make sure that the “Use TaxCloud API” boolean is enabled in the TaxCloud fiscal position in order to send the transactions to TaxCloud.

POS orders use the TIC (Taxability Information Code) set on the product or product category to compute tax via TaxCloud, following the same logic as the regular sales workflow.
"If we set a TaxCloud Category on a product and another on its Product Category, Odoo only considers the TaxCloud Category found on the product itself.
If the TaxCloud Category is not set on a product, then Odoo considers the TaxCloud category set on its Product Category.
If both the TaxCloud Category on a product and its Product Category are not set, Odoo considers the Default Category set under Accounting Settings.
A TaxCloud Category set on a parent product category does not apply to its child product categories. For example, if we set the TaxCloud Category on the All Product Category, it is not applied to the All/Sales Product Category.”
We need to set the TaxCloud category for the Shipping Products and Down Payment Products to get the correct tax computed.
When a product-specific exemption is applied, such as assigning the "Gift Card" TIC to a product, taxes will not be computed for that product during the POS transaction.




A new “POS Contact” field has been added to the POS Store model. This field is intended to define a default generic customer to be used in Point of Sale (POS) operations when no customer is explicitly selected.
When a POS Store is
configured, a generic contact with the same address as the warehouse can be automatically
created and assigned as the POS Contact.
"If we set a PoS Contact on the PoS Store and Warehouse, Odoo only
considers the PoS Contact found on the PoS Store. If the PoS Contact is not set on the PoS Store, then Odoo considers the PoS
Contact set on the Warehouse”.
Go to Point of Sale - -> Configuration - -> Settings - -> Inventory -
-> Allow Ship Later. When enabled, Odoo requires the customer on the POS order, and hence the
Ship From should always be the customer
address.
Go to Point of Sale - -> Dashboard. Open a new session in the POS store.
When a customer is selected
or the Payment button is clicked in the POS interface, the applicable tax is automatically
fetched from TaxCloud. The total tax amount is then displayed in the POS view. Additionally, as mentioned earlier, as we enabled “Flexible Taxes”, the TaxCloud fiscal
position configured for the session is automatically applied to the POS order.
When the TaxCloud fiscal position is used, the Invoice
button in the POS configuration is enabled by default and set to read-only. This
ensures that once payment is completed, the transaction can be properly captured and recorded in
TaxCloud.
Additionally, the printed receipt will clearly include the calculated tax
value.
During POS order processing, if a customer is not selected manually, the system
will fall back to using the “POS Contact” defined on the POS Store associated with the order. If no POS Contact is set
anywhere, a prompt will appear requiring the user to select a customer
before proceeding.
When a customer with a valid tax exemption
is selected, no taxes will be computed for the POS order, as shown below.
When a POS order using the TaxCloud fiscal position is processed in
offline mode, no tax will be computed as it
has limited functionality; hence, a warning message will be displayed when selecting the
customer or upon clicking the Payment button.
Document Version: 1.0
For additional information or inquiries regarding TaxCloud, feel free to reach
out to us at Sodexis <📧taxcloud@sodexis.com>
or visit our website at <🌐sodexis.com/taxcloud>
This module is maintained by Sodexis.

The Odoo base boolean “Allow Ship Later” separates the sale
confirmation from the delivery operation, allowing the POS to register the sale immediately
while scheduling the shipment for a later time.
When
"Allow Ship Later" is disabled, it uses
the Ship From as the warehouse address
defined on the operation type for the POS session, and Ship
To is the customer or, if missing, the POS Store’s
POS Contact.

Functionality

In the
example below, two products with different TIC codes are added to the POS order, and taxes are computed accordingly.










Credits
Contributors
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module