> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tax Inclusive Pricing

> Show final, tax-inclusive prices upfront. Dodo Payments calculates tax by location and breaks it out at checkout and on invoices.

## What Is Tax Inclusive Pricing?

Tax Inclusive Pricing lets you embed applicable taxes directly in your displayed product price. Customers see one final amount upfront for a more transparent, conversion-friendly experience. At checkout, Dodo Payments calculates the tax-exclusive portion and tax amount from the displayed price based on customer location, and clearly breaks them out on the invoice.

<Info>
  Final tax still varies by customer location and tax category. Checkout and invoices show the calculated tax portion derived from the displayed price.
</Info>

## Key Benefits

* **Clarity for customers**: One final price displayed upfront
* **Compliance by region**: Tax is calculated per location and broken out
* **Accurate invoicing**: Invoices show net amount and tax derived from price
* **Conversion friendly**: Reduced surprises at checkout

## Product Setup

Create or edit a product in your dashboard, then enable tax-inclusive pricing under pricing settings.

#### Pricing

* **Price** (required): Base price that is displayed to the customer.
* **Tax Inclusive Pricing**: Toggle on to treat the displayed price as tax inclusive. Dodo Payments will compute the net (pre-tax) amount and tax portion at checkout based on customer location and tax category.

<Warning>
  Only future purchases reflect updated tax-inclusive settings. Existing purchases and active subscriptions are not retroactively changed.
</Warning>

<Tip>
  Use consistent product copy such as "Tax inclusive" so customers understand totals at a glance.
</Tip>

## API Management

<AccordionGroup>
  <Accordion title="Create products (tax inclusive)">
    Use `POST /products` to create products with `price.tax_inclusive` set to `true`. The flag lives on the price object, not the product.

    <Card title="API Reference" icon="code" href="/api-reference/products/post-products">
      Create product via API
    </Card>
  </Accordion>

  <Accordion title="Update products">
    Use `PATCH /products/{id}` to toggle `price.tax_inclusive` on existing products.

    <Card title="API Reference" icon="code" href="/api-reference/products/patch-products">
      Update product via API
    </Card>
  </Accordion>

  <Accordion title="Checkout Sessions">
    Use `POST /checkouts` to sell products marked as tax inclusive. The displayed price remains the same; checkout derives net amount and tax.

    <Card title="API Reference" icon="code" href="/api-reference/checkout-sessions/create">
      Create checkout session
    </Card>
  </Accordion>

  <Accordion title="Refunds (tax handling)">
    Use `POST /refunds` to issue refunds. For partial, per-item refunds you can specify whether tax is included using the `tax_inclusive` flag on each entry of the `items` array (defaults to `true`). Omit `items` to refund the payment in full.

    <Card title="API Reference" icon="code" href="/api-reference/refunds/post-refunds">
      Create a refund
    </Card>
  </Accordion>
</AccordionGroup>

## Integration Examples

### Create a Product with Tax-Inclusive Pricing

```typescript theme={null}
const product = await client.products.create({
  name: 'Pro Plan',
  description: 'All features included',
  tax_category: 'saas',
  price: {
    type: 'one_time_price',
    currency: 'USD',
    price: 10000,
    discount_bps: 0,
    purchasing_power_parity: false,
    tax_inclusive: true
  }
});
```

### Update an Existing Product to Toggle Tax Inclusive

```typescript theme={null}
// `price` is a discriminated union, so send the complete price object,
// not just the field you want to change.
await client.products.update(product.product_id, {
  price: {
    type: 'one_time_price',
    currency: 'USD',
    price: 10000,
    discount_bps: 0,
    purchasing_power_parity: false,
    tax_inclusive: true
  }
});
```

## Best Practices

* **Choose the right tax category** to ensure correct calculation per region.
* **Communicate totals** clearly with "Tax Inclusive" labels in product copy.
* **Test in Test Mode** to validate.

## Related

<CardGroup cols={2}>
  <Card title="Purchasing Power Parity" icon="money-bill-trend-up" href="/features/purchasing-power-parity">
    Charge less in price-sensitive countries automatically.
  </Card>

  <Card title="Charm Pricing" icon="tag" href="/features/charm-pricing">
    Round converted prices to clean, appealing endings.
  </Card>

  <Card title="Products" icon="dollar-sign" href="/features/products">
    Manage pricing options across products.
  </Card>

  <Card title="Subscriptions" icon="repeat" href="/features/subscription">
    Configure recurring products with advanced settings.
  </Card>

  <Card title="Discount Codes" icon="percent" href="/features/discount-codes">
    Offer promotions while keeping invoice clarity.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.