CESC Electricity Bill Calculator, Domestic, Commercial Per Unit Rate

Cesc Bill Calculator

Just enter your connected load and your per-unit consumption, then hit the calculate button. You’ll get your CESC electricity bill rate according to the 2025-26 tariff order. If you need commercial rates, just choose the commercial tariff option.

Total Energy Charges: INR 0

Fixed Charges Amount: INR 0

MVCA Charges Amount: INR 0

Electricity Duty Amount: INR 0

Meter Rent Amount: INR 0

Total Bill Amount: INR 0

Domestic Per Unit Rate:

Here’s how the charges break down step-by-step. For the first 1 to 25 units of electricity you use, you’ll pay ₹5.18 per unit. For the next 35 units, the rate goes up slightly to ₹5.69 per unit. When you move into the range of 61 to 100 units, you’ll be charged ₹6.70 per unit. From 101 to 150 units, the rate is ₹7.45 per unit. If your usage is between 151 and 300 units, you’ll pay ₹7.62 per unit. And for any usage above 301 units, the rate will be ₹9.21 per unit.

In addition to these per unit charges, there’s also a monthly fixed charge of ₹15 per kW and a meter rent of ₹15 per month. Plus, there’s a monthly variable cost of ₹0.29 per unit and a government duty charge of 10%. You can see an old bill example below for reference.

CESC Electricity Bill Calculator, Domestic, Commercial Per Unit Rate

Domestic Tariff Rates Breakdown:

  • From 1 to 25 units: ₹5.18 per unit.
  • From 26 to 60 units: ₹5.69 per unit.
  • From 61 to 100 units: ₹6.70 per unit.
  • From 101 to 150 units: ₹7.45 per unit.
  • From 151 to 300 units: ₹7.62 per unit.
  • Above 301 units: ₹9.21 per unit.

Additional Charges:

  • There is a connected load charge of ₹15 per kW per month.

HT Domestic Rates:

For high-tension (HT) domestic consumers, the electricity rates vary by season. During the summer season, the rate is ₹7.42 per unit. In the monsoon season, it’s slightly lower at ₹7.39 per unit, and in the winter season, it’s ₹7.36 per unit. This means the cost changes a little depending on the time of year.

Commercial Tariff:

For commercial consumers under CESC, the rates are structured in slabs based on how many units are used. For the first 60 units, you’ll pay ₹6.57 per unit. For the next 40 units (from 61 to 100), the rate is ₹7.24 per unit. For usage between 101 to 150 units, the rate is ₹7.93 per unit. Then, from 151 to 300 units, you’ll pay ₹8.49 per unit. For any consumption above 300 units, the rate will be ₹9.26 per unit.

Commercial Tariff:

  • For usage from 1 to 60 units, the rate is ₹6.57 per unit.
  • For the next slab, from 61 to 100 units, the rate is ₹7.24 per unit.
  • For usage between 101 to 150 units, the charge is ₹7.93 per unit.
  • From 151 to 300 units, the rate is ₹8.49 per unit.
  • For any usage above 301 units, the rate is ₹9.26 per unit.

Additionally, there’s a connected load charge of ₹24 per kW.

Government Schools:

For any government school, government-aided school, or government-sponsored school, the electricity rate is a flat ₹5.24 per unit for all units consumed.

Cottage Industries and Small Production Units:

For cottage industries, artisans, weavers, or small production-oriented establishments that do not use electricity as motive power, the rates are as follows:

  • For the first 100 units: ₹5.82 per unit
  • For the next 100 units: ₹7.01 per unit
  • For any units above 200: ₹8.46 per unit

Poultry, Agriculture, and Similar Units:

For units like poultry, duckery, horticulture, tissue culture, floriculture, herbal and medicinal farming, bio-diesel plants, and food processing units, the rates are structured as follows:

  • For the first 300 units: ₹7.06 per unit
  • For the next 300 units: ₹7.72 per unit
  • For the next 400 units: ₹8.07 per unit
  • For any units above 1000: ₹8.52 per unit

