Skip to content
PPoupa na Energia
HomeHow it worksAutopilotMarket
Compare my bill
Home/Methodology
Methodology

How we compare electricity tariffs

This page documents every assumption and formula behind a PoupaNaEnergia comparison. Nothing is hidden — if a number on the results page is wrong, the answer is here.

Last updated: 4 June 2026

1. Data source

We import every active tariff from the ERSE Electricity Price Simulator(simuladorprecos.erse.pt) — the Portuguese energy regulator. The scraper runs daily at 06:10 UTC and covers residential contracted power between 1.15 kVA and 41.4 kVA in flat-rate, dual-rate and triple-rate variants. Each tariff carries an ERSE identifier (erse_code), contract duration, lock-in, special conditions and offer end-date.

For wholesale-indexed tariffs (price varies with MIBEL/OMIE) we use the public CSV maintained by Tiago Felícia — the same dataset that powers the Home Assistant integration for the Portuguese market. The file publishes 96 fifteen-minute slots per day per indexed retailer, with the components OMIE + TAR + commercial margin. We sync daily at 06:20 UTC.

Regulatory constants (ERSE network fees, IEC, DGEG, audiovisual contribution, VAT) live in regulatory_constants and are updated against every ERSE revision (typically quarterly).

2. Bill decomposition

A Portuguese electricity bill is not one number — it is the sum of four components subject to different VAT regimes:

  • Active energy — consumption (kWh) × retailer unit price. This is the only component where the liberalised market actually competes.
  • Contracted power — fixed daily charge (€/day) by kVA tier. Also competitive across retailers.
  • Regulated charges — TAR (network access), IEC (energy excise), DGEG (regulator levy) and audiovisual contribution. Identical across retailers, set by ERSE.
  • VAT — 6% on energy and power up to 100 kWh / 30 days (200 kWh for households with 4+ dependants); 23% on the rest, on taxes and on the subscription.

We compute each component independently. The number you see in the Annual costcolumn is the gross bill total — not just the per-kWh price.

3. NET normalisation

The ERSE simulator returns GROSS prices (with regulated fees and VAT baked in) — not pure commercial prices. To compare retailers honestly we need each retailer’s NET price: what they charge before any regulated layer.

We anchor on ERSE trusted totals: given a known consumption profile, we know the total billed. We subtract TAR, IEC, DGEG, audiovisual and VAT using official formulas, and what remains is the NET unit price (€/kWh) and NET fixed term (€/day × kVA). Those feed our engine.

When a user-uploaded bill contains subtotals for Active energy and Power (fixed term) before TAR/VAT, we use them directly — the comparison becomes more precise (NET path). When it does not, we annualise the total and split using regulatory formulas (GROSS path, with visible warning).

4. Consumption annualisation

A bill covers a billing period (typically 30 or 60 days). To compare against the annual cost of alternative tariffs we annualise:annual_consumption = billed_consumption × 365 / billing_days. This assumes uniform consumption across the year — it isn’t (summer vs winter can vary 2–3×). We recommend uploading 12 months of bills for sharper results (feature in development).

When a bill includes one-off charges (sign-up fees, fines, adjustments), we attempt to identify and remove them before annualising — otherwise the current cost gets inflated and the calculated savings become unrealistically optimistic.

5. Steady-state ranking

Our ranking is by base annual cost — what you pay afterpromotions expire. This is deliberate. A tariff with 5% discount for 12 months may look cheaper in year 1, but over a 24- or 36-month horizon, the dominant cost is the base price — not the promotional price. Ranking by promotional price would optimise for year 1 with year 2 surprises.

We never hide the information: we show year-1 cost (with promo applied) alongside post-promo cost. The user sees both.

6. Promotional discount handling

When an offer carries a discount_pct of N% for M months we compute the first-year cost by blending promo × (M/12) + base × (1 − M/12). The risk flag promo_expires surfaces the offer in the UI. This approach is documented in our internal ADR of 4 May 2026 ("Engine ranking — steady-state cost + promo as metadata").

Fixed sign-up discounts (€X one-off) are treated as one-time benefits — amortised over the average contract duration (24 months) for a fair annualised comparison, never as a unit-price reduction.

7. Indexed tariffs

Indexed tariffs (Coopérnico Indexada, Iberdrola Smart Mobility, and others) track the wholesale price. We do not rank them side-by-side with fixed tariffs in the main ranking — they are different products with different risk profiles. A dedicated fixed-vs-indexed comparison path uses the last 4 weeks of the TiagoFelicia CSV aggregated by time period.

The risk flag indexed_volatile always shows on indexed offers, with historical variation explained.

8. Risk flags

For every offer we surface:

  • fidelity_lock — lock-in >12 months (warning) or penalty >€50 (danger).
  • short_contract — contract shorter than 12 months.
  • promo_expires — temporary discount that will end.
  • indexed_volatile — wholesale-indexed tariff.
  • has_restrictions — restricted access conditions (business NIF, specific household types, etc.).
  • offer_expiring — offer ends in <30 days (danger) or <90 days (warning).
  • requires_conditions — direct debit, e-bill or other contractual conditions required.

Flags never change the price ranking — they surface information so the user decides with full context.

9. Editorial independence

Poupa na Energia receives no commissions, sponsorships or compensation from any electricity retailer in Portugal — including EDP, Galp, Endesa, Iberdrola, Goldenergy, Repsol or Coopérnico. Should a commercial partnership exist in the future, it will be disclosed visibly on every affected recommendation (radical-honesty principle).

Our revenue model is the optional Autopilot service (€9/year, paid by the user) plus potential master-agent partnerships with retailers — always disclosed. Result ranking never depends on who pays.

10. Post-switch audit

Sixty days after every active switch we contact the user to verify whether the new retailer’s real bill matched our estimate. When variance exceeds 10% we open an internal case, identify the cause (real consumption shift, tariff revision, undisclosed condition) and adjust the engine or the communication. No other Portuguese comparator runs this verification — it is an intentional differentiator.

11. How to dispute a number

If you see a number that looks wrong, write to suporte@poupanaenergia.pt with the RP- report reference (top corner of the result) and the component you question. We reply with the exact formula and the ERSE data we used. If the number is wrong, we fix it within 48 hours and publish the correction in the version history.

See it in practice

Upload one electricity bill and we apply the methodology line by line.

Analyse my bill
PPoupa na Energia

Independent comparison of electricity tariffs in Portugal. Unbiased ranking — no provider influence. ERSE data updated daily.

ERSE DATAGDPR
Product
ComparatorAutopilot
Market
Active tariffsGlossaryHow it works
Resources
GuidesBlog
Company
About usMethodologyContactPrivacyTerms
© 2026 Poupa na Energia, LdaERSE data · updated daily