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 Digital Link — Resolvable URIs as product identifiers
- EPCIS 2.0 — Event-based traceability with JSON-LD
- GS1 Web Vocabulary — Linked data vocabulary
- CBV 2.0 — Business vocabulary (bizStep, disposition)
GS1 Best Practices We Follow:
- URIs that resolve (scan QR → get data)
- GLN for organizations, GTIN+serial for products
- EPCIS events with full provenance
regulatoryInformationpattern (same as GS1 EUDR)
We invite everyone to use these templates — feedback welcome!
Key Advantages:
- Resolvable Identifiers: Battery
@idIS 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
Quick Links
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
| Prefix | Namespace | Purpose |
|---|---|---|
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:BatteryChemistrybattery:TechnicalSpecificationbattery:HazardousSubstancebattery:NegativeEventbattery: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
| Requirement | Implementation |
|---|---|
| Unique identifier | @id = GS1 Digital Link |
| Manufacturer info | gs1:manufacturer with GLN |
| Carbon footprint | EPCIS event with lifecycle breakdown |
| State of Health | EPCIS sensorReport |
| Material composition | battery:materialComposition |
| Hazardous substances | battery:hazardousSubstances |
| Recycled content | Pre/post consumer split |
| Dismantling info | battery:dismantlingDocuments |
| Due diligence | battery:supplyChainDueDiligence |
Unit of Measure
All measurements use UN/CEFACT Rec 20 codes:
| Measurement | Code | Symbol |
|---|---|---|
| Percentage | P1 | % |
| Ampere-hour | AH | Ah |
| Kilowatt-hour | KWH | kWh |
| Volt | VLT | V |
| Kilowatt | KWT | kW |
| Ohm | OHM | Ω |
| Celsius | CEL | °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
- Clone the repository
git clone https://github.com/openepcis/openepcis-battery-dpp - Review example files
examples/battery-product.jsonld- Complete product masterepcis/*.jsonld- Event examples
- Configure your GS1 Digital Link resolver
- Set up content negotiation
- Link to your EPCIS repository
- Integrate EPCIS event capture
- Use OpenEPCIS tools for event validation
- Configure sensor data collection from BMS
Resources
- Implementation Guide
- EPCIS Event Types
- Complete Examples
- Battery vocabulary browser — the live ontology
GS1 Standards Used
This implementation is built on the following official GS1 standards and guidelines:
| Standard | How We Use It |
|---|---|
| GS1 Digital Link | URI structure for @id, QR code encoding |
| EPCIS 2.0 | Event capture, JSON-LD serialization |
| Core Business Vocabulary (CBV) 2.0 | bizStep, disposition values |
| GS1 Web Vocabulary | Product attributes, organization data |
| GS1 Application Identifiers | GTIN, serial, GLN, GIAI encoding |
| GS1 EUDR Standard | regulatoryInformation pattern |
Additional GS1 Resources:
Contact
For questions about the Battery DPP implementation, please contact us at info@openepcis.io.