Beschrijving
BuddyPilot Withdrawal voor WooCommerce implementeert de verplichte herroepingsfunctie die vereist is door artikel 11a van EU-richtlijn 2023/2673 voor onlinehandelaren die aan EU-consumenten verkopen.
Vanaf 19 juni 2026 moet elke WooCommerce winkel met EU klanten een duidelijk zichtbare, gemakkelijk toegankelijke herroepingsfunctie (“herroep de overeenkomst hier” knop) aanbieden naast de bestaande informatievereisten voor herroepingsrechten.
Wat de plugin doet
Klantgericht
- Artikel 11a conforme knop “Hier van contract afzien” op de Mijn account bestelling detail pagina
- Twee-staps opnameformulier: item selectie, voorbeeld van verklaring, bevestigen met één klik
- Ondersteuning voor variabele producten: elke variant (maat, kleur, enz.) verschijnt met al zijn volledige attribuut labels als aparte regel in het herroepingsformulier.
- Gastafrekening ondersteuning via directe verificatiestroom (e-mail + bestelnummer, geen login vereist)
- Mijn Account herroepingsgeschiedenis lijst en verklaringsdetailpagina
- Vastleggen van toestemming conform artikel 16(m) bij afrekening voor digitale en virtuele goederen (configureerbaar: vereist, optioneel of verborgen)
- E-mail voor klantverklaring die dient als duurzame erkenning zoals vereist door artikel 11a, lid 3
- Intrekking opgelost e-mail verzonden naar de klant nadat de operator de declaratie sluit; bevat de link naar het EU ODR-platform (ec.europa.eu/consumers/odr) wanneer een item is afgewezen
- Oplossing status per item zichtbaar in het opnameformulier nadat een verklaring is gesloten: elk item toont een badge “geaccepteerd” of “afgewezen” met de reden voor afwijzing en ODR link, zodat de klant de uitkomst begrijpt zonder contact op te nemen met ondersteuning
Gericht op de operator
- Bestel metabox bewerken voor registratie van declaraties ontvangen per telefoon, post of persoonlijk
- Standalone “Nieuwe declaratie toevoegen” pagina voor wachtrijen met veel operators zonder de declaratielijst te verlaten
- Declaratieslijst met zoeken, filteren en sorteren in WooCommerce beheer
- Declaratie detail pagina met volledig audit trail en afhandelingsworkflow: alles accepteren, alles afwijzen of gedeeltelijke afhandeling met beslissingen per item en individuele afwijzingsredenen
- E-mail beheerdermelding onmiddellijk verzonden wanneer een klant een herroeping indient
Juridisch en conformiteit
- Aangepaste bestelstatus
wc-withdrawal(optioneel, geregistreerd door plugin) met een volledige wijzigingsgeschiedenis gelogd als WooCommerce bestelnotities - Bijlage I(A) herroepingsinformatiepagina beschikbaar om in één klik te genereren vanuit Instellingen
- Bijlage I(B) model herroepingsformulierpagina beschikbaar om in één klik te genereren vanuit Instellingen, gepubliceerd als WordPress pagina en automatisch gekoppeld vanuit bestellings-e-mails en Mijn Account
- Configureerbare restitutieperiode (standaard 14 dagen, overeenkomend met je contractvoorwaarden)
- Configureerbare “bezorgd” statussen die de herroepingsklok starten
- Retourkostenattributie (consument betaalt of handelaar betaalt, per Bijlage I(A) vereisten)
- AVG/GDPR persoonsgegevens exporteren en anonimiseren compatibel met WordPress privacytools
- HPOS-compatibiliteit (High-Performance Order Storage) en verouderde post-meta modus
- WCAG 2.2 AA toegankelijkheid naleving op alle klantgerichte formulieren
- Pool en Engels vertaald inbegrepen
Pro add-on
Uitgebreide functionaliteit is beschikbaar via de BuddyPilot Withdrawal Pro add-on:
- Door operator goedgekeurde automatische terugbetaling opgebouwd uit aangegeven items (één klik vanaf het aangiftescherm)
- Verificatie van downloadteller: herstelt herroepingsrecht wanneer een digitaal product nooit daadwerkelijk is gedownload, waardoor ongegronde weigeringen van restitutie worden verminderd
- WooCommerce Subscriptions ondersteuning: annuleert toekomstige verlengingen, deelt de huidige factureringsperiode pro-rato in volgens artikel 9, lid 2, onder b), punt iii).
- WooCommerce Product Bundles ondersteuning: automatische verwerking per bundeltype; voor per-item bundels met een ingestelde korting kun je kiezen of gedeeltelijke retouren het betaalde bedrag behouden of het volledige bundelkorting verbeuren.
- PDF-export van de juridische herroepingsverklaring
- Landspecifieke Bijlage I(B) formulier generatie
Installatie
- Upload de plugin map naar
/wp-content/plugins/, of installeer via Plugins > Nieuwe toevoegen. - Activeer de plugin via het Plugins menu in WordPress.
- Ga naar WooCommerce > Instellingen > Herroeping en configureer:
- Algemeen: herroepingsperiode, genade termijn, verzonden statussen
- Handelsgegevens: naam, adres, retouradres, retourkostentoewijzing
- Klantervaringen: toestemmingsmodus voor digitale goederen, herroepingsinformatiepagina
- Klik in de sectie Klantervaring op “Informatiepagina voor herroeping aanmaken” om een EU-conform Annex I(A) bericht en Annex I(B) modelformulier te publiceren. De pagina URL wordt automatisch gelinkt vanuit bestelling e-mails en het Mijn account scherm bestelling bekijken.
- Klanten die in aanmerking komen om zich terug te trekken zien een “Hier van contract terugtrekken” Call To Action op hun bestelpagina. Het formulier werkt zonder JavaScript.
FAQ
-
Werkt de plugin met gastafrekening?
-
Ja. Maak een speciale herroepingsformulierpagina aan via WooCommerce > Instellingen > Herroeping > Klant (één klik). Plaats de shortcode
[buddypilot_withdrawal_guest_form]op die pagina. Gastklanten voeren hun bestel-nummer en factuuradres e-mail in; een beveiligde beveiligde link wordt naar het factuuradres verzonden. Door op de link te klikken, opent het volledige interactieve herroepingsformulier zonder dat een account nodig is. -
Verwerkt de plugin automatisch terugbetalingen?
-
De gratis versie registreert de herroepingsverklaring en wijzigt de bestelling status naar
wc-withdrawal. De beheerder verwerkt de terugbetaling met native WooCommerce tools. Automatische terugbetaling met één klik op basis van aangegeven items is beschikbaar in de Pro addon. -
Wat doet de plugin NIET?
-
De plugin registreert herroepingsverklaringen als juridische documenten en stelt zowel de klant als de operator op de hoogte. Hij betaalt geen geld automatisch terug, verifieert geen retourzendingen, handhaaft geen terugbetalingstermijnen en behandelt geen boekhouding en BTW. De winkeloperator is verantwoordelijk voor het verwerken van de terugbetaling binnen de wettelijk vereiste periode (standaard 14 dagen, configureerbaar onder WooCommerce, Instellingen, Herroeping, Algemeen).
-
Ondersteunt de plugin variabele producten?
-
Ja, zonder extra configuratie nodig. Variabele producten (verschillende maten, kleuren, enz.) worden volledig ondersteund in de gratis versie. Elke variant verschijnt in het herroepingsformulier als een aparte regel met de volledige attribuut labels (bijv. T-shirt, maat: L, kleur: zwart), zodat de klant precies aangeeft wat die terugstuurt en de operator hetzelfde detail ziet in de declaratielijst en op de detailpagina van de declaratie.
-
Werkt de plugin met WooCommerce Subscriptions of Product Bundles?
-
Afonnements-, bundel- en samengestelde productverwerking (annulering van verlengingen, proratisering, bundel-restitutie-modi) maakt deel uit van de Pro add-on. De gratis versie behandelt ze als standaardproducten.
-
Dekt de plugin de toestemming van artikel 16(m) voor digitale goederen?
-
Ja. De plugin voegt een expliciet toestemmingsvakje toe bij het afrekenen wanneer de winkelwagen downloadbare of virtuele producten bevat. De operator kan kiezen tussen “vereist voor aankoop”, “optioneel” of “verborgen” (handelaar ziet af van de uitsluiting). Toestemming wordt vastgelegd op de bestelling en weergegeven in het herroepingsformulier.
-
Wanneer begint de herroepingsklok?
-
De klok start vanaf het exacte moment dat de bestelling status wijzigt naar een van de statussen “geleverd” die zijn ingesteld onder WooCommerce > Instellingen > Herroeping > Algemeen. De plugin registreert het precieze tijdstempel van die statuswijziging. Zolang de deadline niet is verstreken, ziet de klant hoeveel dagen er overblijven in het herroepingsformulier; zodra de deadline is verstreken, wordt de herroepingsknop niet meer getoond. Elke ingebouwde of aangepaste WooCommerce bestelling status kan worden gekoppeld als trigger voor “geleverd” (bijv. “Afgerond”, een aangepaste status “Verzonden”, enz.). De lijst leeg laten betekent dat de klok nooit start, wat handig is tijdens het testen of wanneer je herroeping onbeperkt beschikbaar wilt maken.
-
Is de plugin HPOS-compatibel?
-
Ja. De plugin is volledig compatibel met WooCommerce High-Performance Order Storage (HPOS) en valt automatisch terug op de verouderde post-meta-modus.
Beoordelingen
Bijdragers & ontwikkelaars
“BuddyPilot Withdrawal (Easy Returns)” is open source software. De volgende personen hebben bijgedragen aan deze plugin.
Bijdragers“BuddyPilot Withdrawal (Easy Returns)” is vertaald in 5 localen. Dank voor de vertalers voor hun bijdragen.
Vertaal “BuddyPilot Withdrawal (Easy Returns)” in je eigen taal.
Interesse in ontwikkeling?
Bekijk de code, haal de SVN repository op, of abonneer je op het ontwikkellog via RSS.
Changelog
1.0.13
- Functie: operators kunnen nu een aangifte sluiten als “Alle items afwijzen” of “Gedeeltelijke oplossing” rechtstreeks vanaf de detail pagina van de aangifte. Voorheen was alleen volledige acceptatie beschikbaar vanaf dat scherm.
- Functie: gedeeltelijke oplossingsmodus staat een beslissing per item voor accepteren/weigeren toe met een verplichte afwijzingsreden voor elk afgewezen item, zodat de klant een gespecificeerde uitkomst ontvangt in plaats van één algemene beslissing.
- Functie: e-mails over afwijzing en gedeeltelijke oplossing bevatten nu de EU ODR (Online geschillenbeslechting) platform link (ec.europa.eu/consumers/odr), zoals vereist voor grensoverschrijdende geschil meldingen onder artikel 11a.
- Functie: het klantgerichte intrekkingsformulier toont nu per item resolutie badges voor volledig afgehandelde verklaringen: geaccepteerde items tonen een bevestigingsbadge, afgewezen items tonen de afwijzingsreden en een ODR platform link. Eerder toonde het formulier een algemeen bericht “bestelling niet geschikt”.
- Verbeterd: het opnieuw openen van een verklaring reset nu het resolutietype en de operatornotitie naar null, zodat de operator met een schone lei begint bij het corrigeren van een foutieve beslissing.
- Beveiliging: financiële snapshot velden in het declaratierecord (item totaal, subtotaal, belasting) zijn onveranderlijk; ze kunnen niet worden overschreven door POST manipulatie tijdens de oplossingsstap.
- Beveiliging: Het afhandelingstype wordt gevalideerd aan de hand van een strikte server-side lijst toegestaan (accepted / rejected / partial); willekeurige waarden worden afgewezen voordat ze de database bereiken.
- Beveiliging: Al gesloten verklaringen wijzen verouderde afhandelingspogingen af met een expliciete foutmelding, waardoor onbedoeld overschrijven bij gelijktijdige operatorsessies wordt voorkomen.
1.0.12
- Opgelost: Het toestemmingsvakje van artikel 16(m) werd bij het afrekenen niet weergegeven in winkels die WooCommerce 8.6 of hoger gebruiken met een klassieke op shortcode gebaseerde checkout (bijv. Blocksy-thema). De plugin detecteert nu correct of de blokcheckout in gebruik is voordat de toestemmingsverzameling via de Additional Checkout Fields API wordt gerouteerd.
- Verbeterd: gastheroepingssessie is nu beperkt tot 15 minuten na het klikken op de magische link, waardoor het venster waarin een gedeelde of inactieve browsersessie misbruikt zou kunnen worden, wordt verkleind.
- Verbeterd: Magic link inwissel endpoint past nu snelheidsbeperking toe per bestelling per IP, consistent met het e-mail verificatie endpoint.
- Verbeterd: verklaring detail en statustoggle in het beheerpaneel verifiëren nu dat de huidige gebruiker toegang heeft tot de gekoppelde bestelling, wat zorgt voor juiste toegangscontrole op setups met meerdere verkopers.
- Verbeterd: tekst van door operatoren aangepaste toestemmingslabel wordt gesaneerd wanneer deze wordt opgeslagen, zodat de opgeslagen optiewaarde altijd schone HTML is.
- Verbeterd: plugin verzamelt of slaat het browserstring voor de user-medewerker niet langer op bij herroepingsverklaringen. Het veld diende geen actief doel en het verwijderen daarvan reduceert de voetafdruk van persoonlijke gegevens. Bestaande installaties krijgen de kolom automatisch verwijderd bij het eerste laden na het updaten (geen gegevensverlies; de juridische verklaringsgegevens blijven volledig behouden).
1.0.11
- Opgelost: De registratie van e-mailklassen van de plugin is nu per klasse geïsoleerd. Een constructorfout in een klasse verspreidt zich niet langer naar WooCommerce’s e-mailverzending en blokkeert niet langer alle transactionele WooCommerce-e-mails (nieuwe bestelling, klantverwerking, enz.).
1.0.10
- Opgelost: proberen bestellingen in opname status bulk te wijzigen naar afgerond of verwerking activeert nu een beheer bericht dat de operator informeert hoeveel bestellingen zijn overgeslagen omdat de statuswijziging hiervoor niet is toegestaan en dat die bestellingen afzonderlijk moeten worden afgehandeld.
1.0.9
- Functie: gast verificatieformulier accepteert nu aangepaste bestelnummers van externe hernummering plugins (bijv. WebToffee Advanced Order Numbers, Custom Order Numbers for WooCommerce by Tyche Softwares). Gasten kunnen het geformatteerde nummer invoeren dat in hun bevestigings e-mail wordt getoond in plaats van de interne numerieke bestelling ID.
- Functie: invoer voor bestelnummer op het gastverificatieformulier dwingt geen numeriek toetsenbord meer af op mobiele apparaten, waardoor gasten bestelnummers met prefix kunnen typen, zoals ORD-2024-1042.
- Beveiliging: invoerlengte op het gastverificatieformulier is nu beperkt vóór het oplossen van bestellingen, waardoor gemanipuleerde aanvragen geen volledige database scans kunnen activeren in winkels met aangepaste plugins voor bestelnummers geïnstalleerd.
1.0.8
- Functie: herroepingsinformatiepagina wordt nu gemaakt als native WordPress blokken, waardoor de operator de juridische formulering rechtstreeks in de blokkeneditor kan bewerken.
- Functie: Nieuwe shortcode [buddypilot_withdrawal_info_block] geeft de dynamische secties (handelscontactgegevens, retouradres, CTA-knop) afzonderlijk weer zodat ze altijd huidige instellingen weerspiegelen, zelfs na handmatige bewerkingen van de omringende tekst.
- Functie: nieuwe knop “Inhoud van informatiepagina overschrijven” in WooCommerce > instellingen > herroeping > klant ververst de pagina op elk moment met de nieuwste model meldingstekst.
- Opgelost: bestellingen die via de WooCommerce REST API zijn geïmporteerd (bijv. BaseLinker) werden steeds opnieuw geïmporteerd in een lus omdat de plugin onnodige toestemming meta naar elke nieuwe bestelling schreef. De plugin schrijft geen meta meer naar via API aangemaakte bestellingen die geen digitale items bevatten.
1.0.7
- Verbeterd: afleveringsvolging gebruikt nu een speciale databasetabel in plaats van ordermetadata, waardoor integraties voor synchronisatie van derden (bijv. BaseLinker) voorkomen dat bestellingen bij elke afleveringsstatusupdate opnieuw worden geïmporteerd.
- Verbeterd: bevestigingsscherm leest nu de ingestelde herroepingsperiode dynamisch in plaats van een vast ingestelde waarde.
- Verbeterd: snelheidsbeperking wordt nu verwerkt met één atomaire databasebewerking.
- Verbeterd: verminderde database-query op de herroepingslijstpagina.
- Opgelost: diverse codeerstandaarden en kleine veiligheidsversterking.
1.0.6
- Functie: gastklanten (niet ingelogd) kunnen nu een herroepingsverklaring rechtstreeks vanuit een speciale formumierpagina indienen. Nadat zij hun bestel-nummer en factuur-e-mail hebben ingevoerd, wordt een beveiligde eenmalige beveiligde link naar het factuuradres verzonden; erop klikken opent het volledige interactieve herroepingsformulier zonder account.
- Functie: nieuwe shortcode
[buddypilot_withdrawal_guest_form]voor de gastherroepingsformulierpagina. De pagina en shortcode kunnen met een enkele klik worden gemaakt vanuit WooCommerce > Instellingen > Herroeping > Klant. - Functie: shortcode
[buddypilot_withdrawal_information]toont nu een optionele “Herroepingsformulier online indienen” oproep tot actie-knop die linkt naar de gastformulierpagina wanneer de formulierpagina is geconfigureerd. Bestaande informatiepagina’s worden niet gewijzigd. - Functie: nieuwe transactionele e-mail “Herroepingsformulieraccesslink (gast)” met de beveiligde link; configureerbaar onder WooCommerce > Instellingen > E-mails.
1.0.5
- Plugin hernoemd naar BuddyPilot Withdrawal (Easy Returns) voor betere vindbaarheid.
- Volledige vertalingen toegevoegd voor alle 24 officiële EU-talen: bg, cs, da, de (de_DE, de_AT, de_CH), el, es, et, fi, fr (fr_FR, fr_BE, fr_CH), ga, hr, hu, it, lt, lv, mt, nl (nl_NL, nl_BE), pl, pt, ro, sk, sl, sv.
- Vertaalkwaliteit: alle 24 EU taalbestanden gecontroleerd in drie rondes; juridische terminologie geverifieerd aan de hand van officiële nationale staatsbladen (EU-richtlijn 2011/83/EU bijlage I), diakritische tekens hersteld, formeel register overal afgedwongen, meervoudsvormen gecorrigeerd en interne consistentie verbeterd.
1.0.4
- Functie: fractionele productaantallen worden nu gedetecteerd en gerapporteerd in de herroepingsverklaring. Volledige verwerking van fractionele hoeveelheden (juiste proratisering, restitutieberekening) is beschikbaar in BuddyPilot Withdrawal Pro.
- Functie: “Upgrade naar Pro” actielink toegevoegd in de pluginslijst, alleen weergegeven wanneer de Pro-versie niet actief is.
1.0.3
- Getest en bevestigd compatibel met WordPress 7.0.
- Beveiliging: nonce wordt nu geverifieerd voordat een snelheidsbeperking slot wordt verbruikt, waardoor CSRF-tests het uurbudget van een gebruiker niet kunnen uitputten.
- Beveiliging: anonieme (gast) snelheidsbeperking buckets zijn nu begrensd per gehashed IP in plaats van een gedeelde
user_id=0bucket. - Beveiliging:
sealed_mapen GET vooraf verzegelde ID’s worden vóór gebruik gevalideerd aan de hand van de bestelling, zodat gemaakte aanvragen geen verzegelde bevestigingen aan gewone items kunnen koppelen. - Beveiliging:
apply_filters('buddypilot_withdrawal_declaration_items_payload')output wordt opnieuw gevalideerd: items metitem_id=0, negatieve hoeveelheden of niet-array-waarden worden verwijderd. - Beveiliging:
PermissionCheckerblokkeert nu explicietuser_id=0ongeacht bestellingcustomer_id. - Beveiliging:
OperatorRegistrationcontroleertEXCLUDED_STATUSESbij ingang van handler en schoont de permissiecache op na bestellingopslag. - Beveiliging:
DeclarationRepositoryvalideert het format vanfiling_dateen weigert zero-date strings. - Beveiliging:
RateLimit::tally()geeftPHP_INT_MAXterug wanneer de snelheidsbeperkingtabel ontbreekt, waardoor de limiter niet in stilte een no-op wordt. - Oplossing:
round(qty, 10)inget_declared_quantities()voorkomt IEEE-754 epsilon ophoping bij fractionele product hoeveelheden. - Oplossing: overbodige
user_registerhook verwijderd uit privacybeheer; alleenwoocommerce_created_customerwordt gebruikt.
1.0.2
- Code: alle korte
bpw_/bpw-identifiers hernoemd naar het volledigebuddypilot_withdrawal_/buddypilot-withdrawal-voorvoegsel: beïnvloedt AJAX/admin-post actienamen, script-handlers, gelokaliseerd JS-object, metabox-ID, WooCommerce-veldtype, nonce-veldnamen, slotels en GET-parameters. Beheert WordPress.org unique-prefix review-vereiste.
1.0.1
- Beveiliging: alle beheer en AJAX aanvraag handlers controleren nu gebruikersrechten vóór nonce verificatie, in lijn met de WordPress beveiligingsrichtlijnen.
- Beveiliging: het AJAX pad in de handler voor operatorregistratie gebruikt nu
check_ajax_referer()in plaats vancheck_admin_referer()en geeft een correcte AJAX fout reactie terug bij nonce mislukking. - Beveiliging:
current_user_can()gate toegevoegd aan de beheer bericht handler voor de aanmaakstatus van de info-pagina. - Beveiliging: valutasymbool en scheidingsteken waarden uit gelokaliseerde prijs format gegevens worden nu aan de JavaScript kant geëscapet vóór invoeging in de DOM.
- Code: inline JavaScript verplaatst van de operator registratie template naar een in wachtrij geplaatst bestand (
assets/js/admin/operator-registration.js); strings doorgegeven viawp_localize_script(). - Code: verwijderde
load_plugin_textdomain()aanroep; WordPress 4.6 en hoger laden vertalingen automatisch voor plugins op WordPress.org.
1.0.0
- Eerste stabiele versie. Volledige implementatie van de artikel 11a herroepingsfunctie: twee-staps formulier, gastverificatie, handelsmatig inschrijving, verklaringenbeheerslijst, configureerbare periode en bezorgde statussen, vastleggen van toestemming conform artikel 16(m), Bijlage I(A)/(B) pagina generator, klant en beheer e-mails, Mijn Account herroepingsgeschiedenis, HPOS-ondersteuning, AVG/GDPR hooks, WCAG 2.2 AA naleving, Pools en Engels vertalingen.
