Skip to main content
Every virtual asset has a daily cycle limit. Some contracts add a limit over a longer period, for example per year in a tolling agreement, or over the whole term of the virtual asset. The limits of your virtual asset are in its API response: dailyCycleLimit, and where set, annualCycleLimit and totalAllowedCycles.

What counts towards the limits

Only discharge counts. Energy discharged for dispatch schedules and for ancillary service activations both count. The platform measures discharge per quarter hour, so each discharge is compared with the capacity that applied when it happened. The daily and the period limit then use different measures of the same discharge, described in the next two sections.

Daily limit

The daily limit is counted in Available Energy Discharges (AEDs). One AED is a discharge equal to the energy capacity that is actually available at that time, so the limit tightens during an unavailability. Here α is the available share of the rated capacity, from 1 (fully available) to 0: AEDqh=Eqh,dschEqh,rated×1αqh\textrm{AED}_{qh} = \frac{E_{qh,dsch}}{E_{qh,rated}} \times \frac{1}{\alpha_{qh}} ∑qh∈dayAEDqh≤Daily limit\sum_{qh \in \textrm{day}} \textrm{AED}_{qh} \leq \textrm{Daily limit} A day runs from midnight to midnight German time. The values are returned as availableEnergyDischargesWholesale, availableEnergyDischargesFCR, availableEnergyDischargesAFRR and availableEnergyDischargesTotal. When capacity changes, the daily limit applies as usual, against the capacity of that day. Image 72 Example: a 10 MWh asset with a daily limit of 3 discharges 10 MWh between 08:00 and 12:00, which is 1 cycle and 1 AED. From 12:00 to 16:00 an unavailability halves the available energy to 5 MWh, and the asset discharges another 10 MWh. That is 1 more cycle but 2 AEDs, so the day has reached its limit of 3 AEDs after 2 cycles.

Period limit

The period limit is counted in cycles. One cycle is a discharge equal to the rated energy capacity at that time: cyclesqh=Eqh,dschEqh,rated\textrm{cycles}_{qh} = \frac{E_{qh,dsch}}{E_{qh,rated}} The values are returned as cyclesWholesale, cyclesFcr, cyclesAfrr and cyclesTotal. The cycles of all quarter hours in the period add up and must stay within the period limit. Unavailability does not reduce the period limit, because cycles are counted against rated capacity. Cycles you could not use during an outage can be used later in the period.

Which period counts

The period is defined in your contract. A limit over the term of the virtual asset (totalAllowedCycles) covers the virtual asset from its start to its end. For an annual limit (annualCycleLimit) in a tolling agreement, the year is usually the Contract Year: Contract Year 1 starts on the Start Date and lasts 12 months, and each later Contract Year starts on the anniversary of the Start Date. With a Start Date of 1 November 2026, Contract Year 1 runs until 31 October 2027 and has the full 621 cycles (1.7 per day on average, 365 × 1.7 rounded up), and discharge before the Start Date is not deducted from it. Some tolling agreements use calendar years instead. This can deviate subject to the conditions of your contract.

Ramp-up period

This mainly concerns tolling agreements, where the rated energy capacity grows in steps as physical assets are added. The ramp-up only affects the period limit. The daily limit applies as usual. While capacity changes, the period allowance is counted in energy, based on the rated energy capacity of each day. Each day adds the average daily allowance cˉ\bar{c} from your contract times its rated energy capacity, and the total discharge over the period must stay within the sum: ∑qh∈periodEqh,dsch≤∑d∈periodcˉ×Ed,rated\sum_{qh \in \textrm{period}} E_{qh,dsch} \leq \sum_{d \in \textrm{period}} \bar{c} \times E_{d,rated} You can front-load this allowance, which means using it before it has built up. Each day must stay within the daily limit, and the total must stay within the projected allowance for the period you are in. The projected allowance is what has built up so far, plus cˉ\bar{c} times today’s rated energy capacity for each day left in the period. Which period that is depends on your contract:
  • With calendar years, it is the ongoing calendar year, and the ramp-up is part of it.
  • With a separate ramp-up period, it runs until the expected end of the ramp-up. Contract Year 1 only begins after that, on the Start Date.
A capacity step changes the projection from the day it takes effect, and days that have passed keep the capacity they had. If capacity is reduced after you have front-loaded part of the allowance, the projected allowance shrinks with it and you may have to discharge less for the rest of the period. Unavailability does not reduce the allowance. All four examples below are tolling agreements with an average daily allowance of 1.7, and all use the same virtual battery: 20 MWh for 90 days, then 60 MWh for 60 days, then 100 MWh. Each starts with the same usage, 2.1 cycles a day in step 1 and, where the allowance allows it, also in step 2. The figures are made up for illustration.

Ramp-up within a calendar year

