Stripe | Financial Infrastructure to Grow Your Revenue

Stripe | Financial Infrastructure to Grow Your Revenue

4466 articles

Adaptive Pricing and Stripe Tax


Adaptive Pricing and Stripe Tax

Learn how tax is calculated and reported when using Adaptive Pricing.

When you use Adaptive Pricing, all tax calculation, tax reporting, and invoicing remain in your integration currency before any currency conversion. Your customer can pay in their local currency, but this doesn’t change your reporting.

Note

This guide explains how Stripe Tax handles indirect taxes (such as VAT and sales tax) with Adaptive Pricing. It doesn’t explain 1099-K reporting.

How tax is calculated with Adaptive Pricing

Adaptive Pricing converts your product prices into your customer’s local currency at checkout. Stripe Tax calculates tax on the original price you set, not the converted amount. Here’s the flow:

  1. You create a product with a price in a specific integration currency (for example, 100 USD).
  2. Stripe Tax calculates tax on the original price you set (100 USD).
  3. The price and tax amount are converted to the customer’s local currency for display purposes.
  4. The customer can pay in their local currency, or in your original integration currency .

For indirect tax purposes, Stripe Tax treats the conversion fee as a non-taxable currency conversion cost, so it isn’t included in the taxable amount.

Examples

The following examples show how tax is calculated for a product priced at 100 USD by a business based in New York, purchased by a customer in Germany who sees the price in EUR through Adaptive Pricing. All examples use a conversion rate of 1 USD to 0.9476 EUR for amounts presented to the customer (Stripe’s conversion fee is included in this rate) and an exchange rate of 1 USD to 0.92 EUR for tax filing calculations.

Taxed at the customer’s destination

When the sale is taxable at the customer’s destination (Germany in this example), the filing currency in the tax reports is determined by the destination jurisdiction. In this example, German VAT at 19% applies and the filing currency in the tax reports is EUR.

In this example, the USD Price has tax-exclusive behavior. German VAT at 19% is added on top of the product price.

Value
Product price100 USD
Presentment price (via Adaptive Pricing)94.76 EUR (100 x 0.9476)
Taxable amount100 USD
VAT rate (Germany)19%
Tax amount19 USD
Tax in presentment currency17.90 EUR (19 x 0.9476)
Total customer pays112.66 EUR (product + tax in EUR)
Tax report, currencyUSD
Tax report, tax amount19 USD
Tax report, filing currencyEUR
Filing tax amount17.48 EUR (19 x 0.92)

In both cases, the tax report records the tax amount in USD (the currency on the Price) with a filing currency in the tax reports of EUR (the destination jurisdiction’s currency).

The filing tax amount in EUR differs from the tax amount expressed in the presentment currency, even though both are in EUR. For VAT reporting, the USD tax amount must be converted to the destination currency using exchange rates from the local tax authority or the European Central Bank (not the rate used for customer presentment).

Taxed at the business’s location

When the sale is taxable at the business’s location (New York in this example), the filing currency in the tax reports matches the business’s jurisdiction. In this example, New York sales tax at 4% applies and the filing currency in the tax reports is USD, the same as the currency on the Price. The customer still sees the price in EUR through Adaptive Pricing, but the filing currency and filing amount don’t involve a currency conversion.

In this example, the USD Price has tax-exclusive behavior. New York sales tax at 4% is added on top of the product price.

Value
Product price100 USD
Presentment price (with Adaptive Pricing)94.76 EUR (100 x 0.9476)
Taxable amount100 USD
Sales tax rate (New York)4%
Tax amount4 USD
Tax in presentment currency3.79 EUR (4 x 0.9476)
Total customer pays98.55 EUR (product + tax in EUR)
Tax report, currencyUSD
Tax report, tax amount4 USD
Tax report, filing currencyUSD
Filing tax amount4 USD

In both cases, the filing currency in the tax reports is USD (the same as the currency on the Price) because the tax is filed in the business’s jurisdiction. No currency conversion is needed for filing, even though the customer paid in EUR.

Tax assessment on the price

Tax is assessed on the price you set for your product because:

  • Your product’s price represents the actual sale price of the goods or services.
  • Tax liability is determined when the transaction is created, not when payment is received.
  • For indirect tax purposes, Stripe Tax treats the conversion fee as a non-taxable currency conversion cost. It compensates for exchange rate fluctuations and isn’t part of the value of the goods or services sold.

Refunds

When you issue a refund for a transaction that used Adaptive Pricing, Stripe Tax calculates the tax reversal based on the Price currency and amount, not the presentment amount the customer paid.

Reconciliation considerations

Because tax is calculated and reported in the currency on the Price, keep the following in mind when reconciling your books:

  • Tax reports show amounts in the currency on the Price . If your product is priced in USD, tax amounts appear in USD.
  • If you need to reconcile against cash received in the presentment currency, account for the currency conversion between the reported tax amount and the amount collected.
  • At scale, small rounding differences can accumulate between the converted tax amount and the amount collected in the presentment currency. These rounding differences are a normal result of currency conversion.

Tax-inclusive and tax-exclusive behavior

If you set the default tax behavior setting to Automatic ( inferred_by_currency in the API), tax calculation is tax-exclusive or tax-inclusive based on your integration currency (the currency of your original Price). This ensures that your revenue margins don’t change based on the currency your customer pays in.

The table below demonstrates this behavior, assuming a 10% tax rate:

PriceTax behavior inferredPrice after taxAdaptive Pricing currencyCustomer pays
10 USDTax-exclusive11 USDUSD11 USD
10 USDTax-exclusive11 USDEUR11 USD converted to EUR
10 EURTax-inclusive10 EUREUR10 EUR
10 EURTax-inclusive10 EURUSD10 EUR converted to USD

If you set defaults.tax_behavior as inferred_by_currency, it applies based on the currency on the Price, not the presentment currency. For example, if your price is in USD and you use the inferred setting, the behavior is determined by your USD configuration, even if the customer pays in EUR.

See also

Last verified 2026-09-24

Is this helpful?