Surcharges and discounts
Technical Information
Highlights
-
Rule-based creation of surcharges and discounts
-
Flexible calculation as a fixed amount or percentage
-
Targeted control by sales channel, cart, product and delivery
-
Transparent display in the cart, checkout and order
Features
-
Create and manage any number of surcharges and discounts directly in the Shopware Administration
-
Define conditions flexibly using the Shopware Rule Builder
-
Restrict surcharges and discounts to specific sales channels, products or deliveries
-
Calculate values as a fixed amount, percentage or difference to a defined minimum value
-
Apply amounts once per cart, per product, per item or per delivery
-
Calculate surcharges and discounts based on product weight
-
Optionally include shipping costs in the calculation basis
-
Define the order and priority of multiple surcharges, discounts and Shopware promotions
-
Calculate taxes automatically or using an individually defined tax rate
-
Store gross and net amounts for different currencies
-
Display surcharges and discounts as separate line items in the cart and order
-
Customize the name, icon, color and image of the line item
-
Display additional information text on the product detail page
Purpose of the Plugin
The plugin allows surcharges and discounts to be applied automatically and based on rules in the Shopware cart. It can be defined precisely under which conditions a price adjustment applies, which products or deliveries it applies to and how it is calculated. This makes it possible to map processing and packaging fees, shipping surcharges, customer-specific discounts or statutory charges directly in Shopware. The calculated surcharges and discounts are displayed transparently to customers in the storefront, cart, checkout and order.Calculate surcharges and discounts flexibly
Surcharges and discounts can be calculated as a fixed amount, a percentage value or the difference to a defined minimum value. For fixed amounts, quantity-based and weight-based calculation methods are also available. This allows an amount to be calculated once per cart, per product, per item, per delivery or according to the product weight. Individual gross and net values can be stored for different currencies.
Map statutory and industry-specific charges
The weight-based calculation is also suitable for statutory or industry-specific charges. One possible use case is the German coffee tax. For example, a surcharge of €2.19 per kilogram can be calculated for roasted coffee and €4.78 per kilogram for instant coffee. Product rules are used to define the items to which the respective surcharge applies.
Control application using rules
Conditions from the Shopware Rule Builder can be used to define when a surcharge or discount is applied. The calculation can depend on the cart value, customer group, delivery country, shipping method or other individually defined criteria, for example. The application can also be restricted to specific sales channels, products or deliveries. This ensures that only cart line items that meet the configured conditions are included.
Combine multiple price adjustments
Multiple surcharges, discounts and Shopware promotions can be combined. A priority determines the order in which the individual calculations are performed. It can also be defined whether a surcharge or discount is added to the cart before or after Shopware promotions. This ensures that the calculation basis for each amount remains controllable, even for more complex price calculations.
Installation
- Open the Plugin Manager via Extensions > My Extensions
- Upload, install and activate the plugin
Create a Rule in the Rule Builder
Settings > Automation > Rule Builder > Create rule
The Rule Builder is used to define the conditions under which a surcharge or discount should be applied. Conditions can be based on the cart value, customer group, delivery country, shipping method or products, for example.
If no cart rule is assigned to a surcharge or discount, it is generally always active.
Create a Surcharge or Discount
Settings > Extensions > Surcharge/Discount > Add
Settings
- Internal ID
Unique identifier that is also stored with the order and can be used for assignment in other systems. - Internal name
Name used for internal identification in the Shopware Administration. - Display name
Name displayed to customers in the cart and order. - Information text
Optional additional information about the surcharge or discount. - Active
Activates or deactivates the surcharge or discount. - Add surcharge/discount to the cart as
Determines whether the amount is displayed as a separate line item or as additional costs, such as shipping costs, in the order summary. - Display surcharge/discount icon in the cart
Choose between a marketing icon with the default color, a custom icon color or an uploaded image. This setting is available when the surcharge or discount is displayed as a separate line item.
Tax Calculation
- Tax type
Defines how tax is calculated for the surcharge or discount. - Automatic: Calculates the tax based on all tax rates included in the cart.
- Highest rate: Uses the highest tax rate included in the cart.
- Fixed rate: Uses a manually selected tax rate.
Calculation
- Type
Choose between a fixed amount, a percentage value or the difference to a defined minimum value. - Value
Amount of the surcharge or discount. A negative value must be entered for discounts. - Gross and net price
For fixed amounts, individual gross and net values can be entered for the available currencies. - Quantity-based calculation
Defines whether the fixed amount is calculated once per cart, per different product, per item or per delivery. - Weight-based calculation
Multiplies the fixed amount by the total weight of the affected products in kilograms.
Display Conditions
- Sales channels
Select the sales channels in which the surcharge or discount should be applied. - Cart rules
Select the conditions previously created in the Rule Builder. The surcharge or discount is applied as soon as one of the assigned rules is met. - Apply only to selected products
Enables additional product rules to restrict the surcharge or discount to specific products. - Product rules
Select the rules that the affected products must meet. - Apply only to specific deliveries
Enables additional delivery rules, for example for specific shipping methods, delivery countries or partial deliveries. - Delivery rules
Select the conditions that must be met for the respective delivery.
Additional Text on the Product Detail Page
- Display additional text
Displays a custom notice on the product detail page for affected products.
Note: To activate this function and display the text, the discounted product price setting in the plugin configuration must be configured so that surcharges and/or discounts are loaded directly for the product. - Position
Determines whether the text is displayed above or below the product price. - Text content
Information displayed to customers on the product detail page.
Combination with Other Surcharges, Discounts and Shopware Promotions
- Priority
Determines the calculation order. The entry with the highest priority is calculated first. - Insert before or after Shopware promotions
Defines whether the surcharge or discount is calculated before or after Shopware promotions. - Calculation basis
Determines which cart line items are included in the calculation. - Add shipping costs to the calculation basis
Defines whether shipping costs are included in the calculation.
Example: Configure German Coffee Tax
For the weight-based calculation of a tax or duty, select the calculation type “Fixed amount” and set the weight-based calculation to “Multiplication per kilogram”.
- Roasted coffee
Enter a fixed surcharge of €2.19 per kilogram and assign a product rule for roasted coffee. - Instant coffee
Enter a fixed surcharge of €4.78 per kilogram and assign a product rule for instant coffee.
The weight stored in the product data is multiplied by the respective surcharge per kilogram.
Display of Adjusted Product Prices
Extensions > My Extensions > Surcharge/Discount > Configure
- Discounted product prices
Defines whether adjusted product prices are already displayed on product detail pages and in product listings.
Frequently Asked Questions
Yes, the following code must be inserted in the email template (preferably directly above the shipping costs)
{% set collectedSurchargeDiscountAdditionalCost = null %}
{% if order is not empty and order.customFields is not empty %}
{% if order.customFields.acrisSurchargeDiscountAdditionalCosts is defined %}
{% if order.customFields.acrisSurchargeDiscountAdditionalCosts is not empty and order.customFields.acrisSurchargeDiscountAdditionalCosts|length > 0 %}
{% set collectedSurchargeDiscountAdditionalCost = order.customFields.acrisSurchargeDiscountAdditionalCosts %}
{% endif %}
{% endif %}
{% endif %}
{% if collectedSurchargeDiscountAdditionalCost is not empty %}
{% for surchargeDiscount in collectedSurchargeDiscountAdditionalCost %}
{{ surchargeDiscount.label|sw_sanitize }}: {{ surchargeDiscount.price.totalPrice|currency(order.currency.isoCode) }}
{% endfor %}
{% endif %}
#### NOTE ####
The best place for the above code is directly above the shipping costs - the code looks like this and does not need to be adjusted:
{% for shippingCost in order.deliveries %}
Shipping costs: {{ shippingCost.shippingCosts.totalPrice|currency(currencyIsoCode) }}
{% endfor %}
Here is an example call via the Shopware Sync API: {{baseUrl}}/_action/sync
[
{
"action": "upsert",
"entity": "acris_rule_s_d",
"priority": 10,
"payload": [
{
"id": "01947370acd87ca888b378a25830807d",
"internalName": "Internal Name (required)",
"internalId": "Internal ID",
"displayName": "Name for display (required)",
"infoText": "Infotext for display
",
"active": true,
"type": "absolute",
"calculateQuantity": "no",
"priority": 10,
"affectedTypes": [
"product"
],
"calculationBase": "good",
"promotionOrder": "beforePromotion",
"taxType": "auto",
"price": [
{
"net": 100,
"gross": 119,
"linked": false,
"currencyId": "b7d2554b0ce847cd82f3ac9bd1c0dfca"
}
],
"assignMethod": "lineItem",
"icon": "default",
"salesChannels": [
{
"id": "0192c41809a773eca68f8da8237b29ac"
}
],
"rules": [
{
"id": "0192c416f26072a9b8ee920fc9e6f223"
}
]
}
]
}
]
- Create a rule and use the condition "Subtotal of all items".
- To the right of the condition and the input field for the value, there is a "Filter" button. By clicking the filter button, you can set which products are allowed to be considered for calculating the subtotal of the items.
The API documentation is available at: https://api-docs.acris.at/#cadd7d73-64ff-4473-8330-cb955bf9346c
| Version | Date | Compatibility | Changelog |
|---|---|---|---|
| 7.5.0 | 10 August 2026 | >=6.7.0.0 <6.8.0.0 |
|
| 7.4.0 | 29 July 2026 | >=6.7.0.0 <6.8.0.0 |
|
| 7.3.2 | 2 June 2026 | >=6.7.0.0 <6.8.0.0 |
|
| 7.3.1 | 28 May 2026 | >=6.7.0.0 <6.8.0.0 |
|
| 7.3.0 | 15 May 2026 | >=6.7.0.0 <6.8.0.0 |
|
| 7.2.0 | 28 April 2026 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.18 | 21 April 2026 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.17 | 20 April 2026 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.16 | 7 April 2026 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.15 | 12 March 2026 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.14 | 20 January 2026 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.13 | 16 January 2026 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.12 | 11 December 2025 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.11 | 24 November 2025 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.10 | 18 November 2025 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.9 | 3 September 2025 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.8 | 30 July 2025 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.7 | 23 July 2025 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.6 | 11 July 2025 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.5 | 9 July 2025 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.4 | 1 July 2025 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.3 | 1 July 2025 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.2 | 26 June 2025 | >=6.7.0.0 <6.8.0.0 |
|
| 7.1.1 | 23 June 2025 | >=6.7.0.0 < 6.8.0.0 |
|
| 7.1.0 | 18 June 2025 | >=6.7.0.0 < 6.8.0.0 |
|
| 7.0.0 | 7 May 2025 | >=6.7.0.0 < 6.8.0.0 |
|
| 6.4.0 | 27 April 2026 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.3.9 | 22 April 2026 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.3.8 | 11 December 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.3.7 | 24 November 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.3.6 | 3 September 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.3.5 | 29 July 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.3.4 | 23 July 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.3.3 | 9 July 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.3.2 | 23 June 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.3.1 | 18 June 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.3.0 | 18 June 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.2.8 | 13 March 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.2.7 | 4 March 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.2.6 | 19 February 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.2.5 | 18 February 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.2.4 | 18 February 2025 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.2.3 | 10 December 2024 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.2.2 | 22 November 2024 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.2.1 | 11 September 2024 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.2.0 | 1 August 2024 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.1.1 | 25 July 2024 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.1.0 | 2 July 2024 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.0.6 | 1 July 2024 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.0.5 | 21 June 2024 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.0.4 | 12 June 2024 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.0.3 | 24 May 2024 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.0.2 | 25 March 2024 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.0.1 | 21 March 2024 | >=6.6.0.0 < 6.7.0.0 |
|
| 6.0.0 | 20 March 2024 | >=6.6.0.0 < 6.7.0.0 |
|
| 5.3.5 | 12 March 2026 | >=6.5.1.0 < 6.6.0.0 |
|
| 5.3.4 | 12 March 2026 | >=6.5.1.0 < 6.6.0.0 |
|
| 5.3.3 | 18 February 2025 | >=6.5.1.0 < 6.6.0.0 |
|
| 5.3.2 | 18 February 2025 | >=6.5.1.0 < 6.6.0.0 |
|
| 5.3.1 | 11 September 2024 | >=6.5.1.0 < 6.6.0.0 |
|
| 5.3.0 | 1 August 2024 | >=6.5.1.0 < 6.6.0.0 |
|
| 5.2.1 | 25 July 2024 | >=6.5.1.0 < 6.6.0.0 |
|
| 5.2.0 | 2 July 2024 | >=6.5.1.0 < 6.6.0.0 |
|
| 5.1.3 | 1 July 2024 | >=6.5.1.0 < 6.6.0.0 |
|
| 5.1.2 | 12 June 2024 | >=6.5.1.0 < 6.6.0.0 |
|
| 5.1.1 | 28 March 2024 | >=6.5.1.0 < 6.6.0.0 |
|
| 5.1.0 | 27 March 2024 | >=6.5.1.0 < 6.6.0.0 |
|
| 5.0.1 | 5 March 2024 | >=6.5.1.0 < 6.6.0.0 |
|
| 5.0.0 | 4 March 2024 | >=6.5.1.0 < 6.6.0.0 |
|
| 4.1.5 | 4 March 2024 | >=6.5.0.0 < 6.6.0.0 |
|
| 4.1.4 | 26 February 2024 | >=6.5.0.0 |
|
| 4.1.3 | 2 February 2024 | >=6.5.0.0 |
|
| 4.1.2 | 19 January 2024 | >=6.5.0.0 |
|
| 4.1.1 | 4 December 2023 | >=6.5.0.0 |
|
| 4.0.9 | 20 November 2023 | >=6.5.0.0 |
|
| 4.0.8 | 18 October 2023 | >=6.5.0.0 |
|
| 4.0.7 | 18 October 2023 | >=6.5.0.0 |
|
| 4.0.6 | 12 October 2023 | >=6.5.0.0 |
|
| 4.0.5 | 5 October 2023 | >=6.5.0.0 |
|
| 4.0.4 | 3 October 2023 | >=6.5.0.0 |
|
| 4.0.3 | 28 August 2023 | >=6.5.0.0 |
|
| 4.0.2 | 3 August 2023 | >=6.5.0.0 |
|
| 4.0.1 | 30 May 2023 | >=6.5.0.0 |
|
| 4.0.0 | 19 April 2023 | >=6.5.0.0 |
|
| 3.10.12 | 26 July 2024 | >=6.4.2.0 < 6.5.0.0 |
|
| 3.10.11 | 18 October 2023 | >=6.4.2.0 < 6.5.0.0 |
|
| 3.10.10 | 12 October 2023 | >=6.4.2.0 < 6.5.0.0 |
|
| 3.10.9 | 5 October 2023 | >=6.4.2.0 < 6.5.0.0 |
|
| 3.10.8 | 3 October 2023 | >=6.4.2.0 < 6.5.0.0 |
|
| 3.10.7 | 28 August 2023 | >=6.4.2.0 < 6.5.0.0 |
|
| 3.10.6 | 3 August 2023 | >=6.4.2.0 < 6.5.0.0 |
|
| 3.10.5 | 30 May 2023 | >=6.4.2.0 |
|
| 3.10.4 | 12 April 2023 | >=6.4.2.0 |
|
| 3.10.3 | 29 March 2023 | >=6.4.2.0 |
|
| 3.10.2 | 24 March 2023 | >=6.4.2.0 |
|
| 3.10.1 | 23 March 2023 | >=6.4.2.0 |
|
| 3.10.0 | 21 March 2023 | >=6.4.2.0 |
|
| 3.9.2 | 10 March 2023 | >=6.4.2.0 |
|
| 3.9.1 | 2 March 2023 | >=6.4.2.0 |
|
| 3.9.0 | 15 February 2023 | >=6.4.2.0 |
|
| 3.8.8 | 10 February 2023 | >=6.4.2.0 |
|
| 3.8.7 | 3 February 2023 | >=6.4.2.0 |
|
| 3.8.6 | 1 February 2023 | >=6.4.2.0 |
|
| 3.8.5 | 24 January 2023 | >=6.4.2.0 |
|
| 3.8.4 | 26 November 2022 | >=6.4.2.0 |
|
| 3.8.3 | 26 November 2022 | >=6.4.2.0 |
|
| 3.8.2 | 26 November 2022 | >=6.4.2.0 |
|
| 3.8.1 | 26 November 2022 | >=6.4.2.0 |
|
| 3.8.0 | 26 November 2022 | >=6.4.2.0 |
|
| 3.7.3 | 26 November 2022 | >=6.4.2.0 |
|
| 3.7.2 | 26 November 2022 | >=6.4.2.0 |
|
| 3.7.1 | 26 November 2022 | >=6.4.2.0 |
|
| 3.7.0 | 26 November 2022 | >=6.4.2.0 |
|
| 3.6.0 | 26 November 2022 | >=6.4.2.0 |
|
| 3.5.1 | 26 November 2022 | >=6.4.2.0 |
|
| 3.5.0 | 26 November 2022 | >=6.4.2.0 |
|
| 3.4.0 | 26 November 2022 | >=6.4.2.0 |
|
| 3.3.3 | 26 November 2022 | >=6.4.2.0 |
|
| 3.3.2 | 26 November 2022 | >=6.4.2.0 |
|
| 3.3.1 | 26 November 2022 | >=6.4.2.0 |
|
| 3.3.0 | 26 November 2022 | >=6.4.2.0 |
|
| 3.2.2 | 26 November 2022 | >=6.4.2.0 |
|
| 3.2.1 | 26 November 2022 | >=6.4.2.0 |
|
| 3.2.0 | 26 November 2022 | >=6.4.2.0 |
|
| 3.1.5 | 26 November 2022 | >=6.4.2.0 |
|
| 3.1.4 | 26 November 2022 | >=6.4.2.0 |
|
| 3.1.3 | 26 November 2022 | >=6.4.2.0 |
|
| 3.1.2 | 26 November 2022 | >=6.4.2.0 |
|
| 3.1.1 | 26 November 2022 | >=6.4.2.0 |
|
| 3.1.0 | 26 November 2022 | >=6.4.2.0 |
|
| 3.0.4 | 26 November 2022 | >=6.4.2.0 |
|
| 3.0.3 | 26 November 2022 | >=6.4.2.0 |
|
| 3.0.2 | 26 November 2022 | >=6.4.2.0 |
|
| 3.0.1 | 26 November 2022 | >=6.4.2.0 |
|
| 3.0.0 | 26 November 2022 | >=6.4.2.0 |
|
| 2.0.5 | 26 November 2022 | >=6.4.0.0 |
|
| 2.0.4 | 26 November 2022 | >=6.4.0.0 |
|
| 2.0.3 | 26 November 2022 | >=6.4.0.0 |
|
| 2.0.2 | 26 November 2022 | >=6.4.0.0 |
|
| 2.0.1 | 26 November 2022 | >=6.4.0.0 |
|
| 2.0.0 | 26 November 2022 | >=6.4.0.0 |
|
| 1.1.1 | 26 November 2022 | >=6.3.0.0 |
|
| 1.1.0 | 26 November 2022 | >=6.3.0.0 |
|
| 1.0.7 | 26 November 2022 | >=6.3.0.0 |
|
| 1.0.6 | 26 November 2022 | >=6.3.0.0 |
|
| 1.0.5 | 26 November 2022 | >=6.3.0.0 |
|
| 1.0.4 | 26 November 2022 | >=6.3.0.0 |
|
| 1.0.3 | 26 November 2022 | >=6.3.0.0 |
|
Login
Plugin erfüllt alle Wünsche
Wir hatten nach dem Test des Plugins festgestellt, dass es sich nicht auf Bundles auswirkt.
Dies wurde in einer Schnelligkeit behoben, die in der Entwicklung seines Gleichen sucht.
Gäbe es 6 Sterne, würden wir die auch vergeben
Ein Pflicht-Plugin für B2B Shops plus Spitzensupport, Danke!!
Das SW-interne Rabatt-System kann man ja bestenfalls als rudimentär bezeichnen: Für simple Rabatte und Gutscheine im B2C-Bereich tut das zwar seinen Dienst; wenn man aber verschiedenen Kundengruppen gestaffelte Warenkorb-Rabatte geben will, kommt man um dieses Plugin nicht herum. Einfach top!
Und 1000 Dank für den Support bei einem besonders kniffligen Problem mit der Konfiguration - das hätten wir ohne Euch nicht hinbekommen!
Beste Grüße aus Berlin
Dieter
Nice support
The plugin was not working correctly. They helped me to find a solution.
Ein mächtiges Tool
Das ist ein wirklich mächtiges Tool um Zuschläge, Rabatte und Versandkosten den eigenen Bedürfnissen anzupassen. Da wir drei verschiedene Versandklassen haben (Paket, Spedition und Sperrgut), die zudem bei gemischten Warenkörben korrekt aufaddiert werden müssen, war dieses Plugin genau der fehlende Baustein, um das möglichst unkompliziert zu umzusetzen. Das Schöne daran: die Sperrgutzuschläge können separat im Warenkorb und an der Kasse angezeigt werden. Durch die Verbindung mit dem Rulebuilder können zudem sehr fein ausballancierte Regeln, auch für andere Bereiche eingestellt werden.
Super Erweiterung
Hilft sehr gut weiter, um eigene Preisstrukturen und Besonderheiten zu verrechnen - Support zudem super schnell und freundlich