Textile DPP
Textile DPP
In addition to the Phase-4a battery schema, qr3.app supports a full textile DPP schema based on the French Loi AGEC (Décret 2022-748) and the ESPR delegated act for textiles starting with Q3.3. Textile passports can be created, validated, served via QR, and checked for EU compliance live before save — the same way battery passports work.
Choose a category
category: "textile" selects the textile schema when creating a passport:
{ "category": "textile", "gtin": "04012345678901", "product_name": "Organic Cotton T-Shirt", "manufacturer": "EcoWear GmbH", "origin_country": "PT", "landing_locale": "en", "market_countries": ["DE", "AT", "FR"], "textile_data": { "fiber_composition": [ { "material": "cotton", "percentage": 95, "origin_country": "TR", "recycled_pct": 0 }, { "material": "elastane", "percentage": 5, "origin_country": "IT", "recycled_pct": 0 } ], "country_weaving_knitting": "PT", "country_dyeing_printing": "PT", "country_assembly": "PT", "contains_microplastics": false }}Mandatory fields (AGEC)
| Field | AGEC article | Content |
|---|---|---|
fiber_composition[] | A1 | All fiber shares, summing to 100% |
fiber_composition[].recycled_pct | A1 | Recycled share per fiber (default 0) |
country_weaving_knitting | A2 | Weaving/knitting country (ISO 3166-1 alpha-2) |
country_dyeing_printing | A3 | Dyeing/printing country |
country_assembly | A4 | Assembly/confection country |
contains_microplastics | A5 | Must be true when synthetic fibers total ≥ 50% |
svhc_substances[] | A6 | REACH SVHC substances from 0.1% concentration, with CAS numbers |
Microplastics rule: When the recipe contains at least 50% synthetic fibers (polyester, acrylic, polyamide, elastane, …), contains_microplastics: true must be set — otherwise the endpoint responds with 422. The consumer HTML view will render a prominent orange warning box with the French AGEC mandatory text (and, for DE/EN buyers, an additional “Mention obligatoire (marché français)” block whenever "FR" ∈ market_countries).
ESPR opt-in fields
These fields are optional but unlock the ESPR-ready badge in the dashboard and the consumer view:
durability_class— durability class A–Erecyclability_class— recyclability class A–Eexpected_lifetime_wash_cycles— expected wash cyclesexpected_lifetime_years— expected lifetime in yearspef_carbon_footprint_kg— Product Environmental Footprint (CO₂eq)recyclability_pct— share of recyclable materialrepair_instructions_url— HTTPS link to the repair manualspare_parts_available_until— ISO date until which spare parts are availabledisassembly_url— HTTPS link to disassembly instructionstake_back_info— free-text take-back info
When all fields B7–B15 are set, the EU validator emits the info badge TEXTILE_ESPR_READY.
Market countries (market_countries)
market_countries: string[] is a base field across all DPP categories (ISO 3166-1 alpha-2, up to 32 entries). It drives two mechanisms:
- Consumer HTML: When
"FR"is included and the user opens the page in a non-French locale, the AGEC mandatory text is additionally rendered in French under “Mention obligatoire (marché français)”. - EU validator (see EU Compliance): FR-specific rules activate — AGEC chain becomes an
error, greenwashing terms (biodégradable,écologique, …) are promoted fromwarningtoerror.
Greenwashing linter
The validator scans product_name and fiber_composition[].material against a curated prohibited-term list in DE/EN/FR. Hits (e.g. “natural”, “biodegradable”, “umweltfreundlich”) surface as a TEXTILE_GREENWASHING issue — warning outside the EU, error as soon as the market set includes FR.
Best practice: use only substantiated, specific terms ("Organic Cotton" over "Natural"; “100% recycled” over “eco-friendly”).
Pre-save validation
qr3.app ships a live preview in the dashboard (see EU Compliance) — you see AGEC hits, greenwashing warnings, and the ESPR-ready status before the passport is saved:
curl -X POST https://qr3.app/v1/dpp/validate \ -H "Authorization: Bearer $API_KEY" \ -H "X-Workspace-Id: $WS_ID" \ -H "Content-Type: application/json" \ -d @textile-payload.jsonThe response contains an eu_compliance block with compliant, espr_ready, issues[], and a summary by severity (errors / warnings / info).
Consumer view
The consumer HTML view at https://qr3.app/01/{GTIN}/21/{SERIAL} renders:
- AGEC warning box (when microplastics apply), including the FR mandatory block for the French market
- Origin chain: weaving/knitting → dyeing/printing → assembly (with flag pills)
- Fiber enrichment: per fiber origin country + recycled share
- SVHC list (REACH) with names, CAS numbers, concentrations
- Durability section (ESPR): wash cycles, lifetime, PEF CO₂, repair URL, spare parts
- Recyclability section: %, class, disassembly URL, take-back
- Market countries
Bulk import
The CSV/XLSX bulk import at POST /v1/dpp/import supports textiles — template at GET /v1/dpp/import/templates/textile?format=xlsx (or ?format=csv). See the API reference.
Next steps
- Create in dashboard:
/dashboard/dpp/new→ pick Textile, fill the form, watch the live preview, save. - Check EU compliance: see EU Compliance for rule details.
- GS1 onboarding: register GTINs and check ownership — see GS1 Identifiers & Onboarding.