Textiel-DPP is live: controleer EU-compliance in seconden — voordat je opslaat

qr3.app ondersteunt nu volledige textielpaspoorten onder de Franse Loi AGEC + ESPR. Nieuw: een live validator en simulator die AGEC-overtredingen, greenwashing en ESPR-gereedheid al in het formulier signaleert — voordat je opslaat.

door qr3.app Team

Textiel-DPP is live: controleer EU-compliance in seconden — voordat je opslaat

Bovenop de battery-lane levert qr3.app nu een tweede volledige DPP-categorie: textiel onder de Franse Loi AGEC (Décret 2022-748) met velden die zijn voorbereid op de verwachte, nog niet aangenomen gedelegeerde handeling onder de ESPR. Tegelijk hebben we een live EU-validator ingebouwd die binnen het dashboard draait — voordat je een paspoort opslaat en voordat je een product in een nieuwe markt aanbiedt.

TL;DR, drie dingen die je op gangbare QR-platformen niet krijgt:

  1. Een volledig textiel-DPP-schema inclusief de verplichte AGEC-keten en ESPR-opt-in.
  2. Een live preview in het aanmaakformulier die AGEC-overtredingen en greenwashing direct signaleert.
  3. Een compliance-simulator op de detailpagina die de vraag beantwoordt: "wat gebeurt er als ik morgen Frankrijk aan mijn markten toevoeg?"

Waarom het textiel-DPP er vandaag al toe doet

De ESPR gedelegeerde handeling voor textiel is nog niet vastgesteld — het werkprogramma van de Commissie plant de vaststelling ervan voorlopig voor 2027, en de vereisten ervan zijn over het algemeen pas ten vroegste 18 maanden na de inwerkingtreding van toepassing. Tot dan wachten is geen optie, want een deel van de regelgeving is vandaag al juridisch bindend:

  • Loi AGEC (Frankrijk, sinds 2023-01-01): verplichte herkomstketen, microplastics-waarschuwing, REACH-SVHC-transparantie en een verbod op vage milieuclaims.
  • Sinds 2025 geldt AGEC voor producenten, importeurs en andere marktdeelnemers die textiel op de Franse markt aanbieden met meer dan €10M jaaromzet uit de betreffende producten en ten minste 10.000 stuks per jaar (vanaf 2023: €50M en 25.000 stuks; vanaf 2024: €20M en 10.000 stuks).
  • Sommatiebrieven tegen greenwashing bereikten in Frankrijk in 2024 een recordaantal — "natuurlijk", "biologisch afbreekbaar" of "écologique" zonder bewijs is duurder dan een documentatiesprint.

Verkoop je textiel naar de EU (of zelfs alleen naar Frankrijk), dan is je DPP-stack nu opzetten goedkoper dan in paniek migreren zodra de gedelegeerde handeling van de ESPR van toepassing wordt.

Het textielschema in één oogopslag

We bouwen direct voort op de catalogus van verplichte AGEC-velden:

{
  "category": "textile",
  "gtin": "04012345678901",
  "product_name": "Organic Cotton T-Shirt",
  "manufacturer": "EcoWear GmbH",
  "origin_country": "PT",
  "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
  }
}

De verplichte velden dekken de vier AGEC-regels die de Franse autoriteiten het vaakst handhaven:

Interne controle-ID Veld Wat de validator doet
A1 fiber_composition[].recycled_pct Alle vezelpercentages moeten samen 100% zijn
A2–A4 country_weaving_knitting / dyeing_printing / assembly Drie landen verplicht zodra FR in de markt zit
A5 contains_microplastics Geforceerd op true wanneer synthetische vezels meer dan 50% bedragen
A6 svhc_substances[] CAS-nummer + concentratie verplicht vanaf 0,1%

Daarbovenop ondersteunen we optionele ESPR-velden (duurzaamheid, PEF CO₂, reparatie-URL, deadline voor reserveonderdelen, recyclebaarheidsklasse). Zijn ze allemaal ingevuld, dan toont het dashboard een ESPR-ready-badge — perfect voor fabrikanten die nu tijd investeren om zonder migratie klaar te zijn zodra de gedelegeerde handeling van de ESPR van toepassing wordt.

Live preview: zie fouten voordat je opslaat

De gebruikelijke flow was: formulier invullen → opslaan → naar de detailpagina springen → compliancefouten lezen → terug naar het formulier. Dat doet pijn op het moment dat je een batch aanmaakt.

