Reading list Switch to dark mode

    How to Add Custom Price/fee in Order total in Magento 2

    Updated 23 February 2024

    If you want to add a custom price/custom fee to your total, then you can use the following approach.

    create sales.xml in your module etc folder

    <?xml version="1.0"?>
    
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Sales:etc/sales.xsd">
        <section name="quote">
            <group name="totals">
                <item name="customfee" instance="Webkul\Test\Model\Total\Customfee" sort_order="150"/>
            </group>  
        </section>
    </config>

    Now, define app\code\Webkul\Test\Model\Total\Customfee.php, where you update your total according to your custom fee.

    class Customfee extends \Magento\Quote\Model\Quote\Address\Total\AbstractTotal
    {
       /**
         * Collect grand total address amount
         *
         * @param \Magento\Quote\Model\Quote $quote
         * @param \Magento\Quote\Api\Data\ShippingAssignmentInterface $shippingAssignment
         * @param \Magento\Quote\Model\Quote\Address\Total $total
         * @return $this
         */
        protected $quoteValidator = null; 
    
        public function __construct(\Magento\Quote\Model\QuoteValidator $quoteValidator)
        {
            $this->quoteValidator = $quoteValidator;
        }
      public function collect(
            \Magento\Quote\Model\Quote $quote,
            \Magento\Quote\Api\Data\ShippingAssignmentInterface $shippingAssignment,
            \Magento\Quote\Model\Quote\Address\Total $total
        ) {
            parent::collect($quote, $shippingAssignment, $total);
    
    
            $exist_amount = 0; //$quote->getCustomfee(); 
            $customfee = 100; //enter amount which you want to set
            $balance = $customfee - $exist_amount;//final amount
    
            $total->setTotalAmount('customfee', $balance);
            $total->setBaseTotalAmount('customfee', $balance);
    
            $total->setCustomfee($balance);
            $total->setBaseCustomfee($balance);
    
            $total->setGrandTotal($total->getGrandTotal() + $balance);
            $total->setBaseGrandTotal($total->getBaseGrandTotal() + $balance);
    
    
            return $this;
        } 
    
        protected function clearValues(Address\Total $total)
        {
            $total->setTotalAmount('subtotal', 0);
            $total->setBaseTotalAmount('subtotal', 0);
            $total->setTotalAmount('tax', 0);
            $total->setBaseTotalAmount('tax', 0);
            $total->setTotalAmount('discount_tax_compensation', 0);
            $total->setBaseTotalAmount('discount_tax_compensation', 0);
            $total->setTotalAmount('shipping_discount_tax_compensation', 0);
            $total->setBaseTotalAmount('shipping_discount_tax_compensation', 0);
            $total->setSubtotalInclTax(0);
            $total->setBaseSubtotalInclTax(0);
        }
        /**
         * @param \Magento\Quote\Model\Quote $quote
         * @param Address\Total $total
         * @return array|null
         */
        /**
         * Assign subtotal amount and label to address object
         *
         * @param \Magento\Quote\Model\Quote $quote
         * @param Address\Total $total
         * @return array
         */
        public function fetch(\Magento\Quote\Model\Quote $quote, \Magento\Quote\Model\Quote\Address\Total $total)
        {
            return [
                'code' => 'customfee',
                'title' => 'Custom Fee',
                'value' => 100
            ];
        }
    
        /**
         * Get Subtotal label
         *
         * @return \Magento\Framework\Phrase
         */
        public function getLabel()
        {
            return __('Custom Fee');
        }
    }

    I hope this blog will help you with How to Add Custom Prices/fees in Order 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.

    Searching for an experienced
    Magento 2 Company ?
    Find out More

    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*


    10 comments

  • Ahsan Horani
    • abhishek (Moderator)
  • Davin
    • abhishek (Moderator)
  • vinit kumar
    • ashutosh srivastava (Moderator)
  • Vinit
  • Arsalan Ajmal
  • Display custom price fee on checkout cart and summary total in magento2
  • How to display custom price fee in sales order view page
  • Back to Top

    Message Sent!

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

    Back to Home