***

title: "ProductVariantPriceCalculationStrategy"
generated: true
---------------

## ProductVariantPriceCalculationStrategy

<GenerationInfo sourceFile="packages/core/src/config/catalog/product-variant-price-calculation-strategy.ts" sourceLine="23" packageName="@vendure/core" />

Defines how ProductVariant are calculated based on the input price, tax zone and current request context.

:::info

This is configured via the `catalogOptions.productVariantPriceCalculationStrategy` property of
your VendureConfig.

:::

```ts title="Signature"
interface ProductVariantPriceCalculationStrategy extends InjectableStrategy {
    calculate(args: ProductVariantPriceCalculationArgs): Promise<PriceCalculationResult>;
}
```

* Extends: [`InjectableStrategy`](/current/core/reference/typescript-api/common/injectable-strategy#injectablestrategy)

<div className="members-wrapper">

### calculate

\<MemberInfo kind="method" type={`(args: <a href='/current/core/reference/typescript-api/products-stock/product-variant-price-calculation-strategy#productvariantpricecalculationargs'>ProductVariantPriceCalculationArgs</a>) => Promise<<a href='/current/core/reference/typescript-api/common/price-calculation-result#pricecalculationresult'>PriceCalculationResult</a>>`}   />

</div>
## ProductVariantPriceCalculationArgs

<GenerationInfo sourceFile="packages/core/src/config/catalog/product-variant-price-calculation-strategy.ts" sourceLine="36" packageName="@vendure/core" />

The arguments passed the `calculate` method of the configured [ProductVariantPriceCalculationStrategy](/current/core/reference/typescript-api/products-stock/product-variant-price-calculation-strategy#productvariantpricecalculationstrategy).

The `productVariant` argument was added in v2.1.0.

```ts title="Signature"
interface ProductVariantPriceCalculationArgs {
    inputPrice: number;
    productVariantPrice?: ProductVariantPrice;
    productVariant: ProductVariant;
    taxCategory: TaxCategory;
    activeTaxZone: Zone;
    ctx: RequestContext;
}
```

<div className="members-wrapper">

### inputPrice

\<MemberInfo kind="property" type={`number`}   />

### productVariantPrice

\<MemberInfo kind="property" type={`<a href='/current/core/reference/typescript-api/entities/product-variant-price#productvariantprice'>ProductVariantPrice</a>`}   />

### productVariant

\<MemberInfo kind="property" type={`<a href='/current/core/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>`}   />

### taxCategory

\<MemberInfo kind="property" type={`<a href='/current/core/reference/typescript-api/entities/tax-category#taxcategory'>TaxCategory</a>`}   />

### activeTaxZone

\<MemberInfo kind="property" type={`<a href='/current/core/reference/typescript-api/entities/zone#zone'>Zone</a>`}   />

### ctx

\<MemberInfo kind="property" type={`<a href='/current/core/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>`}   />

</div>
