{"id":23479,"date":"2025-03-12T13:25:04","date_gmt":"2025-03-12T07:55:04","guid":{"rendered":"https:\/\/open.money\/blog\/?p=23479"},"modified":"2025-07-08T17:57:26","modified_gmt":"2025-07-08T12:27:26","slug":"gst-interest-calculator","status":"publish","type":"post","link":"https:\/\/open.money\/blog\/gst-interest-calculator\/","title":{"rendered":"GST Interest &#038; Late Fees Calculator"},"content":{"rendered":"\n<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.gst.gov.in\/\" target=\"_blank\" rel=\"noopener\">Goods and Services Tax (GST)<\/a> compliance is crucial for businesses in India. While timely GST payments keep businesses compliant, any delay can result in penalties and interest charges. The tax department imposes late fees and interest when a business fails to file a GST return or pay tax liability on time. Hence, understanding these aspects is vital for businesses to avoid unnecessary costs and stay compliant.<\/span><\/p>\n\n\n\n<p>Calculate interest on delayed GST payments with our easy-to-use&nbsp; GST Interest Calculator.<\/p>\n\n\n<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/>\r\n  <title>GST Interest Calculator<\/title>\r\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\" \/>\r\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;600;700&display=swap\" rel=\"stylesheet\" \/>\r\n  <style>\r\n    body {\r\n      font-family: 'Inter', sans-serif;\r\n      background: #f6f9fc;\r\n      margin: 0;\r\n      padding: 20px;\r\n      color: #333;\r\n    }\r\n    .calculator {\r\n      background: #fff;\r\n      border-radius: 12px;\r\n      max-width: 600px;\r\n      margin: 40px auto;\r\n      padding: 30px 40px;\r\n      box-shadow: 0 4px 12px rgba(0,0,0,0.05);\r\n    }\r\n    h2 {\r\n      text-align: center;\r\n      color: #66359E;\r\n      margin-bottom: 25px;\r\n      font-weight: 700;\r\n      font-size: 1.8rem;\r\n    }\r\n    .section-heading {\r\n      font-weight: 600;\r\n      color: #66359E;\r\n      margin-top: 20px;\r\n      display: block;\r\n    }\r\n    .gst-heading {\r\n      margin-top: 20px;\r\n      margin-bottom: 20px;\r\n    }\r\n    .required {\r\n      color: red;\r\n      margin-left: 3px;\r\n    }\r\n    select,\r\n    input[type=\"text\"],\r\n    input[type=\"date\"] {\r\n      width: 100%;\r\n      padding: 8px 10px;\r\n      margin-top: 5px;\r\n      border: 1px solid #d1d5db;\r\n      border-radius: 6px;\r\n      font-size: 0.9rem;\r\n      outline: none;\r\n      transition: border-color 0.2s;\r\n      text-align: left;\r\n    }\r\n    select:focus,\r\n    input[type=\"text\"]:focus,\r\n    input[type=\"date\"]:focus {\r\n      border-color: #66359E;\r\n    }\r\n    .narrow-section {\r\n      max-width: 300px;\r\n      margin-left: 0;\r\n      text-align: left;\r\n    }\r\n    .vertical-section {\r\n      display: flex;\r\n      flex-direction: column;\r\n      gap: 15px;\r\n      margin-top: 15px;\r\n      text-align: left;\r\n    }\r\n    .gst-input-table {\r\n      width: 100%;\r\n      border-collapse: collapse;\r\n      margin-top: 15px;\r\n    }\r\n    .gst-input-table td {\r\n      padding: 8px;\r\n      vertical-align: middle;\r\n    }\r\n    .gst-input-table td.label {\r\n      width: 40%;\r\n      font-weight: 600;\r\n      color: #66359E;\r\n    }\r\n    .gst-input-table td.input {\r\n      width: 60%;\r\n    }\r\n    .gst-input-table input {\r\n      width: 100%;\r\n      padding: 8px 10px;\r\n      border: 1px solid #d1d5db;\r\n      border-radius: 6px;\r\n      font-size: 0.9rem;\r\n      text-align: left;\r\n    }\r\n    .gst-input-table input:focus {\r\n      border-color: #66359E;\r\n    }\r\n    #sgst {\r\n      background: #f0f0f0;\r\n    }\r\n    .calculator button {\r\n      background: #66359E;\r\n      border: none;\r\n      color: #fff;\r\n      padding: 12px;\r\n      margin-top: 30px;\r\n      margin-bottom: 20px;\r\n      border-radius: 6px;\r\n      cursor: pointer;\r\n      font-size: 1rem;\r\n      width: 60%;\r\n      display: block;\r\n      margin-left: auto;\r\n      margin-right: auto;\r\n      transition: background 0.2s;\r\n    }\r\n    .calculator button:hover {\r\n      background: #582d8a;\r\n    }\r\n    \/* Custom tooltip styling with fixed rectangle *\/\r\n    .tooltip {\r\n      display: inline-block;\r\n      background: #66359E;\r\n      color: #fff;\r\n      border-radius: 50%;\r\n      width: 14px;\r\n      height: 14px;\r\n      text-align: center;\r\n      line-height: 14px;\r\n      font-size: 10px;\r\n      margin-left: 5px;\r\n      cursor: help;\r\n      position: relative;\r\n    }\r\n    .tooltip:hover::after {\r\n      content: attr(data-tooltip);\r\n      position: absolute;\r\n      top: 50%;\r\n      left: 105%;\r\n      transform: translateY(-50%);\r\n      background: #66359E;\r\n      color: #fff;\r\n      padding: 4px 8px;\r\n      border-radius: 4px;\r\n      white-space: normal;\r\n      font-size: 10px;\r\n      z-index: 10;\r\n      width: 220px;\r\n      text-align: center;\r\n    }\r\n    \/* Header table for key dates with soft borders *\/\r\n    .result-header-table {\r\n      width: 100%;\r\n      border-collapse: collapse;\r\n      margin-bottom: 20px;\r\n      border: 1px solid #ddd;\r\n      border-radius: 8px;\r\n      overflow: hidden;\r\n    }\r\n    .result-header-table td {\r\n      padding: 8px;\r\n      font-size: 1rem;\r\n      color: #333;\r\n      border-bottom: 1px solid #ddd;\r\n    }\r\n    .result-header-table tr:last-child td {\r\n      border-bottom: none;\r\n    }\r\n    .result-header-table td.label {\r\n      font-weight: 600;\r\n      width: 40%;\r\n    }\r\n    \/* Table styling for GST\/Interest breakdown *\/\r\n    .result-table {\r\n      width: 100%;\r\n      border-collapse: collapse;\r\n      font-size: 0.95rem;\r\n    }\r\n    .result-table th,\r\n    .result-table td {\r\n      padding: 12px;\r\n      text-align: left;\r\n      border-top: 1px solid #e5e7eb;\r\n    }\r\n    .result-table th {\r\n      background: #f3f4f6;\r\n      font-weight: 600;\r\n    }\r\n    .result-table .highlight {\r\n      background-color: #eef2ff;\r\n      font-weight: 700;\r\n    }\r\n    \/* Mildly highlight the output section *\/\r\n    #result {\r\n      background: #f9f9ff;\r\n      border: 1px solid #ddd;\r\n      border-radius: 8px;\r\n      padding: 15px;\r\n      margin-top: 20px;\r\n      display: none;\r\n    }\r\n    .disclaimer {\r\n      font-size: 0.85rem;\r\n      color: #777;\r\n      margin-top: 40px;\r\n      line-height: 1.5;\r\n      border-top: 1px solid #e5e7eb;\r\n      padding-top: 15px;\r\n      clear: both;\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <div class=\"calculator\">\r\n    <h2>GST Interest Calculator<\/h2>\r\n    \r\n    <!-- Taxpayer Type and Financial Year -->\r\n    <label class=\"section-heading\" for=\"taxpayerType\">Select Taxpayer Type <span class=\"required\">*<\/span><\/label>\r\n    <select id=\"taxpayerType\" onchange=\"updatePeriodSelection(); updateGSTTooltipForQRMP();\">\r\n      <option value=\"regular\">Regular Taxpayers (Monthly Filers)<\/option>\r\n      <option value=\"qrmp\">QRMP Taxpayers<\/option>\r\n      <option value=\"composition\">Composition Scheme Taxpayers<\/option>\r\n    <\/select>\r\n    <label class=\"section-heading\" for=\"fy\">Select Financial Year <span class=\"required\">*<\/span><\/label>\r\n    <select id=\"fy\" onchange=\"updatePeriodSelection();\">\r\n      <option value=\"2024-25\">FY 2024\u201325<\/option>\r\n      <option value=\"2025-26\">FY 2025\u201326<\/option>\r\n    <\/select>\r\n\r\n    <!-- Period Selection -->\r\n    <div id=\"periodSelection\"><\/div>\r\n\r\n    <!-- Date Section -->\r\n    <div class=\"narrow-section\">\r\n      <div class=\"vertical-section\">\r\n        <div class=\"vertical-field\">\r\n          <label class=\"section-heading\" for=\"dueDate\">Original Due Date<\/label>\r\n          <input type=\"text\" id=\"dueDate\" readonly \/>\r\n        <\/div>\r\n        <div class=\"vertical-field\">\r\n          <label class=\"section-heading\" for=\"revisedDueDate\">Revised Due Date<\/label>\r\n          <input type=\"date\" id=\"revisedDueDate\" \/>\r\n        <\/div>\r\n        <div class=\"vertical-field\">\r\n          <label class=\"section-heading\" for=\"paymentDate\">Payment Date <span class=\"required\">*<\/span><\/label>\r\n          <input type=\"date\" id=\"paymentDate\" \/>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- GST Section -->\r\n    <label class=\"section-heading gst-heading\">GST Payable after ITC <span class=\"required\">*<\/span>\r\n      <span id=\"gstTooltip\"><\/span>\r\n    <\/label>\r\n    <div class=\"narrow-section\">\r\n      <table class=\"gst-input-table\">\r\n        <tr>\r\n          <td class=\"label\">CGST (\u20b9)<\/td>\r\n          <td class=\"input\">\r\n            <input type=\"text\" id=\"cgst\" placeholder=\"Enter CGST\" oninput=\"this.value = formatIndianValue(this.value); syncSGST();\" \/>\r\n          <\/td>\r\n        <\/tr>\r\n        <tr>\r\n          <td class=\"label\">SGST (\u20b9)<\/td>\r\n          <td class=\"input\">\r\n            <input type=\"text\" id=\"sgst\" placeholder=\"Auto-filled from CGST\" readonly \/>\r\n          <\/td>\r\n        <\/tr>\r\n        <tr>\r\n          <td class=\"label\">IGST (\u20b9)<\/td>\r\n          <td class=\"input\">\r\n            <input type=\"text\" id=\"igst\" placeholder=\"Enter IGST\" oninput=\"this.value = formatIndianValue(this.value);\" \/>\r\n          <\/td>\r\n        <\/tr>\r\n        <tr>\r\n          <td class=\"label\">Cess (\u20b9)<\/td>\r\n          <td class=\"input\">\r\n            <input type=\"text\" id=\"cess\" placeholder=\"Enter Cess\" oninput=\"this.value = formatIndianValue(this.value);\" \/>\r\n          <\/td>\r\n        <\/tr>\r\n      <\/table>\r\n    <\/div>\r\n\r\n    <button onclick=\"calculateInterest()\">Calculate Interest<\/button>\r\n\r\n    <!-- Output Section (initially hidden) -->\r\n    <div id=\"result\"><\/div>\r\n    \r\n    <!-- Note for QRMP (visible only when QRMP is selected) -->\r\n    <div id=\"qrmpNote\" style=\"display: none; margin-top: 20px; padding: 10px; background: #fff; border: 1px solid #ddd; border-radius: 8px;\">\r\n      <strong>Note:<\/strong><br><br>\r\n      <strong>Category X<\/strong><br>\r\n      <strong>States:<\/strong> Chhattisgarh, Madhya Pradesh, Gujarat, Maharashtra, Karnataka, Goa, Kerala, Tamil Nadu, Telangana, Andhra Pradesh.<br>\r\n      <strong>Union Territories:<\/strong> Daman and Diu, Dadra and Nagar Haveli, Puducherry, Andaman and Nicobar Islands, Lakshadweep.<br><br>\r\n      <strong>Category Y<\/strong><br>\r\n      <strong>States:<\/strong> Himachal Pradesh, Punjab, Uttarakhand, Haryana, Rajasthan, Uttar Pradesh, Bihar, Sikkim, Arunachal Pradesh, Nagaland, Manipur, Mizoram, Tripura, Meghalaya, Assam, West Bengal, Jharkhand, Odisha.<br>\r\n      <strong>Union Territories:<\/strong> Jammu and Kashmir, Ladakh, Chandigarh, New Delhi.\r\n    <\/div>\r\n\r\n    <div class=\"disclaimer\">\r\n      Disclaimer: This calculator is provided for informational purposes only. The actual interest liability may vary based on specific circumstances and changes in GST regulations. Please consult with a qualified tax professional for accurate advice tailored to your situation. The calculation is based on simple interest at 18% per annum as per Section 50 of the CGST Act, 2017.\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    \/\/ Format a number in Indian style (no decimals)\r\n    function formatIndian(num) {\r\n      return num.toLocaleString(\"en-IN\", { maximumFractionDigits: 0 });\r\n    }\r\n    \r\n    \/\/ Live formatting for GST inputs\r\n    function formatIndianValue(val) {\r\n      if (!val) return \"\";\r\n      let num = parseInt(val.replace(\/,\/g, \"\"), 10);\r\n      if (isNaN(num)) return \"\";\r\n      return formatIndian(num);\r\n    }\r\n    \r\n    \/\/ Mirror CGST value into SGST\r\n    function syncSGST() {\r\n      const cgstVal = document.getElementById(\"cgst\").value;\r\n      document.getElementById(\"sgst\").value = formatIndianValue(cgstVal);\r\n    }\r\n    \r\n    \/\/ Return financial months for the selected financial year (April to March)\r\n    function getFinancialMonths(finYear) {\r\n      return [\r\n        { value: 4, label: \"April\" },\r\n        { value: 5, label: \"May\" },\r\n        { value: 6, label: \"June\" },\r\n        { value: 7, label: \"July\" },\r\n        { value: 8, label: \"August\" },\r\n        { value: 9, label: \"September\" },\r\n        { value: 10, label: \"October\" },\r\n        { value: 11, label: \"November\" },\r\n        { value: 12, label: \"December\" },\r\n        { value: 1, label: \"January\" },\r\n        { value: 2, label: \"February\" },\r\n        { value: 3, label: \"March\" }\r\n      ];\r\n    }\r\n    \r\n    \/\/ Return financial quarters for the selected financial year\r\n    function getFinancialQuarters(finYear) {\r\n      return [\r\n        { value: \"Q1\", label: \"Q1 (April\u2013June)\" },\r\n        { value: \"Q2\", label: \"Q2 (July\u2013September)\" },\r\n        { value: \"Q3\", label: \"Q3 (October\u2013December)\" },\r\n        { value: \"Q4\", label: \"Q4 (January\u2013March)\" }\r\n      ];\r\n    }\r\n    \r\n    \/\/ Update period selection\r\n    function updatePeriodSelection() {\r\n      const finYear = document.getElementById(\"fy\").value;\r\n      const taxpayerType = document.getElementById(\"taxpayerType\").value;\r\n      const periodDiv = document.getElementById(\"periodSelection\");\r\n      periodDiv.innerHTML = \"\";\r\n      document.getElementById(\"dueDate\").value = \"\";\r\n      \r\n      \/\/ Hide QRMP note by default\r\n      document.getElementById(\"qrmpNote\").style.display = \"none\";\r\n      \r\n      if (taxpayerType === \"regular\") {\r\n        const months = getFinancialMonths(finYear);\r\n        let html = `<label class=\"section-heading\" for=\"period\">Select Tax Period <span class=\"required\">*<\/span><\/label>\r\n                    <select id=\"period\" onchange=\"updateDueDate()\">\r\n                      ${months.map(m => {\r\n                        let year = getCalendarYear(finYear, m.value);\r\n                        return `<option value=\"${m.value}\">${m.label} ${year}<\/option>`;\r\n                      }).join(\"\")}\r\n                    <\/select>`;\r\n        periodDiv.innerHTML = html;\r\n        updateDueDate();\r\n      } else if (taxpayerType === \"qrmp\") {\r\n        let html = `<div id=\"qrmpOptions\"><\/div>`;\r\n        periodDiv.innerHTML = html;\r\n        updateQRMPOptions();\r\n        \/\/ Show the QRMP note\r\n        document.getElementById(\"qrmpNote\").style.display = \"block\";\r\n      } else if (taxpayerType === \"composition\") {\r\n        let html = `<label class=\"section-heading\" for=\"compositionQuarter\">Select Financial Quarter <span class=\"required\">*<\/span><\/label>\r\n                    <select id=\"compositionQuarter\" onchange=\"updateDueDate()\">\r\n                      ${getFinancialQuarters(finYear).map(q => `<option value=\"${q.value}\">${q.label}<\/option>`).join(\"\")}\r\n                    <\/select>`;\r\n        periodDiv.innerHTML = html;\r\n        updateDueDate();\r\n      }\r\n    }\r\n    \r\n    \/\/ Update QRMP options (monthly payments) including state category at the top\r\n    function updateQRMPOptions() {\r\n      const finYear = document.getElementById(\"fy\").value;\r\n      const quarters = getFinancialQuarters(finYear);\r\n      let html = `\r\n        <label class=\"section-heading\" for=\"stateCategory\">Select State Category (affects due date) <span class=\"required\">*<\/span>\r\n          <span class=\"tooltip\" data-tooltip=\"For state categorization details, please review the note below.\">i<\/span>\r\n        <\/label>\r\n        <select id=\"stateCategory\" onchange=\"updateDueDate()\">\r\n          <option value=\"22\">Category X<\/option>\r\n          <option value=\"24\">Category Y<\/option>\r\n        <\/select>\r\n        <label class=\"section-heading\" for=\"qrmpQuarter\">Select Financial Quarter <span class=\"required\">*<\/span><\/label>\r\n        <select id=\"qrmpQuarter\" onchange=\"updateQRMPMonthOptions(); updateDueDate(); updateGSTTooltipForQRMP();\">\r\n          ${quarters.map(q => `<option value=\"${q.value}\">${q.label}<\/option>`).join(\"\")}\r\n        <\/select>\r\n        <label class=\"section-heading\" for=\"qrmpMonth\">Select Month within Quarter <span class=\"required\">*<\/span><\/label>\r\n        <select id=\"qrmpMonth\" onchange=\"updateDueDate(); updateGSTTooltipForQRMP();\">\r\n          <option value=\"1\">Month 1<\/option>\r\n          <option value=\"2\">Month 2<\/option>\r\n          <option value=\"3\">Month 3 (Quarter End)<\/option>\r\n        <\/select>\r\n      `;\r\n      document.getElementById(\"qrmpOptions\").innerHTML = html;\r\n      updateQRMPMonthOptions();\r\n      updateDueDate();\r\n      updateGSTTooltipForQRMP();\r\n    }\r\n    \r\n    \/\/ Update options for month within quarter to include month name and year\r\n    function updateQRMPMonthOptions() {\r\n      const finYear = document.getElementById(\"fy\").value;\r\n      const quarter = document.getElementById(\"qrmpQuarter\").value;\r\n      let startMonth;\r\n      if (quarter === \"Q1\") startMonth = 4;\r\n      else if (quarter === \"Q2\") startMonth = 7;\r\n      else if (quarter === \"Q3\") startMonth = 10;\r\n      else if (quarter === \"Q4\") startMonth = 1;\r\n      \r\n      const monthSelect = document.getElementById(\"qrmpMonth\");\r\n      const monthNames = [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\r\n                           \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ];\r\n      \r\n      for (let i = 0; i < monthSelect.options.length; i++) {\r\n        let monthNumber = startMonth + i;\r\n        if (monthNumber > 12) monthNumber -= 12;\r\n        const year = getCalendarYear(finYear, monthNumber);\r\n        let monthName = monthNames[monthNumber - 1];\r\n        if (i === 2) {\r\n          monthSelect.options[i].text = `Month ${i+1} (${monthName} ${year} - Quarter End)`;\r\n        } else {\r\n          monthSelect.options[i].text = `Month ${i+1} (${monthName} ${year})`;\r\n        }\r\n      }\r\n    }\r\n    \r\n    \/\/ Determine calendar year for a given financial month\r\n    function getCalendarYear(finYear, month) {\r\n      const parts = finYear.split(\"-\");\r\n      const startYear = parseInt(parts[0]);\r\n      let endYear = parseInt(parts[1]);\r\n      if (endYear < 100) {\r\n        endYear = Math.floor(startYear \/ 100) * 100 + endYear;\r\n        if (endYear < startYear) {\r\n          endYear += 100;\r\n        }\r\n      }\r\n      return (month >= 4 && month <= 12) ? startYear : endYear;\r\n    }\r\n    \r\n    \/\/ Update Due Date based on selections and set minimum revised due date to one day after Original Due Date.\r\n    function updateDueDate() {\r\n      const finYear = document.getElementById(\"fy\").value;\r\n      const taxpayerType = document.getElementById(\"taxpayerType\").value;\r\n      let dueDate;\r\n      \r\n      if (taxpayerType === \"regular\") {\r\n        const periodSelect = document.getElementById(\"period\");\r\n        const selectedMonth = parseInt(periodSelect.value);\r\n        const calYear = getCalendarYear(finYear, selectedMonth);\r\n        let nextMonth = selectedMonth + 1;\r\n        let nextYear = calYear;\r\n        if (nextMonth > 12) {\r\n          nextMonth = 1;\r\n          nextYear = getCalendarYear(finYear, nextMonth);\r\n        }\r\n        dueDate = new Date(nextYear, nextMonth - 1, 20);\r\n      } else if (taxpayerType === \"qrmp\") {\r\n        const quarterSelect = document.getElementById(\"qrmpQuarter\");\r\n        const quarter = quarterSelect.value;\r\n        let baseMonth;\r\n        if (quarter === \"Q1\") baseMonth = 6;\r\n        else if (quarter === \"Q2\") baseMonth = 9;\r\n        else if (quarter === \"Q3\") baseMonth = 12;\r\n        else if (quarter === \"Q4\") baseMonth = 3;\r\n        \r\n        const pos = parseInt(document.getElementById(\"qrmpMonth\").value);\r\n        let startMonth;\r\n        if (quarter === \"Q1\") startMonth = 4;\r\n        else if (quarter === \"Q2\") startMonth = 7;\r\n        else if (quarter === \"Q3\") startMonth = 10;\r\n        else if (quarter === \"Q4\") startMonth = 1;\r\n        let taxMonth = startMonth + pos - 1;\r\n        let calYear = getCalendarYear(finYear, taxMonth);\r\n        if (taxMonth > 12) {\r\n          taxMonth -= 12;\r\n          calYear = getCalendarYear(finYear, taxMonth);\r\n        }\r\n        if (pos === 1 || pos === 2) {\r\n          let nextMonth = taxMonth + 1;\r\n          let nextYear = calYear;\r\n          if (nextMonth > 12) {\r\n            nextMonth = 1;\r\n            nextYear = getCalendarYear(finYear, nextMonth);\r\n          }\r\n          dueDate = new Date(nextYear, nextMonth - 1, 25);\r\n        } else {\r\n          let nextMonth = taxMonth + 1;\r\n          let nextYear = calYear;\r\n          if (nextMonth > 12) {\r\n            nextMonth = 1;\r\n            nextYear = getCalendarYear(finYear, nextMonth);\r\n          }\r\n          const day = parseInt(document.getElementById(\"stateCategory\").value);\r\n          dueDate = new Date(nextYear, nextMonth - 1, day);\r\n        }\r\n      } else if (taxpayerType === \"composition\") {\r\n        const quarterSelect = document.getElementById(\"compositionQuarter\");\r\n        const quarter = quarterSelect.value;\r\n        const parts = finYear.split(\"-\");\r\n        const startYear = parseInt(parts[0]);\r\n        let endYear = parseInt(parts[1]);\r\n        if (endYear < 100) {\r\n          endYear = Math.floor(startYear \/ 100) * 100 + endYear;\r\n          if (endYear < startYear) {\r\n            endYear += 100;\r\n          }\r\n        }\r\n        let dueMonth, dueYear;\r\n        if (quarter === \"Q1\") {\r\n          dueMonth = 7;\r\n          dueYear = startYear;\r\n        } else if (quarter === \"Q2\") {\r\n          dueMonth = 10;\r\n          dueYear = startYear;\r\n        } else if (quarter === \"Q3\") {\r\n          dueMonth = 1;\r\n          dueYear = endYear;\r\n        } else if (quarter === \"Q4\") {\r\n          dueMonth = 4;\r\n          dueYear = endYear;\r\n        }\r\n        dueDate = new Date(dueYear, dueMonth - 1, 18);\r\n      }\r\n      const dd = String(dueDate.getDate()).padStart(2, \"0\");\r\n      const mm = String(dueDate.getMonth() + 1).padStart(2, \"0\");\r\n      const yyyy = dueDate.getFullYear();\r\n      document.getElementById(\"dueDate\").value = `${dd}\/${mm}\/${yyyy}`;\r\n      \r\n      \/\/ Set the minimum for revised due date to one day after the Original Due Date.\r\n      let minRevised = new Date(dueDate.getTime() + 24 * 60 * 60 * 1000);\r\n      let minDd = String(minRevised.getDate()).padStart(2, \"0\");\r\n      let minMm = String(minRevised.getMonth() + 1).padStart(2, \"0\");\r\n      let minYyyy = minRevised.getFullYear();\r\n      document.getElementById(\"revisedDueDate\").setAttribute(\"min\", `${minYyyy}-${minMm}-${minDd}`);\r\n    }\r\n    \r\n    \/\/ Set Payment Date default to today.\r\n    function setDefaultPaymentDate() {\r\n      const today = new Date();\r\n      const yyyy = today.getFullYear();\r\n      const mm = String(today.getMonth() + 1).padStart(2, \"0\");\r\n      const dd = String(today.getDate()).padStart(2, \"0\");\r\n      document.getElementById(\"paymentDate\").value = `${yyyy}-${mm}-${dd}`;\r\n    }\r\n    \r\n    \/\/ Update GST tooltip for QRMP if Month 3 (Quarter End) is selected.\r\n    function updateGSTTooltipForQRMP() {\r\n      const taxpayerType = document.getElementById(\"taxpayerType\").value;\r\n      const gstTooltipElem = document.getElementById(\"gstTooltip\");\r\n      if (taxpayerType === \"qrmp\") {\r\n        const qrmpMonthElem = document.getElementById(\"qrmpMonth\");\r\n        if (qrmpMonthElem && qrmpMonthElem.value === \"3\") {\r\n          gstTooltipElem.innerHTML = '<span class=\"tooltip\" data-tooltip=\"Enter GST payable after accounting for remittances for the previous months of the quarter and available ITC.\">i<\/span>';\r\n        } else {\r\n          gstTooltipElem.innerHTML = \"\";\r\n        }\r\n      } else {\r\n        gstTooltipElem.innerHTML = \"\";\r\n      }\r\n    }\r\n    \r\n    \/\/ Calculate interest and display result.\r\n    function calculateInterest() {\r\n      \/\/ Validate revised due date: must be after the Original Due Date.\r\n      let revisedValue = document.getElementById(\"revisedDueDate\").value;\r\n      if (revisedValue) {\r\n        let originalParts = document.getElementById(\"dueDate\").value.split(\"\/\");\r\n        let originalDue = new Date(originalParts[2] + \"-\" + originalParts[1] + \"-\" + originalParts[0]);\r\n        let revisedDue = new Date(revisedValue);\r\n        if (revisedDue <= originalDue) {\r\n          alert(\"Revised Due Date must be after Original Due Date.\");\r\n          return;\r\n        }\r\n      }\r\n      \r\n      if (\r\n        !document.getElementById(\"cgst\").value.trim() &&\r\n        !document.getElementById(\"igst\").value.trim() &&\r\n        !document.getElementById(\"cess\").value.trim() &&\r\n        !document.getElementById(\"sgst\").value.trim()\r\n      ) {\r\n        alert(\"Please enter at least one GST payable value.\");\r\n        return;\r\n      }\r\n      \r\n      const finYear = document.getElementById(\"fy\").value;\r\n      let dueDate;\r\n      \/\/ Use revised due date if provided, else use original due date.\r\n      if (revisedValue) {\r\n        dueDate = new Date(revisedValue);\r\n      } else {\r\n        let parts = document.getElementById(\"dueDate\").value.split(\"\/\");\r\n        if (parts.length !== 3) {\r\n          alert(\"Original Due Date not set.\");\r\n          return;\r\n        }\r\n        dueDate = new Date(parts[2] + \"-\" + parts[1] + \"-\" + parts[0]);\r\n      }\r\n      \r\n      const paymentDateStr = document.getElementById(\"paymentDate\").value;\r\n      if (!paymentDateStr) {\r\n        alert(\"Please enter the Payment Date.\");\r\n        return;\r\n      }\r\n      const paymentDate = new Date(paymentDateStr);\r\n      \r\n      \/\/ Interest applies only if payment is made after the applicable due date.\r\n      let daysLate = paymentDate <= dueDate ? 0 : Math.ceil((paymentDate - dueDate) \/ (1000 * 60 * 60 * 24));\r\n      \r\n      const cgst = parseInt(document.getElementById(\"cgst\").value.replace(\/,\/g, \"\"), 10) || 0;\r\n      const sgst = parseInt(document.getElementById(\"sgst\").value.replace(\/,\/g, \"\"), 10) || 0;\r\n      const igst = parseInt(document.getElementById(\"igst\").value.replace(\/,\/g, \"\"), 10) || 0;\r\n      const cess = parseInt(document.getElementById(\"cess\").value.replace(\/,\/g, \"\"), 10) || 0;\r\n      const totalGST = cgst + sgst + igst + cess;\r\n      \r\n      let interestCGST = Math.round(cgst * 0.18 * (daysLate \/ 365));\r\n      let interestSGST = Math.round(sgst * 0.18 * (daysLate \/ 365));\r\n      let interestIGST = Math.round(igst * 0.18 * (daysLate \/ 365));\r\n      let interestCess = Math.round(cess * 0.18 * (daysLate \/ 365));\r\n      let totalInterest = interestCGST + interestSGST + interestIGST + interestCess;\r\n      \r\n      \/\/ Overall totals include rupee symbol; breakdown numbers remain plain.\r\n      const formattedTotalGST = \"\u20b9\" + formatIndian(totalGST);\r\n      const formattedTotalInterest = \"\u20b9\" + formatIndian(totalInterest);\r\n      \r\n      const formattedCGST = formatIndian(cgst);\r\n      const formattedSGST = formatIndian(sgst);\r\n      const formattedIGST = formatIndian(igst);\r\n      const formattedCess = formatIndian(cess);\r\n      \r\n      const formattedInterestCGST = formatIndian(interestCGST);\r\n      const formattedInterestSGST = formatIndian(interestSGST);\r\n      const formattedInterestIGST = formatIndian(interestIGST);\r\n      const formattedInterestCess = formatIndian(interestCess);\r\n      \r\n      function formatDisplay(date) {\r\n        const d = String(date.getDate()).padStart(2, \"0\");\r\n        const m = String(date.getMonth() + 1).padStart(2, \"0\");\r\n        const y = date.getFullYear();\r\n        return `${d}\/${m}\/${y}`;\r\n      }\r\n      \r\n      \/\/ Build header table for key dates.\r\n      let headerHTML = `\r\n        <table class=\"result-header-table\">\r\n          <tr>\r\n            <td class=\"label\"><strong>Original Due Date<\/strong><\/td>\r\n            <td>${document.getElementById(\"dueDate\").value}<\/td>\r\n          <\/tr>\r\n      `;\r\n      if (revisedValue) {\r\n        headerHTML += `<tr>\r\n            <td class=\"label\"><strong>Revised Due Date<\/strong><\/td>\r\n            <td>${formatDisplay(new Date(revisedValue))}<\/td>\r\n          <\/tr>`;\r\n      }\r\n      headerHTML += `\r\n          <tr>\r\n            <td class=\"label\"><strong>Payment Date<\/strong><\/td>\r\n            <td>${formatDisplay(paymentDate)}<\/td>\r\n          <\/tr>\r\n          <tr>\r\n            <td class=\"label\"><strong>Delay Period<\/strong><\/td>\r\n            <td>${daysLate} day(s)\r\n              <span class=\"tooltip\" data-tooltip=\"Delay period is calculated from the day after the applicable due date (or revised due date) until the payment date, as per GST norms.\">i<\/span>\r\n            <\/td>\r\n          <\/tr>\r\n          <tr>\r\n            <td class=\"label\"><strong>Interest Rate<\/strong><\/td>\r\n            <td>18% per annum<\/td>\r\n          <\/tr>\r\n        <\/table>\r\n      `;\r\n      \r\n      \/\/ Build result table for GST and Interest breakdown.\r\n      const tableHTML = `\r\n        <table class=\"result-table\">\r\n          <thead>\r\n            <tr>\r\n              <th><\/th>\r\n              <th>Total (\u20b9)<\/th>\r\n              <th>CGST<\/th>\r\n              <th>SGST<\/th>\r\n              <th>IGST<\/th>\r\n              <th>Cess<\/th>\r\n            <\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr>\r\n              <th>GST Payable (\u20b9)<\/th>\r\n              <td>${formattedTotalGST}<\/td>\r\n              <td>${formattedCGST}<\/td>\r\n              <td>${formattedSGST}<\/td>\r\n              <td>${formattedIGST}<\/td>\r\n              <td>${formattedCess}<\/td>\r\n            <\/tr>\r\n            <tr class=\"highlight\">\r\n              <th>Interest (\u20b9)<\/th>\r\n              <td>${formattedTotalInterest}<\/td>\r\n              <td>${formattedInterestCGST}<\/td>\r\n              <td>${formattedInterestSGST}<\/td>\r\n              <td>${formattedInterestIGST}<\/td>\r\n              <td>${formattedInterestCess}<\/td>\r\n            <\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      `;\r\n      \r\n      document.getElementById(\"result\").innerHTML = headerHTML + tableHTML;\r\n      document.getElementById(\"result\").style.display = \"block\";\r\n    }\r\n    \r\n    window.onload = function() {\r\n      setDefaultPaymentDate();\r\n      updatePeriodSelection();\r\n    }\r\n    \r\n    \/\/ Set Payment Date default to today.\r\n    function setDefaultPaymentDate() {\r\n      const today = new Date();\r\n      const yyyy = today.getFullYear();\r\n      const mm = String(today.getMonth() + 1).padStart(2, \"0\");\r\n      const dd = String(today.getDate()).padStart(2, \"0\");\r\n      document.getElementById(\"paymentDate\").value = `${yyyy}-${mm}-${dd}`;\r\n    }\r\n  <\/script>\r\n<\/body>\r\n<\/html>\r\n\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Taxpayer Due Dates Under GST<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">The <a href=\"https:\/\/open.money\/blog\/gst-calendar-2025\/\" target=\"_blank\" rel=\"noopener\">due dates for GST returns<\/a> vary depending on the taxpayer type and return form. Below is a summary of key return filing deadlines:<\/span><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><b>Return Form<\/b><\/td><td><b>Due Date<\/b><\/td><\/tr><tr><td><b>GSTR-1 (Monthly)<\/b><\/td><td><span style=\"font-weight: 400;\">11th of the next month<\/span><\/td><\/tr><tr><td><b>GSTR-1 (Quarterly)<\/b><\/td><td><span style=\"font-weight: 400;\">13th of the month succeeding the quarter<\/span><\/td><\/tr><tr><td><b>GSTR-3B (Monthly)<\/b><\/td><td><span style=\"font-weight: 400;\">20th of the next month<\/span><\/td><\/tr><tr><td><b>GSTR-3B (Quarterly)<\/b><\/td><td><span style=\"font-weight: 400;\">22nd or 24th of the month succeeding the quarter (QRMP Scheme)<\/span><\/td><\/tr><tr><td><b>CMP-08 (Quarterly)<\/b><\/td><td><span style=\"font-weight: 400;\">18th of the month succeeding the quarter<\/span><\/td><\/tr><tr><td><b>GSTR-4 (Annual)<\/b><\/td><td><span style=\"font-weight: 400;\">30th June of the next financial year<\/span><\/td><\/tr><tr><td><b>GSTR-5 (Monthly)<\/b><\/td><td><span style=\"font-weight: 400;\">13th of the next month<\/span><\/td><\/tr><tr><td><b>GSTR-5A (Monthly)<\/b><\/td><td><span style=\"font-weight: 400;\">20th of the next month<\/span><\/td><\/tr><tr><td><b>GSTR-6 (Monthly)<\/b><\/td><td><span style=\"font-weight: 400;\">13th of the next month<\/span><\/td><\/tr><tr><td><b>GSTR-7 (Monthly)<\/b><\/td><td><span style=\"font-weight: 400;\">10th of the next month<\/span><\/td><\/tr><tr><td><b>GSTR-8 (Monthly)<\/b><\/td><td><span style=\"font-weight: 400;\">10th of the next month<\/span><\/td><\/tr><tr><td><b>GSTR-9 (Annual)<\/b><\/td><td><span style=\"font-weight: 400;\">31st December of the next financial year<\/span><\/td><\/tr><tr><td><b>GSTR-9B (Annual)<\/b><\/td><td><span style=\"font-weight: 400;\">31st December of the next financial year<\/span><\/td><\/tr><tr><td><b>GSTR-9C (Annual)<\/b><\/td><td><span style=\"font-weight: 400;\">31st December of the next financial year<\/span><\/td><\/tr><tr><td><b>GSTR-10 (Final Return)<\/b><\/td><td><span style=\"font-weight: 400;\">Within three months of GST registration cancellation<\/span><\/td><\/tr><tr><td rowspan=\"2\"><b>ITC-04 (Annual\/Half-yearly)<\/b><\/td><td><span style=\"font-weight: 400;\">25th April of the next financial year (for AATO up to \u20b95 crore)<\/span><\/td><\/tr><tr><td><span style=\"font-weight: 400;\">25th October (Apr-Sep) &amp; 25th April (Oct-Mar) for AATO exceeding \u20b95 crore<\/span><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Interest on Late Payment of GST<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">Interest is applicable on delayed GST payments after reducing eligible input tax credit (ITC). The interest is charged when a taxpayer:<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><span style=\"font-weight: 400;\">Fails to pay GST liability by the due date.<\/span><\/li>\n\n\n\n<li><span style=\"font-weight: 400;\">Claims excess ITC.<\/span><\/li>\n\n\n\n<li><span style=\"font-weight: 400;\">Under-reports output tax liability.<\/span><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Interest Rates on Late GST Payments<\/span><\/h3>\n\n\n\n<p><span style=\"font-weight: 400;\">The interest rates on late GST payments are set by the Central Board of Indirect Taxes and Customs (CBIC) under the GST Act. The applicable interest rates are:<\/span><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><b>Reason for Interest Levy<\/b><\/td><td><b>Applicable Interest Rate<\/b><\/td><\/tr><tr><td><span style=\"font-weight: 400;\">Late payment of GST dues<\/span><\/td><td><span style=\"font-weight: 400;\">18% per annum<\/span><\/td><\/tr><tr><td><span style=\"font-weight: 400;\">Excess ITC claimed or excess reduction in output tax liability<\/span><\/td><td><span style=\"font-weight: 400;\">24% per annum<\/span><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Interest Under the QRMP Scheme<\/span><\/h3>\n\n\n\n<p><span style=\"font-weight: 400;\">For businesses under the Quarterly Return Monthly Payment (QRMP) scheme, interest is levied differently:<\/span><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Fixed Sum Method (FSM):<\/span><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><span style=\"font-weight: 400;\">No interest if tax is paid on time using the pre-determined amount (35% of the previous quarter&#8217;s tax or the exact tax paid in the last month of the previous quarter).<\/span><\/li>\n\n\n\n<li><span style=\"font-weight: 400;\">If payment is delayed beyond the 25th of the next month, interest at 18% per annum is applicable on the shortfall amount.<\/span><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Self-Assessment Method (SAM):<\/span><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><span style=\"font-weight: 400;\">Taxpayers who pay based on their actual tax liability must ensure timely payments.<\/span><\/li>\n\n\n\n<li><span style=\"font-weight: 400;\">If tax is not fully paid by the 22nd\/24th* of the month succeeding the quarter, interest at 18% per annum is applicable from the due date until payment.<\/span><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">QRMP Payment Due Dates and Interest Applicability<\/span><\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><b>Period<\/b><\/td><td><b>Due Date<\/b><\/td><td><b>Interest Applicability<\/b><\/td><\/tr><tr><td><span style=\"font-weight: 400;\">First two months of the quarter (Monthly Tax Payment)<\/span><\/td><td><span style=\"font-weight: 400;\">25th of the next month<\/span><\/td><td><span style=\"font-weight: 400;\">No interest if paid by due date. If delayed, interest at 18% per annum applies from the 26th.<\/span><\/td><\/tr><tr><td><span style=\"font-weight: 400;\">Third month of the quarter (Final Quarterly Payment)<\/span><\/td><td><span style=\"font-weight: 400;\">22nd\/24th* of the month succeeding the quarter<\/span><\/td><td><span style=\"font-weight: 400;\">Interest at 18% per annum applies if tax is not paid by the due date.<\/span><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><span style=\"font-weight: 400;\">Note:<\/span><span style=\"font-weight: 400;\"><br>\n<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><span style=\"font-weight: 400;\">QRMP Taxpayers who do not wish to make monthly payments can choose to pay the entire liability at the end of the quarter while filing GSTR-3B.<\/span><\/li>\n\n\n\n<li><span style=\"font-weight: 400;\">However, interest at 18% per annum will be charged on any unpaid tax from the due date of monthly payments (25th of the next month) until the final payment is made at the end of the quarter.<\/span><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Category X and Category Y States for QRMP*<\/span><\/h4>\n\n\n\n<p><span style=\"font-weight: 400;\">The QRMP scheme due dates (22nd or 24th of the next month) are based on the taxpayer&#8217;s state:<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b>Category X States\/UTs (22nd of the next month):<\/b>\n<ul class=\"wp-block-list\">\n<li><span style=\"font-weight: 400;\">Chhattisgarh, Madhya Pradesh, Gujarat, Maharashtra, Karnataka, Goa, Kerala, Tamil Nadu, Telangana, Andhra Pradesh<\/span><\/li>\n\n\n\n<li><span style=\"font-weight: 400;\">Union Territories: Daman and Diu, Dadra and Nagar Haveli, Puducherry, Andaman and Nicobar Islands, Lakshadweep<\/span><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><b>Category Y States\/UTs (24th of the next month):<\/b>\n<ul class=\"wp-block-list\">\n<li><span style=\"font-weight: 400;\">Himachal Pradesh, Punjab, Uttarakhand, Haryana, Rajasthan, Uttar Pradesh, Bihar, Sikkim, Arunachal Pradesh, Nagaland, Manipur, Mizoram, Tripura, Meghalaya, Assam, West Bengal, Jharkhand, Odisha<\/span><\/li>\n\n\n\n<li><span style=\"font-weight: 400;\">Union Territories: Jammu and Kashmir, Ladakh, Chandigarh, New Delhi<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Interest for Composition Taxpayers<\/span><\/h3>\n\n\n\n<p><span style=\"font-weight: 400;\">Composition taxpayers file their GST returns annually (GSTR-4) but must make quarterly tax payments using CMP-08. If the CMP-08 payment is delayed beyond the 18th of the next month after the quarter ends, interest at 18% per annum is applicable.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">How to Calculate Interest on GST Dues<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">Interest is calculated on the net tax liability that remains unpaid beyond the due date. The formula for interest calculation is:<\/span><\/p>\n\n\n\n<p><b>Interest = (Outstanding Tax Amount) \u00d7 (Interest Rate) \u00d7 (Number of Days Delay) \/ 365<\/b><\/p>\n\n\n\n<p><i><span style=\"font-weight: 400;\">Example Calculation<\/span><\/i><span style=\"font-weight: 400;\">:<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">A taxpayer has an outstanding GST liability of \u20b950,000 and delays payment by 30 days. The interest rate applicable is 18% per annum.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">Interest = (50,000 \u00d7 18 \u00d7 30) \/ 365<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">= \u20b9739.72<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">So, the taxpayer must pay \u20b950,739.72 to clear the GST dues.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Common Scenarios Leading to Interest Charges<\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Missed GST payment deadline<\/span><\/h3>\n\n\n\n<p><span style=\"font-weight: 400;\">The due date for GST payments is generally the 20th of the following month for regular taxpayers. If the payment is made after this date, interest is applicable.<\/span><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Incorrect ITC claim<\/span><\/h3>\n\n\n\n<p><span style=\"font-weight: 400;\">If a business claims more input tax credit than eligible, it must reverse the excess claim with 24% interest per annum from the date of utilization.<\/span><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Non-payment of GST under Reverse Charge Mechanism (RCM)<\/span><\/h3>\n\n\n\n<p><span style=\"font-weight: 400;\">If GST under RCM is not paid within the due date, interest applies at 18% per annum.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Late Fees Under GST<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">A late fee is a penalty charged for missing the GST return filing deadline. Late fees are applicable even if the return is a Nil return, meaning no sales or purchases occurred.<\/span><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><b>Late Fee for GSTR-3B and GSTR-1<\/b><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><b>Type of Return<\/b><\/td><td><b>Late Fee Per Day<\/b><\/td><td><b>Maximum Late Fee<\/b><\/td><\/tr><tr><td><b>GSTR-3B &amp; GSTR-1<\/b><span style=\"font-weight: 400;\"> (Regular Return)<\/span><\/td><td><span style=\"font-weight: 400;\">\u20b950 (\u20b925 CGST + \u20b925 SGST)<\/span><\/td><td><span style=\"font-weight: 400;\">\u20b910,000 (\u20b95,000 CGST + \u20b95,000 SGST)<\/span><\/td><\/tr><tr><td><b>GSTR-3B &amp; GSTR-1<\/b><span style=\"font-weight: 400;\"> (Nil Return)<\/span><\/td><td><span style=\"font-weight: 400;\">\u20b920 (\u20b910 CGST + \u20b910 SGST)<\/span><\/td><td><span style=\"font-weight: 400;\">\u20b9500 (\u20b9250 CGST + \u20b9250 SGST)<\/span><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><b>Late Fee for GSTR-9 (Annual Return)<\/b><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><b>Turnover<\/b><\/td><td><b>Late Fee Per Day<\/b><\/td><td><b>Maximum Late Fee<\/b><\/td><\/tr><tr><td><b>Up to \u20b95 crore<\/b><\/td><td><span style=\"font-weight: 400;\">\u20b950 (\u20b925 CGST + \u20b925 SGST)<\/span><\/td><td><span style=\"font-weight: 400;\">0.04% of turnover<\/span><\/td><\/tr><tr><td><b>\u20b95-20 crore<\/b><\/td><td><span style=\"font-weight: 400;\">\u20b9100 (\u20b950 CGST + \u20b950 SGST)<\/span><\/td><td><span style=\"font-weight: 400;\">0.04% of turnover<\/span><\/td><\/tr><tr><td><b>Above \u20b920 crore<\/b><\/td><td><span style=\"font-weight: 400;\">\u20b9200 (\u20b9100 CGST + \u20b9100 SGST)<\/span><\/td><td><span style=\"font-weight: 400;\">0.25% of turnover<\/span><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><span style=\"font-weight: 400;\">Late fees must be paid in cash and cannot be adjusted against the ITC balance.<\/span><\/p>\n\n\n\n<p><i><span style=\"font-weight: 400;\">Example<\/span><\/i><span style=\"font-weight: 400;\">:<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">A taxpayer files GSTR-3B on 23rd January 2025, whereas the due date was 20th January 2025 (3-day delay).<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">Late fee = \u20b950 \u00d7 3 = \u20b9150 (\u20b975 CGST + \u20b975 SGST)<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">For Nil returns: \u20b920 \u00d7 3 = \u20b960 (\u20b930 CGST + \u20b930 SGST)<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">How to Avoid Interest and Late Fees on GST Payments<\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b>Ensure timely GST payments<\/b><span style=\"font-weight: 400;\">: Businesses should enable reminders and maintain proper cash flow management to pay GST dues before the due date.<\/span><\/li>\n\n\n\n<li><b>Reconcile ITC regularly<\/b><span style=\"font-weight: 400;\">: Match ITC claims with GSTR-2B to ensure no excess credit is claimed.<\/span><\/li>\n\n\n\n<li><b>File GST returns on time<\/b><span style=\"font-weight: 400;\">: Use automated reminders and GST compliance tools to avoid late filing of GSTR-3B and other returns.<\/span><\/li>\n\n\n\n<li><b>Maintain proper records<\/b><span style=\"font-weight: 400;\">: Maintain accurate tax records to avoid tax mismatches and under-reporting of liability.<\/span><\/li>\n<\/ul>\n\n\n\n<p><span style=\"font-weight: 400;\">Interest and late fees on GST can impact business cash flow. Understanding GST due dates, interest rates, and penalties helps businesses maintain compliance and avoid financial strain.<\/span><\/p>\n\n\n\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"Goods and Services Tax (GST) compliance is crucial for businesses in India. While timely GST payments keep businesses&hellip;","protected":false},"author":66,"featured_media":23481,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_singular_sidebar":"","csco_page_header_type":"","csco_page_load_nextpost":"","footnotes":""},"categories":[1,517],"tags":[521,643,644],"class_list":{"0":"post-23479","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-announcements","8":"category-gst","9":"tag-gst","10":"tag-gst-interest","11":"tag-gst-late-fees","12":"cs-entry"},"_links":{"self":[{"href":"https:\/\/open.money\/blog\/wp-json\/wp\/v2\/posts\/23479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/open.money\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/open.money\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/open.money\/blog\/wp-json\/wp\/v2\/users\/66"}],"replies":[{"embeddable":true,"href":"https:\/\/open.money\/blog\/wp-json\/wp\/v2\/comments?post=23479"}],"version-history":[{"count":3,"href":"https:\/\/open.money\/blog\/wp-json\/wp\/v2\/posts\/23479\/revisions"}],"predecessor-version":[{"id":23948,"href":"https:\/\/open.money\/blog\/wp-json\/wp\/v2\/posts\/23479\/revisions\/23948"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/open.money\/blog\/wp-json\/wp\/v2\/media\/23481"}],"wp:attachment":[{"href":"https:\/\/open.money\/blog\/wp-json\/wp\/v2\/media?parent=23479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/open.money\/blog\/wp-json\/wp\/v2\/categories?post=23479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/open.money\/blog\/wp-json\/wp\/v2\/tags?post=23479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}