Here the ramp-up is part of the calendar year. Each day adds 1.7 times its rated energy capacity, and days before the virtual battery goes live add nothing, so a year with a ramp-up has a smaller allowance than a year at full capacity. The projection always runs to 31 December. At a constant capacity, the next calendar year has the full 621 cycles.

Full calendar year

The virtual battery is live from 1 January. Full calendar year: discharge stays below the projected allowance, which rises from 12,410 to 31,110 to 45,730 MWh at the upsizes, and reaches 45,730 MWh on 31 December. Full calendar year: discharge stays below the projected allowance, which rises from 12,410 to 31,110 to 45,730 MWh at the upsizes, and reaches 45,730 MWh on 31 December. At the start of the year the projection assumes 20 MWh for all 365 days, which gives 12,410 MWh (365 × 34 MWh). If the battery discharges 2.1 cycles a day during step 1, 3,780 MWh in total, it is ahead of the 3,060 MWh built up but far below the projection. The upsize to 60 MWh raises the projected allowance to 31,110 MWh (3,060 MWh built up plus 275 × 102 MWh). The upsize to 100 MWh raises it to 45,730 MWh, the allowance for the whole year. At 2.1 cycles a day in step 2 as well, the battery has used 11,340 MWh by 30 May. That leaves 34,390 MWh for the remaining 215 days, about 160 MWh or 1.6 cycles per day at 100 MWh.

Partial calendar year

The virtual battery goes live on 16 May, so 230 days of the year remain. Partial calendar year from 16 May: discharge stays below the projected allowance, which rises from 7,820 to 17,340 to 22,780 MWh at the upsizes, and reaches 22,780 MWh on 31 December. Partial calendar year from 16 May: discharge stays below the projected allowance, which rises from 7,820 to 17,340 to 22,780 MWh at the upsizes, and reaches 22,780 MWh on 31 December. At go-live the projection assumes 20 MWh for the 230 days left in the year, which gives 7,820 MWh (230 × 34 MWh). If the battery discharges 2.1 cycles a day during step 1, 3,780 MWh in total, it stays below that projection. The upsize to 60 MWh on 14 August raises the projected allowance to 17,340 MWh (3,060 MWh built up plus 140 × 102 MWh). The upsize to 100 MWh on 13 October raises it to 22,780 MWh. At 2.1 cycles a day in step 2 as well, the battery has used 11,340 MWh by 12 October. That leaves 11,440 MWh for the remaining 80 days, 143 MWh or about 1.4 cycles per day at 100 MWh.

Separate ramp-up period before Contract Year 1

Here the ramp-up is a period of its own and belongs to no Contract Year. The projection runs until the expected end of the ramp-up. Contract Year 1 begins on the Start Date, once the ramp-up is concluded, and starts at zero with the full 621 cycles, whatever was used during the ramp-up.

Ramp-up of a full year

The ramp-up lasts 365 days, with the same steps as the full calendar year above. Separate ramp-up of 365 days: discharge stays below the projected allowance, which rises from 12,410 to 31,110 to 45,730 MWh at the upsizes, and reaches 45,730 MWh on the Start Date. Separate ramp-up of 365 days: discharge stays below the projected allowance, which rises from 12,410 to 31,110 to 45,730 MWh at the upsizes, and reaches 45,730 MWh on the Start Date. The numbers are the same as for the full calendar year. The projection starts at 12,410 MWh and rises to 31,110 MWh and 45,730 MWh with the upsizes, and 34,390 MWh, about 1.6 cycles per day, are left for the last 215 days. Only the next period has a different name: on the Start Date, Contract Year 1 begins with the full 621 cycles.

Ramp-up shorter than a year

The ramp-up lasts 150 days and ends after step 2. Separate ramp-up of 150 days: discharge stays below the projected allowance, which rises from 5,100 to 9,180 MWh at the upsize, and reaches 9,180 MWh on the Start Date. Separate ramp-up of 150 days: discharge stays below the projected allowance, which rises from 5,100 to 9,180 MWh at the upsize, and reaches 9,180 MWh on the Start Date. At the start the projection assumes 20 MWh for all 150 ramp-up days, which gives 5,100 MWh (150 × 34 MWh). If the battery discharges 2.1 cycles a day during step 1, 3,780 MWh in total, it is ahead of the 3,060 MWh built up but still below the projection. The upsize to 60 MWh raises the projected allowance to 9,180 MWh (3,060 MWh built up plus 60 × 102 MWh). That leaves 5,400 MWh for step 2, which is 90 MWh or 1.5 cycles per day at 60 MWh. Keeping 2.1 cycles a day, as in the other examples, would exceed the allowance, because the projection ends with the ramp-up instead of running on to the end of a year. On the Start Date the count starts again at zero, and Contract Year 1 has its full 621 cycles.
Last modified on October 23, 2026