Skip to main content

ShippingCalculator

ShippingCalculator

The ShippingCalculator is used by a ShippingMethod to calculate the price of shipping on a given Order.

Example

const flatRateCalculator = new ShippingCalculator({
code: 'flat-rate-calculator',
description: [{ languageCode: LanguageCode.en, value: 'Default Flat-Rate Shipping Calculator' }],
args: {
rate: {
type: 'int',
ui: { component: 'currency-form-input' },
},
taxRate: {
type: 'int',
ui: { component: 'number-form-input', suffix: '%' },
},
},
calculate: (ctx, order, args) => {
return {
price: args.rate,
taxRate: args.taxRate,
priceIncludesTax: ctx.channel.pricesIncludeTax,
};
},
});
Signature
class ShippingCalculator<T extends ConfigArgs = ConfigArgs> extends ConfigurableOperationDef<T> {
constructor(config: ShippingCalculatorConfig<T>)
}

constructor

method
(config: ShippingCalculatorConfig<T>) => ShippingCalculator

ShippingCalculationResult

The return value of the CalculateShippingFn.

Signature
interface ShippingCalculationResult {
price: number;
priceIncludesTax: boolean;
taxRate: number;
metadata?: Record<string, any>;
}

price

property
number

The shipping price without any taxes.

priceIncludesTax

property
boolean

Whether or not the given price already includes taxes.

taxRate

property
number

The tax rate applied to the shipping price.

metadata

property
Record<string, any>

Arbitrary metadata may be returned from the calculation function. This can be used e.g. to return data on estimated delivery times or any other data which may be needed in the storefront application when listing eligible shipping methods.

CalculateShippingFn

A function which implements the specific shipping calculation logic. It takes an Order and an arguments object and should return the shipping price as an integer in cents.

Should return a ShippingCalculationResult object.

Signature
type CalculateShippingFn<T extends ConfigArgs> = (
ctx: RequestContext,
order: Order,
args: ConfigArgValues<T>,
method: ShippingMethod,
) => CalculateShippingFnResult