Skip to main content

Tariffs

You can configure electricity tariffs for grid consumption, feed-in and CO₂ intensity. This allows evcc to calculate your savings and automatically shift charging to cheaper times.

Fixed Electricity Price

The simplest case is fixed values for grid consumption (grid) and feed-in (feedin).

tariffs:
currency: EUR # (default EUR)
grid:
type: fixed
price: 0.294 # EUR/kWh
feedin:
type: fixed
price: 0.08 # EUR/kWh
co2:
...

Time-based Electricity Price

Electricity tariffs with fixed time-based prices can also be defined.

tariffs:
grid:
type: fixed
price: 0.294 # EUR/kWh (default)
zones:
- days: Mo-Fr
hours: 2-5
price: 0.2 # EUR/kWh
- days: Sa,So
price: 0.15 # EUR/kWh

You can also define a list of price zones under zones. The validity period is defined by days and/or hours. If no price zone is defined for a time, the default price is used.

The evcc tariff command shows the price list for the upcoming hours.

$ ./evcc tariff

grid:
From To Price/Cost
2026-05-03 00:00:00 2026-05-03 01:00:00 0.399
...

feedin:
From To Price/Cost
2026-05-03 00:00:00 2026-05-03 01:00:00 0.080
...

CO₂ forecast

Electricity Maps

Commercial API

CO₂ data for many countries from https://electricitymaps.com/. The 'Free Personal Tier' unfortunately does not include forecast data. You'll need a commercial account from https://api-portal.electricitymaps.com/. Free trial available.

tariffs:
co2:
type: template
template: electricitymaps
uri: https://api-access.electricitymaps.com/2w...1g/ # HTTP(S) address
token:
zone: DE # see https://api.electricitymap.org/v3/zones

Free API

CO₂ data for many countries from https://electricitymaps.com/. The 'Free Personal Tier' unfortunately does not include forecast data. You'll need a commercial account from https://api-portal.electricitymaps.com/. Free trial available.

tariffs:
co2:
type: template
template: electricitymaps-free
token:
zone: DE # see https://api.electricitymap.org/v3/zones

Grünstromindex

Regional emission data from https://gruenstromindex.de. Only available for Germany.

tariffs:
co2:
type: template
template: grünstromindex
zip:

National Grid ESO

Only available for the United Kingdom.

tariffs:
co2:
type: template
template: ngeso
region: 1 # Coarser than using a postcode. See https://carbon-intensity.github.io/api-definitions/#region-list (optional)
postalcode: SW1 # Outward postcode i.e. RG41 or SW1 or TF8. Do not include full postcode, outward postcode only. (optional)

Dynamic electricity price

Custom Plugin

Use the plugin mechanism to connect a custom tariff source.

Example: Current price via HTTP

tariffs:
grid:
type: custom
price:
source: http
uri: https://example.com/api/price

The value returned by the endpoint is used as the grid price.

Example: Forecasts via HTTP

tariffs:
grid:
type: custom
forecast:
source: http
uri: https://api.allinpower.nl/troodon/api/p/spot_market/prices/?product_type=ELK
jq: '[.timestamps, .prices] | transpose | map({ "start": (.[0] | strptime("%Y-%m-%dT%H:%M:%S.%f%z") | strftime("%Y-%m-%dT%H:%M:%SZ")), "end": (.[0] | strptime("%Y-%m-%dT%H:%M:%S.%f%z") | mktime + 3600 | strftime("%Y-%m-%dT%H:%M:%SZ")), "price": .[1] }) | tostring'

The plugin must return a JSON structure containing a list of time periods and prices. The date fields must be in the form YYYY-MM-DDTHH:MM:SSZ and the price in the correct currency unit (e.g. EUR). See the following example:

[
{ "start": "2025-01-01T00:00:00Z", "end": "2025-01-01T01:00:00Z", "price": 25.0 },
{ "start": "2025-01-01T01:00:00Z", "end": "2025-01-01T02:00:00Z", "price": 30.0 },
]

The plugin is updated once per hour.

All in Power

Only available for the Netherlands.

tariffs:
grid:
type: template
template: allinpower

Amber Electric

Only available for Australia.

tariffs:
grid:
type: template
template: amber
token: # optional
siteid: # optional
channel: # optional

Awattar

Only available for Germany and Austria.

tariffs:
grid:
type: template
template: awattar
region: AT # optional

Energinet

Only available for Denmark.

tariffs:
grid:
type: template
template: energinet
region: dk1 # optional

ENTSO-E

Day-ahead prices for the European electricity market. See https://transparency.entsoe.eu for more information. Basis for many dynamic tariffs.

tariffs:
grid:
type: template
template: entsoe
securitytoken: # Registration and subsequent helpdesk request required. Details on the process can be found here https://transparency.entsoe.eu/content/static_content/Static%20content/web%20api/Guide.html#_authentication_and_authorisation (optional)
domain: BZN|DE-LU # see https://transparency.entsoe.eu/content/static_content/Static%20content/web%20api/Guide.html#_areas (optional)

Fraunhofer ISE

Day-ahead forecast of energy prices (per kWh) on the exchange. No prior registration for https://api.energy-charts.info/ necessary. Can be used for dynamic electricity tariffs, for example, where the supplier does not yet offer a price forecast on the customer interface.

tariffs:
grid:
type: template
template: energy-charts-api
bzn: DE-LU # Bidding zones - https://api.energy-charts.info/#/prices/day_ahead_price_price_get

Groupe E Vario Plus

Only available for Switzerland.

tariffs:
grid:
type: template
template: groupe-e

Nordpool Elering

Only available for Estonia.

tariffs:
grid:
type: template
template: elering
region: ee # optional

Octopus Energy

API

You can get the API key in the Octopus portal https://octopus.energy/dashboard/new/accounts/personal-details/api-access

tariffs:
grid:
type: template
template: octopus-api
apiKey: # Octopus Energy API Key.

Product Code

tariffs:
grid:
type: template
template: octopus-productcode
productCode: AGILE-FLEX-22-11-25 # The tariff code for your energy contract. Make sure this is set to your import tariff code.
region: # The DNO region you are located in. More information: https://www.energy-stats.uk/dno-region-codes-explained/

Ostrom

Create a 'Production Client' in the Ostrom developer portal: https://developer.ostrom-api.io/

tariffs:
grid:
type: template
template: ostrom
clientid: 476c477d8a039529478ebd690d35ddd80e3308ffc49b59c65b142321aee963a4
clientsecret: 476c477d8a039529478ebd690d35ddd80e3308ffc49b59c65b142321aee963a4476c477d8a039529478ebd690d35ddd80e3308ffc49b59c65b142321aee963a4a
contract: 100523456 # Only required if multiple contracts belong to the same user (optional)

PUN Orario

Price data from https://www.mercatoelettrico.org/it/. Often used for feeding into the grid. Only available for Italy.

tariffs:
grid:
type: template
template: pun

SmartEnergy smartCONTROL

Only available for Austria.

tariffs:
grid:
type: template
template: smartenergy

Spotty Energie

Only available for Austria.

tariffs:
grid:
type: template
template: spottyenergy
contractid: ffffffff-4444-6666-2222-aaaaaabbbbbb # You can get your contract id from the customer portal https://i.spottyenergie.at/
pricetype: CONSUMPTION # Price type, either spotmarket price, consumption price or generation compensation (if contractually agreed), more info at https://www.spottyenergie.at/blog/energie-smart-produzieren

Tibber

Get your API token from the Tibber developer portal: https://developer.tibber.com/

tariffs:
grid:
type: template
template: tibber
token: 476c477d8a039529478ebd690d35ddd80e3308ffc49b59c65b142321aee963a4
homeid: cc83e83e-8cbf-4595-9bf7-c3cf192f7d9c # Only required if you have multiple homes in your Tibber account. (optional)