Industries (Urban) – Per Unit Rates

From UnitsTo UnitsPer Unit Rate (₹)Fixed Charges
15006.77
50120007.47
200135007.87₹50 per kW

3500 | Above | 8.07 | –
────────────────────────

────────────────────────
CESC Bill Calculation – 500 Units with 2 kW Demand

FromToRate (₹/Unit)UnitsCharges (₹)
1255.1825129.50
26605.6935199.15
611006.7040268.00
1011507.4550372.50
1512007.6250381.00
2013007.62100762.00
301Above9.212001842.00

Fixed Charges (2 kW) | 30
MVCA (0.29/Unit) | 145
Govt. Duty (10%) | 412.915
Meter Rent | 15

Total Electricity Charges: ₹4557.065

FAQs – CESC Electricity Tariff

What is the per-unit electricity rate for domestic customers under CESC?

Domestic rates are based on slab-wise unit consumption. The cost starts from ₹5.18 per unit and goes up to ₹9.21 per unit for high consumption above 301 units.

How does CESC calculate domestic bills?

Bills are calculated by multiplying units in each slab with their respective rate, plus adding fixed charges, meter rent, MVCA, and government duty.

How can I estimate my CESC bill myself?

You can enter your unit consumption in a CESC Bill Calculator to automatically calculate slab-wise charges, fixed charges, MVCA, duty, and the total bill amount.

Are there different tariffs for industries?

Yes. Industries (Urban) have slab-based tariffs ranging from ₹6.77 to ₹8.07 per unit, along with a ₹50 per kW fixed charge for higher categories.

How are HT Domestic customers charged?

How are HT Domestic customers charged?
HT Domestic tariffs vary by season:
Summer: ₹7.42 per unit
Monsoon: ₹7.39 per unit
Winter: ₹7.36 per unit

What are the commercial fixed charges?

Commercial consumers are required to pay ₹24 per kW of connected load.

What is the per-unit rate for commercial consumers in CESC?

What is the per-unit rate for commercial consumers in CESC?
Commercial users pay from ₹6.57 to ₹9.26 per unit, depending on the number of units consumed.

Is government duty included in CESC bills?

Yes, a 10% government electricity duty is applied to the total energy charges.

What is MVCA in CESC billing?

MVCA stands for Monthly Variable Cost Adjustment, charged at ₹0.29 per unit.

What are the fixed charges for domestic consumers?

What are the fixed charges for domestic consumers?
Domestic consumers must pay ₹15 per kW per month as connected load charge.

