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)