Battery Digital Product Passport

GS1-native implementation of EU Battery Regulation 2023/1542 Digital Product Passport using EPCIS 2.0

Overview

The OpenEPCIS Battery DPP provides a GS1-native implementation of the EU Battery Regulation 2023/1542 Digital Product Passport requirements. Unlike approaches that require new data models or infrastructure, this implementation leverages existing GS1 standards that manufacturers already use.

Disclaimer: This is not official GS1 guidance, but it is built entirely on official GS1 standards and strives to follow GS1 best practices:

Standards Used:

GS1 Best Practices We Follow:

  • URIs that resolve (scan QR → get data)
  • GLN for organizations, GTIN+serial for products
  • EPCIS events with full provenance
  • regulatoryInformation pattern (same as GS1 EUDR)

We invite everyone to use these templates — feedback welcome!

Key Advantages:

  • Resolvable Identifiers: Battery @id IS the resolver URL (GS1 Digital Link)
  • No New Infrastructure: Uses existing GS1 Digital Link resolvers
  • Full Provenance: EPCIS events capture WHO made WHAT change, WHEN, WHERE
  • Lower Barrier: No membership fees or proprietary tooling required
  • Feb 2027 Ready: Complete compliance path for EU Battery Regulation

Architecture

The Battery DPP uses a two-layer architecture:

┌─────────────────────────────────────────────────────────────┐
│  GS1 Digital Link Resolver                                  │
│  https://id.gs1.org/01/{gtin}/21/{serial}                   │
│  - Content negotiation (JSON-LD / HTML)                     │
│  - Link type routing (?linkType=epcis)                  │
└─────────────────────────────────────────────────────────────┘
          ┌───────────────────┴───────────────────┐
          ▼                                       ▼
┌─────────────────────┐                 ┌─────────────────────┐
│  Product Master     │                 │  EPCIS Repository   │
│  (Static Data)      │                 │  (Dynamic Events)   │
├─────────────────────┤                 ├─────────────────────┤
│ • Manufacturer      │                 │ • State of Health   │
│ • Battery category  │                 │ • Cycle count       │
│ • Chemistry         │                 │ • Carbon footprint  │
│ • Materials         │                 │ • Ownership history │
│ • Hazardous subst.  │                 │ • Negative events   │
│ • Due diligence     │                 │ • Temperature logs  │
└─────────────────────┘                 └─────────────────────┘

Static Data (Product Master)

Product master data is expressed as JSON-LD and contains:

  • Manufacturer and operator information
  • Battery category, chemistry, and technical specifications
  • Material composition and hazardous substances
  • Recycled content declarations
  • Dismantling documents and spare part sources
  • Supply chain due diligence
  • Regulatory compliance information

Dynamic Data (EPCIS Events)

Changes over time are captured as EPCIS events:

  • State of Health (SoH) measurements
  • State of Certified Energy (SOCE)
  • Cycle count progression
  • Carbon footprint declarations
  • Ownership transfers
  • Negative events (accidents, damage)
  • Temperature excursions

GS1 Identity Model

Every battery has a unique, resolvable identity:

https://id.gs1.org/01/{gtin}/21/{serial}
         │        │        │      │
         │        │        │      └── Serial number (AI-21)
         │        │        └── Application Identifier
         │        └── GTIN (AI-01)
         └── GS1 Digital Link base

Example:

https://id.gs1.org/01/09521234000013/21/BAT2024-001

This URI:

  • Resolves via content negotiation
  • Returns JSON-LD for Accept: application/ld+json
  • Returns HTML passport page for browsers
  • Links to EPCIS event history via ?linkType=epcis

Vocabulary Namespaces

PrefixNamespacePurpose
gs1:https://ref.gs1.org/voc/Core GS1 vocabulary
battery:https://ref.openepcis.io/extensions/eu/battery/Battery-specific terms

The battery vocabulary extends GS1 with domain-specific classes and properties. Selected published classes:

  • battery:BatteryChemistry
  • battery:TechnicalSpecification
  • battery:HazardousSubstance
  • battery:NegativeEvent
  • battery:RecycledContent

EPCIS sensor reports use the lowercase property IRIs as their type — e.g. battery:stateOfHealth, battery:cycleCount, battery:capacityFade, battery:stateOfCertifiedEnergy. See the battery vocabulary browser for the full list.

EPCIS Event Examples

Battery Commissioning

When a battery is created:

{
  "@context": [
    "https://ref.openepcis.io/extensions/eu/battery/battery-context.jsonld",
    "https://ref.gs1.org/standards/epcis/epcis-context.jsonld"
  ],
  "type": "EPCISDocument",
  "schemaVersion": "2.0",
  "creationDate": "2024-03-15T14:30:00.000Z",
  "epcisBody": {
    "eventList": [{
      "type": "ObjectEvent",
      "eventID": "urn:uuid:550e8400-e29b-41d4-a716-446655440001",
      "eventTime": "2024-03-15T14:30:00.000Z",
      "eventTimeZoneOffset": "+01:00",
      "epcList": ["https://id.gs1.org/01/09521234000013/21/BAT2024-001"],
      "action": "ADD",
      "bizStep": "commissioning",
      "disposition": "active",
      "sensorElementList": [{
        "sensorReport": [
          { "type": "battery:stateOfHealth", "value": 100, "uom": "P1" },
          { "type": "battery:cycleCount", "value": 0 }
        ]
      }]
    }]
  }
}

