Promotions and Taxation

When creating promotions, you need to consider the impact of tax calculations. A promotion discounts is represented in a LineItemCtnr as a price adjustment. A price adjustment represents the (negative) amount to be subtracted from the product, order, or shipping price.

These are some examples:

This discount... Would be represented as a...
10% order discount on an order with a merchandise value of $100 -$10 price adjustment at the order-level
$2 off discount on products -$2 price adjustment at the product-level
Free shipping on a shipment with shipping cost $2.99 -$2.99 price adjustment at the shipment-level

Price adjustments are also included in the tax calculation. The discount amount either already contains the tax (net taxation) or the tax is added to this amount (gross taxation). Tax rates and tax amounts are stored with the price adjustment. See Managing Site Taxes.

Tax rates are determined as follows:

Promotion Class Tax
Product

Uses the tax rate of the related product line item.

For example, if a tax rate of 5% is set for the product line item, the same tax rate of 5% is used for the price adjustment.

Order

Calculates a mixed tax rate from all product line items in the cart.

For example, If the merchandise gross value is $105, and the merchandise net value is $100, the tax rate set for all order-level price adjustments is (105 / 100) - 1 = 5%.

Shipping

Uses the tax rate of the standard shipping line item in the shipment.

For example, if a tax rate of 3% is set for the standard shipping line item, the same tax rate will be used for the shipping price adjustment.

Note: These rules are implemented in CalculateCart.ds (see SiteGenesis Application for Promotions), and can be customized to meet your specific business requirements.

If you need an alternative way to calculate tax for line items in an order, especially if your back-end systems can't handle order-level discounts, see Line Item Tax Basis.

For order promotions, Salesforce B2C Commerce applies discounts to each order as a whole, and doesn't prorate order discounts. However, B2C Commerce does provide an API that Calculates the Prorated Values in-memory and returns them to the caller.