Reading list Switch to dark mode

    Display Custom Price fee on Checkout Cart and Summary Total in Magento 2

    Updated 5 April 2024

    To display Custom price fee on checkout/cart page or in summary cart you can follow following process :

    Now, create js file which allow to display the amount on checkout cart total, file path is:

    app\code\Webkul\Test\view\frontend\web\js\view\checkout\cart\totals\customfee.js

    define(
        [
            'Webkul_Test/js/view/checkout/summary/customfee'
        ],
        function (Component) {
            'use strict';
    
            return Component.extend({
                /**
                 * @override
                 * use to define amount is display setting
                 */
                isDisplayed: function () {
                    return true;
                }
            });
        }
    );

    and define js file for checkout summary, create file at path:

    app\code\Webkul\Test\view\frontend\web\js\view\checkout\summary\customfee.js

    Searching for an experienced
    Magento 2 Company ?
    Find out More
    /*global alert*/
    define(
        [
            'Magento_Checkout/js/view/summary/abstract-total',
            'Magento_Checkout/js/model/quote',
            'Magento_Catalog/js/price-utils',
            'Magento_Checkout/js/model/totals'
        ],
        function (Component, quote, priceUtils, totals) {
            "use strict";
            return Component.extend({
                defaults: {
                    isFullTaxSummaryDisplayed: window.checkoutConfig.isFullTaxSummaryDisplayed || false,
                    template: 'Webkul_Test/checkout/summary/customfee'
                },
                totals: quote.getTotals(),
                isTaxDisplayedInGrandTotal: window.checkoutConfig.includeTaxInGrandTotal || false,
                isDisplayed: function() {
                    return this.isFullMode();
                },
                getValue: function() {
                    var price = 0;
                    if (this.totals()) {
                        price = totals.getSegment('customfee').value;
                    }
                    return this.getFormattedPrice(price);
                },
                getBaseValue: function() {
                    var price = 0;
                    if (this.totals()) {
                        price = this.totals().base_customfee;
                    }
                    return priceUtils.formatPrice(price, quote.getBasePriceFormat());
                }
            });
        }
    );

    Now, define template file to display it on page, file path:

    app\code\Webkul\Test\view\frontend\web\template\checkout\summary\customfee.html

    <!-- ko -->
      <tr class="totals customfee excl">
            <th class="mark" scope="row">
                <span class="label" data-bind="text: title"></span>
                <span class="value" data-bind="text: getValue()"></span>
            </th>
            <td class="amount">
                <span class="price"
                      data-bind="text: getValue(), attr: {'data-th': title}"></span>
            </td>
        </tr>
    <!-- /ko -->

    Now, define template file for checkout cart total, file path is:

    app\code\Webkul\Test\view\frontend\web\template\checkout\cart\totals\customfee.html

    <!-- ko -->
    <tr class="totals customfee excl">
        <th class="mark" colspan="1" scope="row" data-bind="text: title"></th>
        <td class="amount">
            <span class="price" data-bind="text: getValue()"></span>
        </td>
    </tr>
    <!-- /ko -->

    And , now define these js files in xml file, on checkout_cart_index.xml.

    File path is: app\code\Webkul\Test\view\frontend\layout\checkout_cart_index.xml

    <?xml version="1.0"?>
    <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
        <body>
            <referenceBlock name="checkout.cart.totals">
                <arguments>
                    <argument name="jsLayout" xsi:type="array">
                        <item name="components" xsi:type="array">
                            <item name="block-totals" xsi:type="array">
                                <item name="children" xsi:type="array">
                                    <item name="customfee" xsi:type="array">
                                        <item name="component"  xsi:type="string">Webkul_Test/js/view/checkout/cart/totals/customfee</item>
                                        <item name="sortOrder" xsi:type="string">20</item>
                                        <item name="config" xsi:type="array">
                                             <item name="template" xsi:type="string">Webkul_Test/checkout/cart/totals/customfee</item>
                                            <item name="title" xsi:type="string" translate="true">Custom Fee</item>
                                        </item>
                                    </item>
    
                                </item>
                            </item>
                        </item>
                    </argument>
                </arguments>
            </referenceBlock>
        </body>
    </page>

    Now, add file for checkout_index_index page, file path is:

    app\code\Webkul\Test\view\frontend\layout\checkout_index_index.xml

    <?xml version="1.0"?>
    <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
        <body>
            <referenceBlock name="checkout.root">
                <arguments>
                    <argument name="jsLayout" xsi:type="array">
                        <item name="components" xsi:type="array">
                            <item name="checkout" xsi:type="array">
                                <item name="children" xsi:type="array">
                                    <item name="sidebar" xsi:type="array">
                                        <item name="children" xsi:type="array">
                                            <item name="summary" xsi:type="array">
                                                <item name="children" xsi:type="array">
                                                    <item name="totals" xsi:type="array">
                                                        <item name="children" xsi:type="array">
                                                           <item name="customfee" xsi:type="array">
                                                                <item name="component"  xsi:type="string">Webkul_Test/js/view/checkout/cart/totals/customfee</item>
                                                                <item name="sortOrder" xsi:type="string">20</item>
                                                                <item name="config" xsi:type="array">
                                                                     <item name="template" xsi:type="string">Webkul_Test/checkout/cart/totals/customfee</item>
                                                                    <item name="title" xsi:type="string" translate="true">Custom Fee</item>
                                                                </item>
                                                            </item>
                                                        </item>
                                                    </item>
                                                    <item name="cart_items" xsi:type="array">
                                                        <item name="children" xsi:type="array">
                                                            <item name="details" xsi:type="array">
                                                                <item name="children" xsi:type="array">
                                                                    <item name="subtotal" xsi:type="array">
                                                                        <item name="component" xsi:type="string">Magento_Tax/js/view/checkout/summary/item/details/subtotal</item>
                                                                    </item>
                                                                </item>
                                                            </item>
                                                        </item>
                                                    </item>
                                                </item>
                                            </item>
                                        </item>
                                    </item>
                                </item>
                            </item>
                        </item>
                    </argument>
                </arguments>
            </referenceBlock>
        </body>
    </page>

    Now, execute bin\magento setup:static-content:deploy command from ssh terminal.

    And your custom fee amount will displayed on checkout cart total and checkout summary page.

    Thank you. 🙂

    To display custom price/fee amount in sales order view , then refer blog:

    http://webkul.com/blog/display-custom-pricefee-sales-order-view-page/

    I hope this blog will help you with Display Custom Price fee on Checkout Cart and Summary Total in Magento 2. You may also check our wide range of best Magento 2 Extensions.

    Please reach out to our team via a support ticket if you have any queries.

    Try this and if you have any queries then just comment below 🙂

    . . .

    Leave a Comment

    Your email address will not be published. Required fields are marked*


    8 comments

  • tallenmusclegeeks
    • Bulbul agarwal
      • tallenmusclegeeks
      • tallenmusclegeeks
        • Bulbul agarwal
          • tallenmusclegeeks
          • Bulbul agarwal
          • tallenmusclegeeks
  • Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home