State of Health Update

Periodic health measurements:

{
  "@context": "https://ref.gs1.org/standards/epcis/epcis-context.jsonld",
  "type": "ObjectEvent",
  "action": "OBSERVE",
  "bizStep": "inspecting",
  "sensorElementList": [
    {
      "sensorReport": [
        {
          "type": "battery:stateOfHealth",
          "value": 94.2,
          "uom": "P1"
        },
        {
          "type": "battery:stateOfCertifiedEnergy",
          "value": 85.3,
          "uom": "P1"
        },
        {
          "type": "battery:cycleCount",
          "value": 847
        },
        {
          "type": "battery:capacityFade",
          "value": 5.8,
          "uom": "P1"
        }
      ]
    }
  ]
}

Negative Event (Damage)

Recording accidents or damage. battery:incidentSeverity carries the severity classification (Minor, Moderate, Major, Critical from the published battery:IncidentSeverity class), and a sensor reading captured at the moment of the event rides in sensorElementList. The incident class itself (PhysicalDamage, ThermalEvent, DeepDischarge, ShortCircuit, …) is part of the published battery:NegativeEvent enumeration; the corroborating narrative or report is referenced from bizTransactionList (e.g. an incident-report PDF):

{
  "@context": [
    "https://ref.openepcis.io/extensions/eu/battery/battery-context.jsonld",
    "https://ref.gs1.org/standards/epcis/epcis-context.jsonld"
  ],
  "type": "ObjectEvent",
  "action": "OBSERVE",
  "bizStep": "inspecting",
  "disposition": "damaged",
  "battery:incidentSeverity": "Major",
  "sensorElementList": [
    {
      "sensorReport": [
        {
          "type": "battery:stateOfHealth",
          "value": 75,
          "uom": "P1"
        }
      ]
    }
  ],
  "bizTransactionList": [
    {
      "type": "urn:epcglobal:cbv:btt:cert",
      "bizTransaction": "https://example.com/incidents/INC-2025-0034.pdf"
    }
  ]
}

Regulatory Compliance

GS1 Regulatory Information Pattern

The battery DPP uses the official GS1 regulatory information pattern:

"regulatoryInformation": [{
  "@type": "gs1:RegulatoryInformation",
  "regulationType": {
    "@id": "gs1:RegulationTypeCode-BATTERY_DIRECTIVE"
  },
  "regulatoryAct": "EU 2023/1542"
}]

This aligns with GS1's EUDR approach and provides a consistent pattern for regulatory compliance data.

Annex XIII Compliance Mapping

RequirementImplementation
Unique identifier@id = GS1 Digital Link
Manufacturer infogs1:manufacturer with GLN
Carbon footprintEPCIS event with lifecycle breakdown
State of HealthEPCIS sensorReport
Material compositionbattery:materialComposition
Hazardous substancesbattery:hazardousSubstances
Recycled contentPre/post consumer split
Dismantling infobattery:dismantlingDocuments
Due diligencebattery:supplyChainDueDiligence

Unit of Measure

All measurements use UN/CEFACT Rec 20 codes:

MeasurementCodeSymbol
PercentageP1%
Ampere-hourAHAh
Kilowatt-hourKWHkWh
VoltVLTV
KilowattKWTkW
OhmOHMΩ
CelsiusCEL°C

Timeline

  • August 2025: Economic operators must prepare DPP infrastructure
  • February 2027: Full DPP requirements enter into force
  • 2030+: Recycled content thresholds increase

Getting Started

  1. Clone the repository
    git clone https://github.com/openepcis/openepcis-battery-dpp
    
  2. Review example files
    • examples/battery-product.jsonld - Complete product master
    • epcis/*.jsonld - Event examples
  3. Configure your GS1 Digital Link resolver
    • Set up content negotiation
    • Link to your EPCIS repository
  4. Integrate EPCIS event capture
    • Use OpenEPCIS tools for event validation
    • Configure sensor data collection from BMS

Resources

GS1 Standards Used

This implementation is built on the following official GS1 standards and guidelines:

StandardHow We Use It
GS1 Digital LinkURI structure for @id, QR code encoding
EPCIS 2.0Event capture, JSON-LD serialization
Core Business Vocabulary (CBV) 2.0bizStep, disposition values
GS1 Web VocabularyProduct attributes, organization data
GS1 Application IdentifiersGTIN, serial, GLN, GIAI encoding
GS1 EUDR StandardregulatoryInformation pattern

Additional GS1 Resources:

Contact

For questions about the Battery DPP implementation, please contact us at info@openepcis.io.

Last updated: