Skip to content

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)

FieldAGEC articleContent
fiber_composition[]A1All fiber shares, summing to 100%
fiber_composition[].recycled_pctA1Recycled share per fiber (default 0)
country_weaving_knittingA2Weaving/knitting country (ISO 3166-1 alpha-2)
country_dyeing_printingA3Dyeing/printing country
country_assemblyA4Assembly/confection country
contains_microplasticsA5Must be true when synthetic fibers total ≥ 50%
svhc_substances[]A6REACH 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–E
  • recyclability_class — recyclability class A–E
  • expected_lifetime_wash_cycles — expected wash cycles
  • expected_lifetime_years — expected lifetime in years
  • pef_carbon_footprint_kg — Product Environmental Footprint (CO₂eq)
  • recyclability_pct — share of recyclable material
  • repair_instructions_url — HTTPS link to the repair manual
  • spare_parts_available_until — ISO date until which spare parts are available
  • disassembly_url — HTTPS link to disassembly instructions
  • take_back_info — free-text take-back info

When all fields B7B15 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:

  1. 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)”.
  2. EU validator (see EU Compliance): FR-specific rules activate — AGEC chain becomes an error, greenwashing terms (biodégradable, écologique, …) are promoted from warning to error.

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:

Terminal window
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.json

The 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.