{"id":1000,"date":"2024-01-10T19:10:59","date_gmt":"2024-01-10T13:40:59","guid":{"rendered":"https:\/\/magecurious.com\/blog\/?p=1000"},"modified":"2025-01-11T21:21:36","modified_gmt":"2025-01-11T15:51:36","slug":"how-to-add-custom-discount-programmatically-in-magento-2","status":"publish","type":"post","link":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/","title":{"rendered":"How to Add Custom Discount Programmatically in Magento 2"},"content":{"rendered":"\n<p>Hello Everyone,<\/p>\n\n\n\n<p>In this blog, we will learn about Add Custom Discount Programmatically in Magento 2.<\/p>\n\n\n\n<p>Sometimes business goes slow, at that time business owners are required to implement sales promotion.<\/p>\n\n\n\n<p>Programmatically Add Custom Discount in Magento 2 is a part of marketing strategies to increase sales.<\/p>\n\n\n\n<p>Without wasting your time, let us guide you straight away. Follow the easy step given below to Add Pagination in Custom Collection in Magento 2.<\/p>\n\n\n\n<p><strong>STEPS FOR ADD CUSTOM DISCOUNT PROGRAMMATICALLY IN MAGENTO 2<\/strong><\/p>\n\n\n\n<p><strong>Step 1: Create sales.xml file<\/strong><\/p>\n\n\n\n<p><strong>app\/code\/Vendor\/Extension\/etc\/sales.xml<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?xml version=&quot;1.0&quot;?&gt;\n\n&lt;config xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot; xsi:noNamespaceSchemaLocation=&quot;urn:magento:module:Magento_Sales:etc\/sales.xsd&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0&lt;section name=&quot;quote&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;group name=&quot;totals&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;item name=&quot;customdiscount&quot; instance=&quot;Vendor\\Extension\\Model\\Quote\\Address\\Total\\CustomDiscount&quot; sort_order=&quot;400&quot;\/&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/group&gt;\n\n\u00a0\u00a0\u00a0\u00a0&lt;\/section&gt;\n\n&lt;\/config&gt;\n<\/pre><\/div>\n\n\n<p><strong>Step 2: Create Custom Discount.php file<\/strong><\/p>\n\n\n\n<p><strong>app\/code\/Vendor\/Extension\/Model\/Quote\/Address\/Total\/CustomDiscount.php<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php\n\nnamespace Vendor\\Extension\\Model\\Quote\\Address\\Total;\n\nclass CustomDiscount extends \\Magento\\Quote\\Model\\Quote\\Address\\Total\\AbstractTotal\n\n{\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\n\u00a0\u00a0\u00a0\u00a0* @var \\Magento\\Framework\\Pricing\\PriceCurrencyInterface\n\n\u00a0\u00a0\u00a0\u00a0*\/\n\n\u00a0\u00a0\u00a0\u00a0protected $_priceCurrency;\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param \\Magento\\Framework\\Pricing\\PriceCurrencyInterface $priceCurrency &#x5B;description]\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\n\u00a0\u00a0\u00a0\u00a0public function __construct(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\\Magento\\Framework\\Pricing\\PriceCurrencyInterface $priceCurrency\n\n\u00a0\u00a0\u00a0\u00a0) {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;_priceCurrency = $priceCurrency;\n\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0public function collect(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\\Magento\\Quote\\Model\\Quote $quote,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\\Magento\\Quote\\Api\\Data\\ShippingAssignmentInterface $shippingAssignment,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\\Magento\\Quote\\Model\\Quote\\Address\\Total $total\n\n\u00a0\u00a0\u00a0\u00a0) {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0parent::collect($quote, $shippingAssignment, $total);\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$customDiscount = -10;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$total-&gt;addTotalAmount(&#039;customdiscount&#039;, $customDiscount);\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$total-&gt;addBaseTotalAmount(&#039;customdiscount&#039;, $customDiscount);\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$quote-&gt;setCustomDiscount($customDiscount);\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $this;\n\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* Assign subtotal amount and label to address object\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param \\Magento\\Quote\\Model\\Quote $quote\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param Address\\Total $total\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return array\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @SuppressWarnings(PHPMD.UnusedFormalParameter)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\n\u00a0\u00a0\u00a0\u00a0public function fetch(\\Magento\\Quote\\Model\\Quote $quote, \\Magento\\Quote\\Model\\Quote\\Address\\Total $total)\n\n\u00a0\u00a0\u00a0\u00a0{\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return &#x5B;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#039;code&#039; =&gt; &#039;Custom_Discount&#039;,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#039;title&#039; =&gt; $this-&gt;getLabel(),\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#039;value&#039; =&gt; 10\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* get label\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return string\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\n\u00a0\u00a0\u00a0\u00a0public function getLabel()\n\n\u00a0\u00a0\u00a0\u00a0{\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return __(&#039;Custom Discount&#039;);\n\n\u00a0\u00a0\u00a0\u00a0}\n\n}\n<\/pre><\/div>\n\n\n<p><strong>Step 3: Create checkout_cart_index.xml file<\/strong><\/p>\n\n\n\n<p><strong>app\/code\/Vendor\/Extension\/view\/frontend\/layout\/checkout_cart_index.xml<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?xml version=&quot;1.0&quot;?&gt;\n\n&lt;page xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot; layout=&quot;1column&quot; xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:View\/Layout\/etc\/page_configuration.xsd&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0&lt;body&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;referenceBlock name=&quot;checkout.cart.totals&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;arguments&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;argument name=&quot;jsLayout&quot; xsi:type=&quot;array&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;item name=&quot;components&quot; xsi:type=&quot;array&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;item name=&quot;block-totals&quot; xsi:type=&quot;array&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;item name=&quot;children&quot; xsi:type=&quot;array&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;item name=&quot;customdiscount&quot; xsi:type=&quot;array&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;item name=&quot;component&quot;\u00a0 xsi:type=&quot;string&quot;&gt;Vendor_Extension\/js\/view\/checkout\/summary\/custom-discount&lt;\/item&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;item name=&quot;sortOrder&quot; xsi:type=&quot;string&quot;&gt;20&lt;\/item&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;item name=&quot;customdiscount&quot; xsi:type=&quot;string&quot; translate=&quot;true&quot;&gt;Custom Discount&lt;\/item&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/item&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/item&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/item&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/item&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/item&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/argument&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/arguments&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/referenceBlock&gt;\n\n\u00a0\u00a0\u00a0\u00a0&lt;\/body&gt;\n\n&lt;\/page&gt;\n<\/pre><\/div>\n\n\n<p><strong>Step 4: Create checkout_index_index.xml file<\/strong><\/p>\n\n\n\n<p><strong>app\/code\/Vendor\/Extension\/view\/frontend\/layout\/checkout_index_index.xml<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;page xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot; layout=&quot;1column&quot; xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:View\/Layout\/etc\/page_configuration.xsd&quot;&gt;\n    &lt;body&gt;\n        &lt;referenceBlock name=&quot;checkout.root&quot;&gt;\n            &lt;arguments&gt;\n                &lt;argument name=&quot;jsLayout&quot; xsi:type=&quot;array&quot;&gt;\n                    &lt;item name=&quot;components&quot; xsi:type=&quot;array&quot;&gt;\n                        &lt;item name=&quot;checkout&quot; xsi:type=&quot;array&quot;&gt;\n                            &lt;item name=&quot;children&quot; xsi:type=&quot;array&quot;&gt;\n                                &lt;item name=&quot;sidebar&quot; xsi:type=&quot;array&quot;&gt;\n                                    &lt;item name=&quot;children&quot; xsi:type=&quot;array&quot;&gt;\n                                        &lt;item name=&quot;summary&quot; xsi:type=&quot;array&quot;&gt;\n                                            &lt;item name=&quot;children&quot; xsi:type=&quot;array&quot;&gt;\n                                                &lt;item name=&quot;totals&quot; xsi:type=&quot;array&quot;&gt;\n                                                    &lt;item name=&quot;children&quot; xsi:type=&quot;array&quot;&gt;\n                                                       &lt;item name=&quot;customdiscount&quot; xsi:type=&quot;array&quot;&gt;\n                                                            &lt;item name=&quot;component&quot;  xsi:type=&quot;string&quot;&gt;Vendor_Extension\/js\/view\/checkout\/cart\/totals\/custom-discount&lt;\/item&gt;\n                                                            &lt;item name=&quot;sortOrder&quot; xsi:type=&quot;string&quot;&gt;20&lt;\/item&gt;\n                                                            &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;\n                                                                 &lt;item name=&quot;template&quot; xsi:type=&quot;string&quot;&gt;Vendor_Extension\/checkout\/cart\/totals\/custom-discount&lt;\/item&gt;\n                                                                &lt;item name=&quot;title&quot; xsi:type=&quot;string&quot; translate=&quot;true&quot;&gt;Custom Discount&lt;\/item&gt;\n                                                            &lt;\/item&gt;\n                                                        &lt;\/item&gt;\n                                                    &lt;\/item&gt;\n                                                &lt;\/item&gt;\n                                                &lt;item name=&quot;cart_items&quot; xsi:type=&quot;array&quot;&gt;\n                                                    &lt;item name=&quot;children&quot; xsi:type=&quot;array&quot;&gt;\n                                                        &lt;item name=&quot;details&quot; xsi:type=&quot;array&quot;&gt;\n                                                            &lt;item name=&quot;children&quot; xsi:type=&quot;array&quot;&gt;\n                                                                &lt;item name=&quot;subtotal&quot; xsi:type=&quot;array&quot;&gt;\n                                                                    &lt;item name=&quot;component&quot; xsi:type=&quot;string&quot;&gt;Magento_Tax\/js\/view\/checkout\/summary\/item\/details\/subtotal&lt;\/item&gt;\n                                                                &lt;\/item&gt;\n                                                            &lt;\/item&gt;\n                                                        &lt;\/item&gt;\n                                                    &lt;\/item&gt;\n                                                &lt;\/item&gt;\n                                            &lt;\/item&gt;\n                                        &lt;\/item&gt;\n                                    &lt;\/item&gt;\n                                &lt;\/item&gt;\n                            &lt;\/item&gt;\n                        &lt;\/item&gt;\n                    &lt;\/item&gt;\n                &lt;\/argument&gt;\n            &lt;\/arguments&gt;\n        &lt;\/referenceBlock&gt;\n    &lt;\/body&gt;\n&lt;\/page&gt;\n<\/pre><\/div>\n\n\n<p><strong>Step 5: Create custom-discount.js file<\/strong><\/p>\n\n\n\n<p><strong>app\/code\/Vendor\/Extension\/view\/frontend\/web\/js\/view\/checkout\/cart\/totals\/custom-discount.js<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\ndefine(\n\n\u00a0\u00a0\u00a0\u00a0&#x5B;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#039;Vendor_Extension\/js\/view\/checkout\/summary\/custom-discount&#039;\n\n\u00a0\u00a0\u00a0\u00a0],\n\n\u00a0\u00a0\u00a0\u00a0function (Component) {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#039;use strict&#039;;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return Component.extend({\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/**\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0* @override\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0isDisplayed: function () {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return true;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\n\u00a0\u00a0\u00a0\u00a0}\n\n);\n<\/pre><\/div>\n\n\n<p><strong>Step 6: Create custom-discount.js file<\/strong><\/p>\n\n\n\n<p><strong>app\/code\/Vendor\/Extension\/view\/frontend\/web\/js\/view\/checkout\/summary\/custom-discount.js<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\ndefine(\n\n\u00a0\u00a0\u00a0\u00a0&#x5B;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#039;jquery&#039;,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#039;Magento_Checkout\/js\/view\/summary\/abstract-total&#039;,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#039;Magento_Checkout\/js\/model\/quote&#039;,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#039;Magento_Checkout\/js\/model\/totals&#039;,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#039;Magento_Catalog\/js\/price-utils&#039;\n\n\u00a0\u00a0\u00a0\u00a0],\n\n\u00a0\u00a0\u00a0\u00a0function ($,Component,quote,totals,priceUtils) {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&quot;use strict&quot;;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return Component.extend({\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0defaults: {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0template: &#039;Vendor_Extension\/checkout\/summary\/custom-discount&#039;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0totals: quote.getTotals(),\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0isDisplayedCustomdiscountTotal : function () {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return true;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0getCustomdiscountTotal : function () {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var price = 10;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return this.getFormattedPrice(price);\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\n\u00a0\u00a0\u00a0\u00a0}\n\n);\n<\/pre><\/div>\n\n\n<p><strong>Step 7: Create custom-discount.html file<\/strong><\/p>\n\n\n\n<p><strong>app\/code\/Vendor\/Extension\/view\/frontend\/web\/template\/checkout\/cart\/totals\/custom-discount.html<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;!-- ko if: isDisplayedCustomdiscountTotal() --&gt;\n\n&lt;tr class=&quot;totals customdiscount excl&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0&lt;th class=&quot;mark&quot; colspan=&quot;1&quot; scope=&quot;row&quot; data-bind=&quot;text: title&quot;&gt;&lt;\/th&gt;\n\n\u00a0\u00a0\u00a0\u00a0&lt;td class=&quot;amount&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;span class=&quot;price&quot; data-bind=&quot;text: getCustomdiscountTotal()&quot;&gt;&lt;\/span&gt;\n\n\u00a0\u00a0\u00a0\u00a0&lt;\/td&gt;\n\n&lt;\/tr&gt;\n\n&lt;!-- \/ko \u2192\n<\/pre><\/div>\n\n\n<p><strong>Step 8: Create custom-discount.html file<\/strong><\/p>\n\n\n\n<p><strong>app\/code\/Vendor\/Extension\/view\/frontend\/web\/template\/checkout\/summary\/custom-discount.html<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;!-- ko if: isDisplayedCustomdiscountTotal() --&gt;\n\n&lt;tr class=&quot;totals coupon-discount excl&quot;&gt;\n\n\u00a0\u00a0\u00a0&lt;th class=&quot;mark&quot; colspan=&quot;1&quot; scope=&quot;row&quot; data-bind=&quot;text: customdiscount&quot;&gt;&lt;\/th&gt;\n\n\u00a0\u00a0\u00a0&lt;td class=&quot;amount&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;span class=&quot;price&quot; data-bind=&quot;text: getCustomdiscountTotal(), attr: {&#039;data-th&#039;: customdiscount}&quot;&gt;&lt;\/span&gt;\n\n\u00a0\u00a0\u00a0&lt;\/td&gt;\n\n&lt;\/tr&gt;\n\n&lt;!-- \/ko --&gt;\n<\/pre><\/div>\n\n\n<p><strong>Step 9: Finally run the below commands<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n$ php bin\/magento setup:upgrade\n\n$ php bin\/magento cache:clean\n\n$ php bin\/magento cache:flush\n<\/pre><\/div>\n\n\n<p><strong>Step 10: Output:<\/strong><\/p>\n\n\n\n<p><strong>In Cart Page:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/H3IMCZ0AZ85xLTz8ysNjC2CUEJLcyC2z4OJOH2EXVVxoD7qPDvRF69k3ct2_yfuqcRqxfgHfOMtdejPEYsFlGLfBcSuzZvdXerlBp-nRl49n5mc6E4Ie80l4OsTxbfNBNKspvTNREbQrKxORTgko4HI\" alt=\"\"\/><\/figure>\n\n\n\n<p><strong>In Checkout Page:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/jiEEEcYDHO8Z5Zf48DdJz5BfUlO_Yssciz2-T7Qia_6lAHy_fAZIWU9l4uQWDCJppyO0x18JngG34aqynUDGJrTLzayzk7-BaZP419LudIq6_4mOYESqIQBXSQnzCfx60cvtxlb_HlOia6G5uxIDdyc\" alt=\"\"\/><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Final Thoughts:<\/strong><\/p>\n\n\n\n<p>So this was the easiest way which we have told you in this blog. This is how you can Add Custom Discount in Magento 2. Hope you liked the blog.<\/p>\n\n\n\n<p>So quickly go to the comment box and tell me how you like this blog?<\/p>\n\n\n\n<p><strong>Stay tuned with us on our site to get new updates of Magento.<\/strong><\/p>\n\n\n\n<p>Thanks for reading and visiting our site.<\/p>\n\n\n<!-- FeedbackWP Plugin --><div  class=\"rmp-widgets-container rmp-wp-plugin rmp-main-container js-rmp-widgets-container js-rmp-widgets-container--1000 \"  data-post-id=\"1000\">    <!-- Rating widget -->  <div class=\"rmp-rating-widget js-rmp-rating-widget\">          <p class=\"rmp-heading rmp-heading--title\">        How useful was this post?      <\/p>              <p class=\"rmp-heading rmp-heading--subtitle\">        Click on a star to rate it!      <\/p>        <div class=\"rmp-rating-widget__icons\">      <ul class=\"rmp-rating-widget__icons-list js-rmp-rating-icons-list\">                  <li class=\"rmp-rating-widget__icons-list__icon js-rmp-rating-item\" data-descriptive-rating=\"Not at all useful\" data-value=\"1\">              <i class=\"js-rmp-rating-icon rmp-icon rmp-icon--ratings rmp-icon--star rmp-icon--full-highlight\"><\/i>          <\/li>                  <li class=\"rmp-rating-widget__icons-list__icon js-rmp-rating-item\" data-descriptive-rating=\"Somewhat useful\" data-value=\"2\">              <i class=\"js-rmp-rating-icon rmp-icon rmp-icon--ratings rmp-icon--star rmp-icon--full-highlight\"><\/i>          <\/li>                  <li class=\"rmp-rating-widget__icons-list__icon js-rmp-rating-item\" data-descriptive-rating=\"Useful\" data-value=\"3\">              <i class=\"js-rmp-rating-icon rmp-icon rmp-icon--ratings rmp-icon--star rmp-icon--full-highlight\"><\/i>          <\/li>                  <li class=\"rmp-rating-widget__icons-list__icon js-rmp-rating-item\" data-descriptive-rating=\"Fairly useful\" data-value=\"4\">              <i class=\"js-rmp-rating-icon rmp-icon rmp-icon--ratings rmp-icon--star rmp-icon--full-highlight\"><\/i>          <\/li>                  <li class=\"rmp-rating-widget__icons-list__icon js-rmp-rating-item\" data-descriptive-rating=\"Very useful\" data-value=\"5\">              <i class=\"js-rmp-rating-icon rmp-icon rmp-icon--ratings rmp-icon--star rmp-icon--full-highlight\"><\/i>          <\/li>              <\/ul>    <\/div>    <p class=\"rmp-rating-widget__hover-text js-rmp-hover-text\"><\/p>        <button class=\"rmp-rating-widget__submit-btn rmp-btn js-submit-rating-btn\">      Submit Rating    <\/button>    <p class=\"rmp-rating-widget__results js-rmp-results \">      Average rating <span class=\"rmp-rating-widget__results__rating js-rmp-avg-rating\">5<\/span> \/ 5. Vote count: <span class=\"rmp-rating-widget__results__votes js-rmp-vote-count\">1<\/span>    <\/p>    <p class=\"rmp-rating-widget__not-rated js-rmp-not-rated rmp-rating-widget__not-rated--hidden\">      No votes so far! Be the first to rate this post.    <\/p>    <p class=\"rmp-rating-widget__msg js-rmp-msg\"><\/p>  <\/div>  <!--Structured data -->        <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Hello Everyone, In this blog, we will learn about Add Custom Discount Programmatically in Magento 2. Sometimes business goes slow, at that time business owners are required to implement sales promotion. Programmatically Add Custom Discount in Magento 2 is a part of marketing strategies to increase sales. Without wasting your time, let us guide you [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1002,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1000","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-magento-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Add Custom Discount Programmatically in Magento 2<\/title>\n<meta name=\"description\" content=\"Add custom discounts programmatically in Magento 2. Follow our guide to implement tailored discounts and improve your store&#039;s.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Add Custom Discount Programmatically in Magento 2\" \/>\n<meta property=\"og:description\" content=\"Add custom discounts programmatically in Magento 2. Follow our guide to implement tailored discounts and improve your store&#039;s.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Magecurious\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-10T13:40:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-11T15:51:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2024\/01\/image_2024_01_10T11_30_08_507Z.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1260\" \/>\n\t<meta property=\"og:image:height\" content=\"496\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Magecurious\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Magecurious\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Add Custom Discount Programmatically in Magento 2","description":"Add custom discounts programmatically in Magento 2. Follow our guide to implement tailored discounts and improve your store's.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/","og_locale":"en_US","og_type":"article","og_title":"Add Custom Discount Programmatically in Magento 2","og_description":"Add custom discounts programmatically in Magento 2. Follow our guide to implement tailored discounts and improve your store's.","og_url":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/","og_site_name":"Magecurious","article_published_time":"2024-01-10T13:40:59+00:00","article_modified_time":"2025-01-11T15:51:36+00:00","og_image":[{"width":1260,"height":496,"url":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2024\/01\/image_2024_01_10T11_30_08_507Z.png","type":"image\/png"}],"author":"Magecurious","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Magecurious","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/#article","isPartOf":{"@id":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/"},"author":{"name":"Magecurious","@id":"https:\/\/magecurious.com\/blog\/#\/schema\/person\/6bced7da0991e7fbbd4550006a6494e2"},"headline":"How to Add Custom Discount Programmatically in Magento 2","datePublished":"2024-01-10T13:40:59+00:00","dateModified":"2025-01-11T15:51:36+00:00","mainEntityOfPage":{"@id":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/"},"wordCount":302,"commentCount":0,"publisher":{"@id":"https:\/\/magecurious.com\/blog\/#organization"},"image":{"@id":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/#primaryimage"},"thumbnailUrl":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2024\/01\/image_2024_01_10T11_30_08_507Z.png","articleSection":["Magento 2 Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/","url":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/","name":"Add Custom Discount Programmatically in Magento 2","isPartOf":{"@id":"https:\/\/magecurious.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/#primaryimage"},"image":{"@id":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/#primaryimage"},"thumbnailUrl":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2024\/01\/image_2024_01_10T11_30_08_507Z.png","datePublished":"2024-01-10T13:40:59+00:00","dateModified":"2025-01-11T15:51:36+00:00","description":"Add custom discounts programmatically in Magento 2. Follow our guide to implement tailored discounts and improve your store's.","breadcrumb":{"@id":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/#primaryimage","url":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2024\/01\/image_2024_01_10T11_30_08_507Z.png","contentUrl":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2024\/01\/image_2024_01_10T11_30_08_507Z.png","width":1260,"height":496},{"@type":"BreadcrumbList","@id":"https:\/\/magecurious.com\/blog\/how-to-add-custom-discount-programmatically-in-magento-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/magecurious.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Add Custom Discount Programmatically in Magento 2"}]},{"@type":"WebSite","@id":"https:\/\/magecurious.com\/blog\/#website","url":"https:\/\/magecurious.com\/blog\/","name":"Magecurious","description":"Blog","publisher":{"@id":"https:\/\/magecurious.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/magecurious.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/magecurious.com\/blog\/#organization","name":"Magecurious","url":"https:\/\/magecurious.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/magecurious.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2026\/03\/cropped-New_Project.png","contentUrl":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2026\/03\/cropped-New_Project.png","width":596,"height":113,"caption":"Magecurious"},"image":{"@id":"https:\/\/magecurious.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/magecurious.com\/blog\/#\/schema\/person\/6bced7da0991e7fbbd4550006a6494e2","name":"Magecurious","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/magecurious.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c9178df2190b2309da97c9f28dd475bc338275cf664d12678d7e5da51c761271?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c9178df2190b2309da97c9f28dd475bc338275cf664d12678d7e5da51c761271?s=96&d=mm&r=g","caption":"Magecurious"},"sameAs":["https:\/\/magecurious.com"],"url":"https:\/\/magecurious.com\/blog\/author\/magecurious-wp\/"}]}},"jetpack_featured_media_url":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2024\/01\/image_2024_01_10T11_30_08_507Z.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/posts\/1000","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/comments?post=1000"}],"version-history":[{"count":0,"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/posts\/1000\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/media\/1002"}],"wp:attachment":[{"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/media?parent=1000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/categories?post=1000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/tags?post=1000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}