***

title: "ProductVariantPriceSelectionStrategy"
generated: true
---------------

## ProductVariantPriceSelectionStrategy

<GenerationInfo sourceFile="packages/core/src/config/catalog/product-variant-price-selection-strategy.ts" sourceLine="21" packageName="@vendure/core" since="2.0.0" />

The strategy for selecting the price for a ProductVariant in a given Channel.

:::info

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

:::

```ts title="Signature"
interface ProductVariantPriceSelectionStrategy extends InjectableStrategy {
    selectPrice(
        ctx: RequestContext,
        prices: ProductVariantPrice[],
    ): ProductVariantPrice | undefined | Promise<ProductVariantPrice | undefined>;
}
```

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

<div className="members-wrapper">

### selectPrice

\<MemberInfo kind="method" type={`(ctx: <a href='/current/core/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, prices: <a href='/current/core/reference/typescript-api/entities/product-variant-price#productvariantprice'>ProductVariantPrice</a>[]) => <a href='/current/core/reference/typescript-api/entities/product-variant-price#productvariantprice'>ProductVariantPrice</a> | undefined | Promise<<a href='/current/core/reference/typescript-api/entities/product-variant-price#productvariantprice'>ProductVariantPrice</a> | undefined>`}   />

</div>
## DefaultProductVariantPriceSelectionStrategy

<GenerationInfo sourceFile="packages/core/src/config/catalog/default-product-variant-price-selection-strategy.ts" sourceLine="17" packageName="@vendure/core" since="2.0.0" />

The default strategy for selecting the price for a ProductVariant in a given Channel. It
first filters all available prices to those which are in the current Channel, and then
selects the first price which matches the current currency.

```ts title="Signature"
class DefaultProductVariantPriceSelectionStrategy implements ProductVariantPriceSelectionStrategy {
    selectPrice(ctx: RequestContext, prices: ProductVariantPrice[]) => ;
}
```

* Implements: [`ProductVariantPriceSelectionStrategy`](/current/core/reference/typescript-api/configuration/product-variant-price-selection-strategy#productvariantpriceselectionstrategy)

<div className="members-wrapper">

### selectPrice

\<MemberInfo kind="method" type={`(ctx: <a href='/current/core/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, prices: <a href='/current/core/reference/typescript-api/entities/product-variant-price#productvariantprice'>ProductVariantPrice</a>[]) => `}   />

</div>
