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 (information duties under Art. R. 541-227 et seq. Code de l’environnement) starting with Q3.3, with fields prepared for the expected, not yet adopted ESPR delegated act for textiles. 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)

FieldInternal check IDContent
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 more than 50%
svhc_substances[]A6REACH SVHC substances from 0.1% concentration, with CAS numbers

Microplastics rule: When the recipe contains more than 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). qr3.app requires the flag above 50% synthetic fibres — matching the AGEC notice duty itself (Art. R. 541-228 XI Code de l’environnement).

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 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:

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