Tax-Inclusive Pricing

In this document, you’ll learn about tax-inclusive pricing and how it's used when calculating prices.

What is Tax-Inclusive Pricing?#

A tax-inclusive price is a price of a resource that includes taxes. Medusa calculates the tax amount from the price rather than adds the amount to it.

For example, if a product’s price is $50, the tax rate is 2%, and tax-inclusive pricing is enabled, then the product's price is $49, and the applied tax amount is $1.


How is Tax-Inclusive Pricing Set?#

The PricePreference data model holds the tax-inclusive setting for a context. It has two properties that indicate the context:

  • attribute: The name of the attribute to compare against. For example, region_id or currency_code.
  • value: The attribute’s value. For example, reg_123 or usd.
NoteOnly region_id and currency_code are supported as an attribute at the moment.

The is_tax_inclusive property indicates whether tax-inclusivity is enabled in the specified context.

For example:

Code
1{2  "attribute": "currency_code",3  "value": "USD",4  "is_tax_inclusive": true,5}

In this example, tax-inclusivity is enabled for the USD currency code.


Tax-Inclusive Pricing in Price Calculation#

Tax Context#

As mentioned in the Price Calculation documentation, The calculatePrices method accepts as a parameter a calculation context.

To get accurate tax results, pass the region_id and / or currency_code in the calculation context.

Returned Tax Properties#

The calculatePrices method returns two properties related to tax-inclusivity:

TipLearn more about the returned properties in this guide.
  • is_calculated_price_tax_inclusive: Whether the selected calculated_price is tax-inclusive.
  • is_original_price_tax_inclusive : Whether the selected original_price is tax-inclusive.

A price is considered tax-inclusive if:

  1. It belongs to the region or currency code specified in the calculation context;
  2. and the region or currency code has a price preference with is_tax_inclusive enabled.

Tax Context Precedence#

A region’s price preference’s is_tax_inclusive's value takes higher precedence in determining whether a price is tax-inclusive if:

  • both the region_id and currency_code are provided in the calculation context;
  • the selected price belongs to the region;
  • and the region has a price preference
Was this page helpful?
Edit this page