Scroll to Top
(function (window, document) { "use strict"; const selectors = { board: "[data-coupon-board]", card: "[data-coupon-card]", toggleBtn: ".coupon-toggle-btn", copyBtn: ".coupon-copy-btn", summarizeBtn: ".coupon-summarize-btn", ideasBtn: ".coupon-ideas-btn", summaryBox: ".coupon-summary-box", ideasBox: ".coupon-ideas-box", details: ".coupon-details", feedback: ".coupon-feedback", terms: ".coupon-desc-list li", title: ".coupon-title", dateEl: "#coupon-current-date" }; const config = Object.assign( { geminiApiKey: "", geminiModel: "gemini-2.5-flash-preview-09-2025" }, window.couponsConfig || {} ); document.addEventListener("DOMContentLoaded", init); document.addEventListener("click", handleClicks); function init() { updateCurrentDate(); } function updateCurrentDate() { const el = document.querySelector(selectors.dateEl); if (!el) return; const now = new Date(); const formatted = now.toLocaleDateString("en-IN", { day: "2-digit", month: "long", year: "numeric" }); el.textContent = `As of ${formatted}`; } function handleClicks(event) { const toggleBtn = event.target.closest(selectors.toggleBtn); if (toggleBtn) { event.preventDefault(); toggleDetails(toggleBtn); return; } const copyBtn = event.target.closest(selectors.copyBtn); if (copyBtn) { event.preventDefault(); handleCopy(copyBtn); return; } const summarizeBtn = event.target.closest(selectors.summarizeBtn); if (summarizeBtn) { event.preventDefault(); handleSummarize(summarizeBtn); return; } const ideasBtn = event.target.closest(selectors.ideasBtn); if (ideasBtn) { event.preventDefault(); handleIdeas(ideasBtn); } } function toggleDetails(btn) { const card = btn.closest(selectors.card); if (!card) return; const details = card.querySelector(selectors.details); if (!details) return; const isCollapsed = details.dataset.collapsed !== "false"; details.dataset.collapsed = isCollapsed ? "false" : "true"; details.setAttribute("aria-hidden", String(!isCollapsed)); btn.setAttribute("aria-expanded", String(isCollapsed)); btn.textContent = isCollapsed ? "Hide Details" : "Show Details"; } async function handleCopy(btn) { const card = btn.closest(selectors.card); if (!card) return; const codeBox = btn.closest(".coupon-code-box"); if (!codeBox) return; const code = codeBox.dataset.couponCode; const autoOpen = codeBox.dataset.autoOpen === "true"; const dealUrl = codeBox.dataset.dealUrl || ""; const feedbackEl = codeBox.querySelector(selectors.feedback); if (!code) return; if (code === "NOCODE") { openDealUrl(dealUrl); showFeedback(feedbackEl, "Deal opened in a new tab."); return; } try { await copyToClipboard(code); showFeedback(feedbackEl, `Copied ${code}!`); if (autoOpen && dealUrl) { window.setTimeout(() => openDealUrl(dealUrl), 250); } } catch (error) { console.error("Copy failed:", error); showFeedback(feedbackEl, "Please copy manually.", true); } } function copyToClipboard(text) { if (navigator.clipboard && window.isSecureContext) { return navigator.clipboard.writeText(text); } return new Promise((resolve, reject) => { const textarea = document.createElement("textarea"); textarea.value = text; textarea.style.position = "fixed"; textarea.style.opacity = "0"; document.body.appendChild(textarea); textarea.focus(); textarea.select(); try { const successful = document.execCommand("copy"); document.body.removeChild(textarea); successful ? resolve() : reject(new Error("execCommand failed")); } catch (err) { document.body.removeChild(textarea); reject(err); } }); } function showFeedback(el, message, isError = false) { if (!el) return; el.textContent = message; el.classList.toggle("is-visible", true); el.style.color = isError ? "#b93838" : "#1b8c32"; window.clearTimeout(el._timeout); el._timeout = window.setTimeout(() => { el.classList.remove("is-visible"); }, 1800); } async function handleSummarize(btn) { const card = btn.closest(selectors.card); if (!card) return; const summaryBox = card.querySelector(selectors.summaryBox); const details = card.querySelector(selectors.details); if (!summaryBox || !details) return; if (summaryBox.innerHTML.trim()) { summaryBox.classList.add("is-visible"); btn.hidden = true; details.dataset.collapsed = "false"; details.setAttribute("aria-hidden", "false"); card.querySelector(selectors.toggleBtn)?.setAttribute("aria-expanded", "true"); return; } const terms = collectTerms(card); if (!terms.length) { summaryBox.textContent = "No details available to summarize."; summaryBox.classList.add("is-visible"); btn.hidden = true; return; } const originalText = btn.textContent; btn.textContent = "✨ Summarizing…"; btn.disabled = true; try { const systemPrompt = "You are a helpful assistant. Summarize the coupon terms into one clear sentence. Start with 'In short:' and highlight the main benefit or restriction."; const response = await callGemini(systemPrompt, terms.join(" ")); const cleaned = response.replace(/^In short:/i, "").trim(); summaryBox.innerHTML = `In short: ${cleaned}`; summaryBox.classList.add("is-visible"); btn.hidden = true; forceExpand(details, card); } catch (error) { console.error("Gemini summarize error:", error); summaryBox.textContent = config.geminiApiKey ? "Sorry, we couldn’t load the summary right now." : "Add your Gemini API key to enable this summary."; summaryBox.classList.add("is-visible"); btn.textContent = originalText; btn.disabled = !config.geminiApiKey; } } async function handleIdeas(btn) { const card = btn.closest(selectors.card); if (!card) return; const ideasBox = card.querySelector(selectors.ideasBox); const details = card.querySelector(selectors.details); if (!ideasBox || !details) return; if (ideasBox.innerHTML.trim()) { ideasBox.classList.add("is-visible"); btn.hidden = true; forceExpand(details, card); return; } const terms = collectTerms(card); const title = (card.querySelector(selectors.title)?.textContent || "").trim(); if (!terms.length && !title) { ideasBox.textContent = "Not enough info to suggest ideas."; ideasBox.classList.add("is-visible"); btn.hidden = true; return; } const originalText = btn.textContent; btn.textContent = "✨ Gathering ideas…"; btn.disabled = true; try { const systemPrompt = "You are a shopping assistant. Suggest 3-5 specific products or categories that match the coupon. Output as bullet points without extra text."; const payload = `Coupon Title: ${title} Terms: ${terms.join(" ")}`; const response = await callGemini(systemPrompt, payload); const items = response .split(" ") .map((line) => line.replace(/^[\-\*\u2022]\s*/, "").trim()) .filter(Boolean); if (!items.length) { throw new Error("No suggestions returned."); } ideasBox.innerHTML = `Shopping Ideas: `; ideasBox.classList.add("is-visible"); btn.hidden = true; forceExpand(details, card); } catch (error) { console.error("Gemini ideas error:", error); ideasBox.textContent = config.geminiApiKey ? "Sorry, we couldn’t get ideas right now." : "Add your Gemini API key to enable ideas."; ideasBox.classList.add("is-visible"); btn.textContent = originalText; btn.disabled = !config.geminiApiKey; } } function collectTerms(card) { return Array.from(card.querySelectorAll(selectors.terms)).map((item) => `- ${item.textContent.trim()}`); } function forceExpand(details, card) { details.dataset.collapsed = "false"; details.setAttribute("aria-hidden", "false"); const toggleBtn = card.querySelector(selectors.toggleBtn); if (toggleBtn) { toggleBtn.textContent = "Hide Details"; toggleBtn.setAttribute("aria-expanded", "true"); } } function openDealUrl(url) { if (!url) return; const newWindow = window.open(url, "_blank", "noopener"); if (newWindow) { newWindow.opener = null; } } async function callGemini(systemPrompt, userQuery, retries = 2, delay = 900) { if (!config.geminiApiKey) { throw new Error("Gemini API key missing."); } const endpoint = `https://generativelanguage.googleapis.com/v1beta/models/${config.geminiModel}:generateContent?key=${encodeURIComponent( config.geminiApiKey )}`; const payload = { contents: [{ parts: [{ text: userQuery }] }], systemInstruction: { parts: [{ text: systemPrompt }] } }; try { const response = await fetch(endpoint, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }); if (!response.ok) { if (response.status === 429 && retries > 0) { await wait(delay); return callGemini(systemPrompt, userQuery, retries - 1, delay * 2); } throw new Error(`Gemini API error: ${response.status} ${response.statusText}`); } const json = await response.json(); const text = json?.candidates?.[0]?.content?.parts?.[0]?.text; if (!text) { throw new Error("Gemini response missing text."); } return text; } catch (error) { if (retries > 0) { await wait(delay); return callGemini(systemPrompt, userQuery, retries - 1, delay * 2); } throw error; } } function wait(ms) { return new Promise((resolve) => window.setTimeout(resolve, ms)); } })(window, document);