ForHosting KIT · Travel & geography

EV off-peak charging savings

Shift all 3,600 kWh of a year's charging to off-peak hours and you save the full price gap on every kilowatt-hour; the calculator shows the peak-only cost, the mixed cost and the yearly and monthly saving. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Annual kwh
3,600
Peak price
0.32
Off peak price
0.12
Off peak share
1
Currency
USD
You get
Price spread
0.2
Peak annual cost
1,152
Off peak annual cost
432
Mixed annual cost
432

Time-of-use electricity tariffs reward drivers who plug in overnight instead of during the evening peak, yet most household bills still show a single blended rate that hides how much an EV could save. This EV off-peak charging savings calculator takes your yearly charging energy in kilowatt-hours, the peak and off-peak prices per kilowatt-hour on your tariff, and an optional share of energy you can shift to cheap hours, then returns the peak-only annual cost, the mixed cost after shifting, and the annual and monthly savings in your currency. Use it when comparing time-of-use plans, sizing a home charger schedule, or explaining why delayed charging pays for itself over a year of commuting.

How time-of-use tariffs reward overnight charging

Utilities that offer time-of-use plans publish at least two prices per kilowatt-hour: a higher peak rate for busy windows, often late afternoon and early evening, and a lower off-peak rate overnight or in mid-day shoulder periods. Many household bills still show one blended rate, which hides how much an electric car could save by plugging in later. A car charged entirely in the peak window pays its yearly energy times the peak price. That figure is the starting point for comparing a flat rate with a time-of-use plan or for setting a home charger schedule.

How the saving is worked out, and what it leaves out

When part of the energy moves to cheap hours, the yearly cost becomes the energy times a weighted average of the two prices. The saving is simply the yearly energy times the share you shift times the gap between the prices, so moving all 3,600 kWh saves that gap on every kilowatt-hour. Real bills can also carry fixed service fees, demand charges or seasonal rate tables, which this calculator does not model. Read the result as the energy-only saving from shifting your charging, not as a forecast of your whole electricity bill.

Residential time-of-use plan decisions

Compare peak-only versus off-peak home charging over a year of commuting kWh before switching from a flat rate to a TOU tariff.

Fleet depot energy reporting

Batch yearly depot kWh with peak and off-peak depot prices to report energy-only savings from overnight fleet charging windows.

How is EV off-peak charging savings calculated?

The response also returns peak-only, full off-peak, and mixed annual costs, plus monthly savings and savings per kWh.

Does this include fixed utility fees or demand charges?

No. Results are energy-only savings from the per-kWh peak versus off-peak spread applied to yearly EV charging. Fixed charges and demand components are outside this contract.

What share of charging should I enter?

The fraction of your yearly charging energy you can really move to cheap hours, from 0 to 1. The default of 1 means all of it is charged off-peak; 0 means nothing moves and the saving is zero.

How is the monthly saving worked out?

It is the annual saving divided by twelve. The result also shows the saving per kilowatt-hour, the effective discount you get on each unit of energy across the whole year.

Can I use it for a fleet depot?

