on GitHub" data-tooltip-id=":Rblcldb:">v2.6·
In this document, you’ll learn about tax lines in a cart and how to retrieve tax lines with the Tax Module.
A tax line indicates the tax rate of a line item or a shipping method. The LineItemTaxLine data model represents a line item’s tax line, and the ShippingMethodTaxLine data model represents a shipping method’s tax line.
By default, the tax amount is calculated by taking the tax rate from the line item or shipping method’s amount, and then adding them to the item/method’s subtotal.
However, line items and shipping methods have an is_tax_inclusive
property that, when enabled, indicates that the item or method’s price already includes taxes.
So, instead of calculating the tax rate and adding it to the item/method’s subtotal, it’s calculated as part of the subtotal.
For example, if a line item's amount is 5000
, the tax rate is 10
, and tax inclusivity is enabled, the tax amount is 10% of 5000
, which is 500
, making the unit price of the line item 4500
.
When using the Cart and Tax modules together, you can use the getTaxLines
method of the Tax Module’s main service. It retrieves the tax lines for a cart’s line items and shipping methods.
1// retrieve the cart2const cart = await cartModuleService.retrieveCart("cart_123", {3 relations: [4 "items.tax_lines",5 "shipping_methods.tax_lines",6 "shipping_address",7 ],8})9 10// retrieve the tax lines11const taxLines = await taxModuleService.getTaxLines(12 [13 ...(cart.items as TaxableItemDTO[]),14 ...(cart.shipping_methods as TaxableShippingDTO[]),15 ],16 {17 address: {18 ...cart.shipping_address,19 country_code:20 cart.shipping_address.country_code || "us",21 },22 }23)
Then, use the returned tax lines to set the line items and shipping methods’ tax lines: