SEEF: the Standard Energy e-Invoice

The Standard Energy e-Invoice (SEEF): how energy e-invoices work via Peppol, with meter readings, EAN codes and cost centre mappings.

The Standard Energy e-Invoice (SEEF) is the invoice format for the Dutch energy sector. It is a UBL extension that adds specific data not found on a standard invoice: meter readings, consumption data per metering point, tariff structures and contract information. Where a standard UBL invoice is suitable for most sectors, it falls short for energy companies that want to inform their customers exactly how much energy was consumed at which address.

SEEF was developed by the three industry associations Energie-Nederland, Netbeheer Nederland and Vereniging Meetbedrijven Nederland. It is an open standard, free to use, and in practice the norm for electronic invoicing between energy suppliers, grid operators, metering companies and their business customers.

What makes SEEF different from standard UBL?

A standard UBL invoice contains line amounts, VAT and party data, but no domain-specific information about energy consumption. SEEF adds an extension block with:

  • Metering points (UtilityConsumptionPoint): identified by an EAN code (European Article Number). Each metering point is a physical connection to the electricity or gas grid, linked to a specific address.
  • Meter readings (MeterReading): the opening and closing meter readings, including the reading type (peak and off-peak for electricity), the reading method and the calculated consumption.
  • Fuel mix (FuelMix): the share of fossil, solar, wind or other energy sources in the delivered electricity.
  • Cluster information (EBCluster): a grouping of billing lines belonging to the same delivery period and metering point.
  • Tariff information: the specific rates per unit (kWh, m3) applied to the consumption.

All this data is included in a SEEFExtensionWrapper within the UBLExtensions block of the invoice.

Technical structure

The SEEF extension uses its own XML namespace and CustomizationID:

<cbc:CustomizationID>urn:fdc:energie-efactuur.nl:invoice:v3.1</cbc:CustomizationID>

The extension block sits in the UBL Extensions, at the top of the invoice:

<ext:UBLExtensions>
  <ext:UBLExtension>
    <ext:ExtensionContent>
      <seef:SEEFExtensionWrapper
        xmlns:seef="urn:www.energie-efactuur.nl:profile:invoice:ver3.1">

        <seef:UtilityConsumptionPoint>
          <cbc:ID>871687400001234567</cbc:ID>
          <cac:Address>
            <cbc:StreetName>Industrieweg 15</cbc:StreetName>
            <cbc:CityName>Woerden</cbc:CityName>
            <cbc:PostalZone>3443 AB</cbc:PostalZone>
            <cac:Country>
              <cbc:IdentificationCode>NL</cbc:IdentificationCode>
            </cac:Country>
          </cac:Address>
        </seef:UtilityConsumptionPoint>

        <seef:UtilityMeter>
          <cbc:MeterNumber>E0012345678</cbc:MeterNumber>
          <seef:MeterReading>
            <seef:MeterReadingTypeCode>LAAG</seef:MeterReadingTypeCode>
            <seef:PreviousMeterReadingDate>2025-12-31</seef:PreviousMeterReadingDate>
            <seef:PreviousMeterQuantity unitCode="KWH">45230</seef:PreviousMeterQuantity>
            <seef:LatestMeterReadingDate>2026-03-31</seef:LatestMeterReadingDate>
            <seef:LatestMeterQuantity unitCode="KWH">46890</seef:LatestMeterQuantity>
            <seef:ConsumptionQuantity unitCode="KWH">1660</seef:ConsumptionQuantity>
          </seef:MeterReading>
        </seef:UtilityMeter>

      </seef:SEEFExtensionWrapper>
    </ext:ExtensionContent>
  </ext:UBLExtension>
</ext:UBLExtensions>

The invoice lines themselves remain standard UBL lines. The difference is that each invoice line references the EAN number of the metering point via a DocumentReference with schemeID AVE:

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="KWH">1660</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="EUR">381.80</cbc:LineExtensionAmount>
  <cbc:AccountingCost>3510233</cbc:AccountingCost>
  <cac:DocumentReference>
    <cbc:ID schemeID="AVE">871687400001234567</cbc:ID>
  </cac:DocumentReference>
  <cac:Item>
    <cbc:Name>Electricity consumption off-peak Q1 2026</cbc:Name>
  </cac:Item>
  <cac:Price>
    <cbc:PriceAmount currencyID="EUR">0.23</cbc:PriceAmount>
  </cac:Price>
</cac:InvoiceLine>

In addition to consumption charges, energy e-invoices often also contain lines for energy tax (EB), sustainable energy surcharge (ODE), tax reduction and grid operator tariffs.

Mapping metering points to cost centres

For organisations with multiple locations or buildings, mapping metering points to cost centres is one of the biggest advantages of SEEF. Each EAN code on the invoice identifies a specific metering point. By mapping those EAN codes in advance to internal cost centres, dimensions or project codes, the invoice can be automatically split in the accounting system.

eConnect offers an additional service for this. Via a data list in the platform, you can create a mapping from EAN codes to cost centres. When processing a SEEF invoice, the EAN number is read from the extension and automatically converted to the corresponding cost centre. That cost centre is then included in the AccountingCost field of the invoice line, so your ERP or accounting software can automatically assign the posting.

This works as follows:

  1. You create a mapping of EAN codes to cost centres (via the eConnect platform or the API)
  2. eConnect receives the SEEF invoice from the energy supplier
  3. The platform reads the EAN number from the UtilityConsumptionPoint
  4. The corresponding cost centre is looked up in the mapping
  5. The AccountingCost field on each invoice line is populated with the found cost centre
  6. The enriched invoice is forwarded to your accounting software

Tip: this enrichment also works with dimensions other than cost centres. Think of building numbers for housing corporations, location codes for healthcare organisations or project codes for construction companies. The mapping is flexibly configurable.

Who uses SEEF?

SEEF is mainly used by:

  • Energy suppliers (Vattenfall, Eneco, Essent and many others) for invoicing business customers
  • Grid operators (Alliander, Stedin, Enexis) for grid tariffs and connection charges
  • Metering companies for metering services and data processing
  • Business customers who want to process their energy invoices automatically

eConnect was co-developer of the Energy e-Invoice with SEEF extension in 2018 and processes large volumes of SEEF invoices daily for customers in the energy sector, real estate and healthcare.

Processing at eConnect

eConnect fully supports SEEF invoices:

  • Receiving: SEEF invoices are automatically recognised based on the CustomizationID and the namespace of the extension.
  • Transformation: if the receiver expects a different format, eConnect can transform the SEEF invoice to standard NLCIUS or BIS Billing V3. The extension data is then included as additional information.
  • Enrichment: via Rule Based Enrichment (RBE), EAN codes are automatically converted to cost centres, building numbers or other dimensions.
  • Delivery: the enriched invoice is forwarded via the software integration (API, Autopilot or email) to the receiver's accounting system.

The PSB documentation for SEEF, including sample invoices, is available on the PSB developer portal.

Custom transformations for utility customers

For utility customers that deliver non-standard XML (for example via SFTP), eConnect creates custom transformations that convert the delivered XML into a valid e-invoice. Modifications to custom transformations are subject to additional cost. Always verify that the delivered XML conforms to the corresponding XSD. Typos in element names (for example "UtilityContractAddres" instead of "UtilityContractAddress") will cause fields not to be mapped.

Tip: do you have many metering points (EAN codes) that you want to map to cost centres? eConnect can import the mapping in bulk from a CSV file. Contact support to discuss the options.

Get in touch