Yes. Enter the depot's yearly charging energy with its peak and off-peak prices to report the energy-only saving from overnight charging windows. The same inputs always give the same result, so reports stay consistent.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/travel/ev-off-peak-savings

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/travel/ev-off-peak-savings \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"annual_kwh":3600,"peak_price":0.32,"off_peak_price":0.12}'
{
  "annual_kwh": 3600,
  "peak_price": 0.32,
  "off_peak_price": 0.12
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "travel.ev_off_peak_savings",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

The arithmetic is deterministic and identical in the free browser tool and the API path, so home energy advisors, fleet total-cost worksheets, and personal spreadsheets never disagree on the same inputs.

How peak and off-peak prices turn into annual EV savings

Utilities that publish time-of-use rates list at least two prices per kilowatt-hour: a higher peak rate for high-demand windows (often late afternoon and early evening) and a lower off-peak rate for overnight or mid-day shoulder periods. When the share is zero, nothing is shifted and savings are zero. Real bills may still include fixed service fees, demand charges, or seasonal rate tables that this calculator does not model; treat the result as the energy-only savings from shifting EV charging, not a full utility bill forecast. An electric vehicle that charges entirely during the peak window pays annual_kwh times peak_price for the year. The same vehicle that moves a fraction off_peak_share of that energy into the cheap window pays a mixed annual cost equal to annual_kwh times the weighted average of the two rates. Subtracting the mixed cost from the peak-only cost yields annual savings of annual_kwh times off_peak_share times the price spread (peak minus off-peak). When off_peak_share is one, every kilowatt-hour is charged off-peak and savings equal the full spread times yearly energy. The response also reports monthly_savings as annual_savings divided by twelve, savings_per_kwh as the effective unit discount after the share is applied, peak_annual_cost, off_peak_annual_cost for a full off-peak baseline, and mixed_annual_cost for the partial shift you described.

Input contract, validation, and reading the response

Currency is informational only: the service does not convert between currencies, so keep both prices in the same unit you display. Missing required fields, empty strings, and non-finite values name the field in the error message. Example: three thousand six hundred kilowatt-hours per year, peak thirty-two cents, off-peak twelve cents, and full off-peak share yields seven hundred twenty currency units of annual savings, because thirty-six hundred times zero point two equals seven hundred twenty. POST a JSON body with three required non-negative finite numbers: annual_kwh (aliases yearly_kwh, annual_energy_kwh, kwh_per_year) for yearly charging energy in kilowatt-hours; peak_price (aliases peak_price_per_kwh, on_peak_price, peak_rate) for the on-peak tariff per kWh; and off_peak_price (aliases off_peak_price_per_kwh, offpeak_price, off_peak_rate) for the cheap-window tariff per kWh. Optionally send off_peak_share between zero and one inclusive (default one) for the fraction of annual energy you can schedule off-peak, and currency as a string label such as USD or EUR. Negative annual energy or negative prices fail with invalid_input and are not billed, because a negative tariff or energy volume is not a meaningful yearly plan. An off_peak_share outside the closed unit interval is likewise rejected. On success the body echoes the resolved inputs, reports price_spread as peak_price minus off_peak_price (which may be negative if the cheap rate is entered higher than the peak rate), and returns the cost and savings fields rounded for stable cross-runtime comparison. Pair the response with your own charger schedule or vehicle telematics if you need to estimate what share is realistic; this endpoint only multiplies the share you provide.

Where off-peak EV savings estimates earn their keep

Households choosing between a flat residential rate and a time-of-use plan use this EV off-peak charging savings calculator to see whether overnight charging alone covers the plan switch over a commuting year. Fleet managers batch depot vehicles with depot peak and off-peak depot tariffs to build transparent energy line items for total cost of ownership reports without inventing a blended rate that hides the overnight discount. Keep requests small, pin rounded money fields in tests, and re-run when the utility updates seasonal peak windows so next year’s estimate tracks the tariff you actually pay. Home energy advisors and solar-plus-storage installers plug measured or estimated annual kWh from the vehicle or a wallbox, then vary off_peak_share to show partial automation versus manual schedules. Combine annual_savings with travel.ev_trip_cost when you need both per-trip energy cost at a single rate and the yearly benefit of shifting the whole charging stack to off-peak hours.

Smart charger schedule ROI

Vary off_peak_share to show how much annual savings a delayed-start wallbox schedule captures versus charging as soon as you plug in at 6 p.m.

What is off_peak_share?

It is the fraction of yearly charging energy moved into off-peak hours, from 0 to 1. Default is 1 (all energy off-peak). Partial shares model smart schedules that cannot shift every session.

What if peak_price is lower than off_peak_price?

The calculator still runs and annual_savings becomes negative, meaning the mixed schedule costs more than peak-only. Check that you did not swap the two rates.

Is the browser tool free, and what does the API cost?

The in-browser tool is free and runs locally. API usage is prepaid KIT balance at $0.002 per successful request. Invalid input fails without charge.

Read the full KIT documentation →