Widerrufsbutton

Der gesetzliche Widerrufsbutton ab dem 19. Juni 2026. Für Agenturen, die einen eigenen Shop gegen die go~mus-API bauen, mit oder ohne Webcomponents. Vertrag, Felder, Fehlercodes, Abgrenzung zum Storno.

Ab dem 19. Juni 2026 verlangt die EU einen "Widerrufsbutton" in Online-Shops, die Verbraucher:innen einen Widerruf per Fernabsatz ermöglichen (Art. 11a der Verbraucherrechte-Richtlinie, eingeführt durch die Richtlinie (EU) 2023/2673). Kund:innen müssen ihren Widerruf direkt im Shop erklären können, ohne Login und ohne Umweg.

Wer einen von go~mus ausgelieferten Shop nutzt, muss dafür nichts tun: der Widerrufsbutton ist dort automatisch dabei.

Diese Seite richtet sich an Agenturen, die ihren eigenen Shop gegen die go~mus-API bauen, mit oder ohne unsere Webcomponents. go~mus stellt dafür einen öffentlichen Endpunkt bereit, den du auf zwei Wegen erreichst.

Diese Seite ist eine technische Integrationshilfe, keine Rechtsberatung. Ob und in welcher Form ihr betroffen seid, klärt ihr mit eurer eigenen Rechtsabteilung. Eine nicht-technische Übersicht (Rechtsrahmen, betroffene Produkte, Verwaltung im Backend) gibt es unter Funktionen: Widerruf.

Eigener Shop mit Webcomponents

Wenn dein Shop die go~mus-Webcomponents einbindet, ist der Widerrufsbutton ab Version 3.3.0 als eigenes Element dabei. Du musst nichts gegen die API bauen:

<go-withdrawal-form></go-withdrawal-form>

Die Komponente rendert das vollständige Formular (Bestellnummer, Vor- und Nachname, E-Mail, optionale Notiz), validiert die Pflichtfelder, schickt den Widerruf ab und feuert bei Erfolg ein go-success-Event. Den Shop-Bezug (Header X-Shop-Url) setzt sie aus deiner go~mus-Konfiguration, du musst ihn nicht selbst mitgeben. Mit dem Attribut custom übernimmst du das Markup für eigenes Styling.

Den Button und die dafür nötige Unterseite baust du selbst ein, die Komponente hängt sich nicht von allein in deinen Shop.

Komponenten-Liste, Properties und ein Live-Beispiel im Storybook stehen in der Webcomponents-Doku.

Eigener Shop ohne Webcomponents

Wer ohne unsere Webcomponents baut, erstellt das Formular selbst und postet gegen einen einzigen Endpunkt:

POST /api/v4/orders/withdrawals

Der Endpunkt ist öffentlich und ohne Authentifizierung erreichbar. Das ist Absicht: der Widerruf muss als Gast möglich sein, ohne Login (Erwägungsgrund 37 der Richtlinie). Statt eines Tokens identifizierst du den Shop über den Header.

HeaderPflichtBedeutung
X-Shop-UrljaHostname des Shops, auf den sich der Widerruf bezieht
Content-Typejaapplication/json

Request-Body:

FeldPflichtBeschreibung
order_idjaBestellnummer, auf die sich der Widerruf bezieht
first_namejaVorname der Kundin / des Kunden
last_namejaNachname
emailjaE-Mail-Adresse
noteneinFreitext, z.B. welche Positionen widerrufen werden. Nie verpflichtend.
curl -X POST "https://demo.gomus.de/api/v4/orders/withdrawals" \
  -H "Content-Type: application/json" \
  -H "X-Shop-Url: shop.beispiel-museum.de" \
  -d '{
    "order_id": "12345",
    "first_name": "Erika",
    "last_name": "Mustermann",
    "email": "kunde@example.com",
    "note": "Bitte nur das Buch."
  }'

Antworten:

StatusBedeutung
201Widerruf aufgenommen. Der Body ist leer, parse ihn nicht als JSON.
403Unbekannter Shop, oder order_id gehört zu keiner Bestellung dieses Shops aus den letzten 14 Monaten. Bestellnummern sind ratbar, das ist akzeptiert.
422Validierungsfehler. Body enthält errors mit feldweisen Meldungen, z.B. { "errors": { "email": ["is invalid"] } }.
429Rate-Limit überschritten.

Rate-Limits: 10 Anfragen pro Minute pro Client-IP, 30 pro Minute pro X-Shop-Url. Wer eines davon reißt, bekommt 429.

Widerruf ist nicht Storno

Der Widerruf-Endpunkt storniert nichts automatisch. Er nimmt die Erklärung der Kundin entgegen und legt sie ab. Das Museumsteam prüft jeden Widerruf und erledigt Storno und Erstattung danach manuell. Das ist bewusst so: ein Widerruf ist eine rechtliche Willenserklärung, kein selbstauslösender Vorgang.

Die eigentliche Stornierung einer Bestellung läuft über einen anderen, authentifizierten Aufruf (POST /api/v4/orders/:id/cancellations), den Backoffice oder berechtigte API-User machen. Details dazu in Orders.

Verwandte Seiten

  • Webcomponents - die <go-withdrawal-form>-Komponente und das Storybook
  • Orders - Bestell-Lifecycle, Storno und Erstattung
  • Errors - 422-Validierung und Fehlerformat
  • Authentifizierung - warum dieser Endpunkt bewusst ohne Token auskommt