
Battery Passport Registration in the EU DPP Registry
Battery passport registration in the EU DPP Registry works through an API the European Commission documented on Friday 30 October 2026. The manufacturer sends the passport's unique product identifier (UPI), a URL, to the Registry. The Registry fetches the passport from that address, validates it against the Commission's schemas and registers it only if it conforms. It does not keep a copy of the passport. The obligation applies from 18 February 2027 to each LMT battery, each industrial battery above 2 kWh and each EV battery.
What the Commission published on 30 October 2026
The documents are on the Commission's DPP resources and documentation page.
| Document | Date | What it covers |
|---|---|---|
| API Integration Guide for Economic Operators, v1.0 | 30 Oct 2026 | Registering passports and following each request |
| OpenAPI specifications, 1.0.0 | 30 Oct 2026 | The Registry, the Activity Dashboard and shared components |
| Semantic Data Guide | 30 Oct 2026 | How vocabularies, shapes and schemas fit together |
| Semantic Data Artifacts, 1.0.0 | 30 Oct 2026 | JSON Schema, JSON-LD contexts, SHACL shapes and XSD for core, batteries and the EV, LMT and industrial sub-groups |
| Service Account Technical Integration Guide | 30 Oct 2026 | Machine-to-machine login to the Registry |
| Self-Hosted Authentication Guide, v1.0 | 30 Oct 2026 | How your server answers the Registry's authenticated fetch |
| Battery data points by category, v3.2 | 19 Oct 2026 | Which data points are mandatory for EV, LMT and industrial batteries |
The rules for the Registry are in Implementing Regulation (EU) 2026/1778. The API guide says the Registry reads and validates each passport "in accordance with" that regulation. Our article on the Registry's launch in July covers its legal basis.
Which batteries need a registered passport
Article 77(1) of the Battery Regulation, Regulation (EU) 2023/1542, requires a battery passport from 18 February 2027 for:
- each LMT battery (light means of transport, such as e-bikes and e-scooters)
- each industrial battery with a capacity above 2 kWh
- each electric vehicle battery
Portable batteries and SLI batteries are not covered. The battery passport article covers what the passport holds.
In the Registry, these batteries belong to the product group BATTERIES with a sub-group per category. The codes come from GET /api/v1/dpp/product-groups, and the guide says to use the values returned there. Each passport in a submission also states its granularity: item, batch or model.
How registration works
The illustration at the top of this article shows the four steps.
1. Verify your organisation
Only a verified organisation can register passports. You sign in with EU Login, enrol the organisation and submit a signed declaration. A legal person seals it with a qualified electronic seal (QSeal). The User Guide for Economic Operators (v3, 14 September 2026) describes each step.
2. Create a service account
Machine access uses OAuth 2.0 client credentials with private_key_jwt. Shared client secrets are not supported.
- An administrator creates the service account; an organisation can have at most 5.
- It needs the role that allows registering passports.
- Keys are elliptic-curve: P-256, P-384 or P-521.
- Each access token lives at most 15 minutes.
- The recommended validity of a credential is one year, at most two. Two can be active at once, so keys can be rotated without a break.
The private key stays with the economic operator. The guide recommends generating it in a hardware security module.
3. Submit the passports
You send POST /api/v1/dpp/submission with 1 to 100 passports that share the same product group and sub-group. Every request needs an Idempotency-Key header of at most 128 characters. A retry with the same key returns the original task instead of creating a second one. The example from the API guide:
{
"productGroup": "BATTERIES",
"productSubGroup": "EV",
"submissionItems": [
{
"uniqueProductIdentifier": "https://example.com/dpp/battery/0001",
"granularity": "item",
"batchIdentifier": "xxx-000",
"modelIdentifier": "yyy-111"
}
]
}
4. Follow the task
The Registry answers 202 Accepted with a taskId. That means the request was accepted for processing, not that anything is registered. You read the status with GET /api/v1/tasks/{taskId}: PENDING, PROCESSING, COMPLETED or ERROR. A completed task has an outcome of SUCCEEDED or FAILED. The guide recommends polling at 1, 1, 2, 3, 5, 8, 13, 21, 34 and 55 seconds, then every 60 seconds, and respecting Retry-After. Per-passport results come from GET /api/v1/tasks/{taskId}/items, in JSON or CSV.
A submission is atomic. If one passport fails validation, none of the passports in that submission are registered, including those that passed.
What the Registry checks when it fetches your passport
The Registry uses the UPI exactly as submitted, as the first address of the passport. If it cannot reach the passport, the item fails with UPI_NOT_RESOLVABLE.
First fetch, without login. The Registry sends a GET with no credentials. It follows at most 3 redirects across the whole resolution, so every step must answer anonymously. The final address answers 200 with the public part of the passport.
Format. The Semantic Data Guide says the Registry requests JSON, the only mandatory format under EN 18216:2026. The Self-Hosted Authentication Guide also allows JSON-LD and XML, with JSON as the baseline.
Schemas. Validation runs against the semantic artifacts, version 1.0.0:
- The core schema requires 6 fields:
digitalProductPassportId,uniqueProductIdentifier,granularity,dppStatus,lastUpdateandcontentSpecificationIds. contentSpecificationIdsnames the specifications the passport follows: core, batteries and, where it applies, the sub-group.- The public battery view requires 25 fields. They include the manufacturer, category, place and date of manufacture, weight, capacity, chemistry, hazardous substances, extinguishing agent, critical raw materials, voltages, power, internal resistance, temperature range, the EU declaration of conformity and waste battery information.
- Coded values such as category, chemistry and units are URIs from the Commission's vocabularies, not free text.
The battery data is split into four views: pub (public) and the restricted res1, res2 and res3.
Second fetch, with a token. The Registry then calls the same address with a bearer token from the DPP Authentication Service. Your server checks the token itself against the Commission's published keys. It must check the token's audience (your own HTTPS origin), its scope dpp:registry:read and a lifetime of at most 120 seconds. Then it answers with the public plus the restricted data.
| Request to your passport address | Your server answers |
|---|---|
| No Authorization header | 200, public data only |
| Valid token, requestor authorised | 200, public plus restricted data |
| Invalid, expired or untrusted token | 401, never the public data as a fallback |
| Valid token, wrong scope or requestor not authorised | 403, no restricted data |
The guide also asks for Vary: Authorization, so caches keep the two answers apart, and no redirects after authentication.
What is kept. The API guide states that the Registry does not persist the passport content it fetches. The passport stays on your server or your provider's.
When registration opens
The DPP Helpdesk told us on 4 November 2026 that registration is not yet available in any environment. According to the Helpdesk, a test API is planned in the acceptance environment in December, and production is targeted for the end of January 2027. The obligation under Article 77(1) applies from 18 February 2027.
That leaves a short window between production opening and the obligation. The work that does not depend on the Registry being open can be done now.
What a battery manufacturer needs before 18 February 2027
| Step | Source |
|---|---|
| List the batteries in scope: LMT, industrial above 2 kWh, EV | Regulation (EU) 2023/1542, Article 77(1) |
| Verify the organisation in the Registry with EU Login and a qualified electronic seal | User Guide for Economic Operators, v3 |
| Create a service account and an EC key pair, private key in an HSM where possible | Service Account Technical Integration Guide |
| Serve each passport at its UPI without login, in JSON, with at most 3 redirects | Self-Hosted Authentication Guide, chapter 9 |
Map the data to the core and battery schemas 1.0.0, with contentSpecificationIds and vocabulary URIs |
Semantic Data Guide and Artifacts |
Split the data into pub, res1, res2 and res3, and serve the restricted views only to a valid Registry token |
Self-Hosted Authentication Guide |
| Validate every passport before submission, since one failure stops the whole submission | API Integration Guide, section 3.2 |
Build the submission client: batches of up to 100, Idempotency-Key, polling, and a stored result per passport |
API Integration Guide, chapters 3 and 4 |
| Test in the acceptance environment when the test API opens | DPP Helpdesk |
What DPP Agent does for battery passports
- Built from the data you already have. Passports are filled from Shopify, Centra, Akeneo, inRiver, a CSV file or the API, so nothing is typed in twice.
- The factory fills in what only it knows. A supplier link lets the manufacturing plant enter the place and date of manufacture, hazardous substances and internal resistance, and you approve each value.
- One passport per battery. Each battery has its serial number in its GS1 Digital Link address, with a QR code and a label ready to print.
- Updates per battery. State of health, status, charging cycles and negative events are kept per battery, and every change is saved in the version history. A battery repurposed for a new use gets a new passport linked to the passport of the original battery (Article 77(7)).
- The right data for the right reader. The public sees the public part. Repairers, refurbishers and recyclers get a share link to the data for persons with a legitimate interest, and authorities get a link to theirs (Article 77(2)).
- Ready for the EU DPP Registry. Each passport answers in the Registry's own format, and with the restricted levels when the Registry reads it with its token.
- Gaps shown before you register. The DPP validator shows what is missing against the Commission's schemas, so you can fix it before you submit.
- In your languages and your brand. The passport is shown in your customers' languages and in your brand's look.
The DPP Academy episode on the EU registry explains who uploads what, and the episode on batteries covers the rest of the battery passport.
Frequently asked questions
When can battery passports be registered in the EU DPP Registry?
Not yet. According to the DPP Helpdesk on 4 November 2026, a test API is planned in the acceptance environment in December and production is targeted for the end of January 2027. The passport obligation applies from 18 February 2027.
Does the EU DPP Registry store the battery passport?
No. The Registry fetches the passport from its UPI and validates it, but the API Integration Guide states that it does not persist the passport content. The passport stays at its own address.
How many battery passports can be registered in one request?
Between 1 and 100, all with the same product group and sub-group. Each request needs an Idempotency-Key header.
What happens if one passport in a submission fails validation?
None of the passports in that submission are registered. Submissions are atomic, and the per-item results show which passport failed.
Which format must a battery passport have for registration?
JSON. The Semantic Data Guide says the Registry requests JSON, the only mandatory format under EN 18216:2026, and validates it against the core and battery schemas 1.0.0.
Sources
- Regulation (EU) 2023/1542 (Battery Regulation): Article 77(1) (battery passport). EUR-Lex
- Commission Implementing Regulation (EU) 2026/1778 on the digital product passport registry. EUR-Lex
- European Commission, DPP resources and documentation: API Integration Guide v1.0, OpenAPI specifications 1.0.0, Semantic Data Guide, Semantic Data Artifacts 1.0.0, Service Account Technical Integration Guide and Self-Hosted Authentication Guide v1.0 (30 October 2026); Battery data points by category v3.2 (19 October 2026); User Guide for Economic Operators v3 (14 September 2026). Commission page
- DPP Helpdesk: answer of 4 November 2026 on the availability of the registration API.