Back to Medusa

{metadata.title}

www/apps/resources/app/commerce-modules/pricing/tax-inclusive-pricing/page.mdx

2.14.22.9 KB
Original Source

export const metadata = { title: Tax-Inclusive Pricing, }

{metadata.title}

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.
<Note>

Only region_id and currency_code are supported as an attribute at the moment.

</Note>

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

For example:

json
{
  "attribute": "currency_code",
  "value": "USD",
  "is_tax_inclusive": true,
}

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:

<Note title="Tip">

Learn more about the returned properties in this guide.

</Note>
  • 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

Tax-Inclusive Pricing with Promotions

When you enable tax-inclusive prices for regions or currencies, this can impact how promotions are applied to the cart. So, it's recommended to enable tax-inclusiveness for promotions as well.

Learn more in the Tax-Inclusive Promotions guide.