Sinds deze release draait de EU-validator stateless binnen het aanmaakformulier:

  • POST /v1/dpp/validate geeft nu een extra veld eu_compliance terug met compliant, espr_ready, issues[] en een samenvatting gegroepeerd per ernst, naast de Zod-validatie.
  • Het dashboard rendert de issues direct onder het validatiepaneel, gegroepeerd op error / warning / info.
  • Een save-guard-banner verschijnt boven de verzendknoppen ("2 fouten en 1 waarschuwing — toch opslaan?") zodra er issues overblijven. Het opslaan wordt niet geblokkeerd, maar je ziet zwart-op-wit wat je accepteert.

Voor jou als ontwikkelaar betekent dit: je kunt de validator overal inzetten — in je eigen importflow, in een CI-check, in een Cursor-agent-hook.

curl -X POST https://qr3.app/v1/dpp/validate \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d @textile-payload.json | jq '.data.eu_compliance.summary'

De compliance-simulator: "wat als ik Frankrijk toevoeg?"

De feature die ik persoonlijk het liefst wilde, is de compliance-simulator op de detailpagina van een bestaand DPP. Typisch scenario:

Je hebt 500 textielpaspoorten in het systeem, allemaal voor de Duitse markt. Sales komt binnen: "We breiden volgende maand uit naar Frankrijk." De vraag: welke van je paspoorten breken plotseling met AGEC?

Open een paspoort in het dashboard en onder de EU-compliancesectie verschijnt een nieuwe kaart: Compliance-simulator.

  • Klik op de chip FR (naast de presets DE/AT/FR/IT/ES/NL) of typ een eigen ISO-code.
  • Optioneel: zet de status van draft op live.
  • Knop Preview EU impact.

De UI laat je meteen zien, zonder het paspoort op te slaan:

  • Nieuwe foutkaarten (bijv. TEXTILE_AGEC_REQUIRED op het veldpad textile_data.country_weaving_knitting).
  • Een greenwashing-waarschuwing die escaleert van warning naar error omdat FR in de markt zit.
  • Een tag preview.changed_fields die precies aanwijst welke velden zouden veranderen.

Ben je tevreden, dan duwt Save changes de delta door via PUT /v1/dpp/:id. Zo niet — Reset, en er is niets gebeurd.

Onder de motorkap is dit één nieuw endpoint:

curl -X POST https://qr3.app/v1/dpp/$DPP_ID/validate-update \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "market_countries": ["DE", "FR"], "status": "live" }'

De worker voegt de patch in het geheugen samen met het bestaande DPP en draait de EU-validator over het resultaat — zonder schrijftoegang. Een lege body is toegestaan en geeft het huidige oordeel terug.

Waarom dit meer is dan een "nice to have"

Drie redenen waarom de simulator geen gimmick is:

  1. Pre-sales-check voor marktexpansie. Sales kan binnen 60 seconden zeggen welke producten FR-ready zijn en hoe duur een uitrol zou worden.
  2. Ontkoppel data-ops van compliance-ops. Compliance hoeft niet langer elk datadefect achterna te jagen — draai de simulator één keer, filter schoon, open tickets.
  3. AI-agent-vriendelijk. Het endpoint heeft exact dezelfde vorm als POST /v1/dpp/validate. Een Cursor- of Claude-agent kan het direct aanroepen vanuit een taak als "vind FR-ready paspoorten" — zonder tussenliggend mini-script.

Nog steeds API-first

Alles wat zichtbaar is in het dashboard, is bereikbaar via de API:

  • POST /v1/dpp/validate — stateless validator voor aanmaakflows.
  • POST /v1/dpp/:id/validate-update — stateless validator voor gedeeltelijke updates (de simulator).
  • GET /v1/dpp/:id/eu-compliance — persistente check voor bestaande paspoorten (ideaal voor CI).
  • POST /v1/dpp/import — CSV/XLSX-bulkimport met nieuwe textieltemplates (GET /v1/dpp/import/templates/textile?format=xlsx).
  • GET /01/{GTIN}/21/{SERIAL} — consumentenweergave met de AGEC-microplastics-waarschuwingsbox, herkomstketen, SVHC-lijst en duurzaamheidssectie.

Alle drie de validator-endpoints geven dezelfde EuComplianceResult-vorm terug. Zo bouw je issue-groepering en severity-rendering precies één keer.

Non-breaking-garantie

Alles in deze release is additief:

  • Bestaande POST /v1/dpp/validate-clients kunnen het nieuwe veld eu_compliance zonder aanpassingen negeren.
  • Battery-flows blijven ongewijzigd.
  • market_countries is optioneel en valt standaard terug op [].

Details staan in de changelog en ons API-versioneringsbeleid.

Aan de slag

Heb je een grote catalogus textielpaspoorten of moet je AGEC/Frankrijk-risico's auditen, neem dan contact met ons op — we zijn ingericht voor pilotklanten tussen 500 en 50.000 SKU's.