> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dreizack-medien.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Einstellungen

> Gutschrift, Einmal-Boni, Einlösung, Teilnahme und Integrität konfigurieren

## Gutschrift

Legt fest, wie Bonuspunkte beim Kauf vergeben werden.

<Frame>
  <img src="https://mintcdn.com/dzm/4prk8b1bYKoyK7Zl/images/bpe1.jpg?fit=max&auto=format&n=4prk8b1bYKoyK7Zl&q=85&s=33ae544a8bfaf801485d2b670a1a2d88" alt="Gutschrift-Einstellungen" width="2052" height="826" data-path="images/bpe1.jpg" />
</Frame>

<ParamField path="Punkte je Euro" type="number">
  Punkte pro Euro Warenwert.
</ParamField>

<ParamField path="Berechnungsbasis" type="select">
  Ob Punkte auf den Brutto- oder Nettopreis gerechnet werden (gilt für Gutschrift und Anzeige).
</ParamField>

<ParamField path="Rundung" type="select">
  Wie Punktebeträge gerundet werden (gilt für Gutschrift und Anzeige): **Abrunden**, **Kaufmännisch runden** oder **Aufrunden**.
</ParamField>

<ParamField path="Euro-Gegenwert je Punkt" type="number">
  Fester Einlösewert eines Punktes.

  <Warning>
    Nur änderbar, solange keine Punkte im Umlauf sind (Restschuld = 0). Bereits ausgegebene Punkte würden sonst rückwirkend um- oder abgewertet. Wie großzügig das Programm ist, steuerst du über das Feld **Punkte je Euro**.
  </Warning>
</ParamField>

<ParamField path="Freigabezeitpunkt" type="select">
  Wann gutgeschriebene Punkte wirksam werden.

  <Info>
    **Sofort**: bei Bestelleingang. **Bei Zahlungseingang / Versand**: erst wenn bezahlt bzw. versandt. **Nach Widerrufsfrist**: bei Zahlung gutgeschrieben, aber erst nach der eingestellten Frist einlösbar (empfohlen, bilanzsicher).
  </Info>
</ParamField>

<ParamField path="Widerrufsfrist (Tage)" type="number">
  Pending-Fenster, bevor Punkte einlösbar werden.

  <Note>
    Diese Option ist nur sichtbar, wenn als Freigabezeitpunkt **Nach Widerrufsfrist** gewählt ist.
  </Note>
</ParamField>

<ParamField path="Rabattierte Artikel ausschließen" type="boolean">
  Für rabattierte Artikel (Sonderpreis) keine Punkte vergeben.
</ParamField>

<br />

## Ausgeschlossene Artikel

Artikel, für die weder Punkte vergeben noch Punkte angezeigt werden, typischerweise Gutscheine.

<Frame>
  <img src="https://mintcdn.com/dzm/2wPW1uht-mB0hnLu/images/dzm-bonus-plus-ausgeschlossene-artikel.png?fit=max&auto=format&n=2wPW1uht-mB0hnLu&q=85&s=c460f5027522687a8e5748f6f7453bda" alt="Ausgeschlossene Artikel" width="2072" height="458" data-path="images/dzm-bonus-plus-ausgeschlossene-artikel.png" />
</Frame>

<Info>
  JTL kennt keinen Artikeltyp "Gutschein". Der Ausschluss läuft deshalb über Kategorien und Artikelnummern. Zusätzlich wirkt weiterhin das Artikelattribut `dzm_bonus_excluded` aus der Wawi (Wert `1` oder `ja`), das ist der beste Weg, wenn die Pflege im Warenwirtschaftssystem stattfinden soll.
</Info>

<ParamField path="Kategorien" type="select">
  Alle Artikel dieser Kategorien sind ausgeschlossen, Unterkategorien inbegriffen.
</ParamField>

<ParamField path="Einzelne Artikelnummern" type="string">
  Artikelnummer eintippen und mit Enter bestätigen. Genaue Schreibweise wie in der Wawi.
</ParamField>

<br />

## Punkte-Verfall

Punkte laufen erst ihre Mindestgültigkeit und verfallen dann gesammelt zu einem festen Stichtag im Jahr. Eingelöst werden immer die ältesten Punkte zuerst, damit Kunden so wenig wie möglich verlieren.

<Frame>
  <img src="https://mintcdn.com/dzm/XUHLJO58fjC_lLW0/images/dzm-bonus-plus-punkte-verfall.jpg?fit=max&auto=format&n=XUHLJO58fjC_lLW0&q=85&s=a894c844a0f060730c126c5fe23b1914" alt="Punkte-Verfall" width="2074" height="884" data-path="images/dzm-bonus-plus-punkte-verfall.jpg" />
</Frame>

<ParamField path="Verfall aktiv" type="boolean">
  Aus: Punkte sind unbegrenzt gültig.

  <Warning>
    Ohne eingerichteten Cronjob wird nichts ausgebucht und der Verfall bliebe wirkungslos. Lege ihn unter **Administration → System → Cron → Queue-Eintrag erstellen** an, Typ **DZM Bonus Plus: Punkte-Verfall**, Frequenz 24 Stunden.

    <Accordion title="So legst du den Cronjob an">
      <Frame>
        <img src="https://mintcdn.com/dzm/XUHLJO58fjC_lLW0/images/dzm-bonus-plus-cronjob-anlegen.jpg?fit=max&auto=format&n=XUHLJO58fjC_lLW0&q=85&s=4c5e2cdf041ffb0b5b88675576b12f23" alt="Cronjob anlegen" width="2880" height="1562" data-path="images/dzm-bonus-plus-cronjob-anlegen.jpg" />
      </Frame>
    </Accordion>
  </Warning>
</ParamField>

<ParamField path="Mindestgültigkeit" type="number">
  So lange sind Punkte auf jeden Fall gültig, gerechnet ab dem Tag der Gutschrift. Danach verfallen sie zum nächsten Stichtag.
</ParamField>

<ParamField path="Stichtag" type="datetime">
  Der jährlich wiederkehrende Tag (Tag und Monat), an dem abgelaufene Punkte ausgebucht werden. Punkte sind bis einschließlich zu diesem Tag einlösbar.

  <Info>
    Das Modell entspricht dem, was Kunden von großen Bonusprogrammen kennen: Nicht jeder Punkt hat sein eigenes Verfallsdatum, sondern es gibt einen gemeinsamen Stichtag pro Jahr. Ein Punkt verfällt zum ersten Stichtag, der nach seiner Mindestgültigkeit liegt – die tatsächliche Laufzeit ist damit immer mindestens so lang wie eingestellt, im Schnitt ein halbes Jahr länger. Bei einem Jahr Mindestgültigkeit und Stichtag 30.09. verfallen Punkte vom 01.01.2026 am 30.09.2027, Punkte vom 01.12.2026 aber erst am 30.09.2028.
  </Info>
</ParamField>

Unter **Was das konkret bedeutet** zeigt dir das Backend live eine Vorschau mit der aktuellen Einstellung, anhand derer du das Ergebnis für unterschiedliche Buchungsdaten nachvollziehen kannst.

<ParamField path="Schutzfrist beim Aktivieren (Tage)" type="number">
  Gilt nur für Punkte, die es beim Einschalten des Verfalls schon gibt: Sie verfallen frühestens zum ersten Stichtag nach dieser Frist, auch wenn sie rechnerisch längst abgelaufen wären.

  <Info>
    Beim Einschalten bekommen alle Bestandspunkte ein Verfallsdatum – frühestens jedoch nach dieser Schutzfrist, damit niemand über Nacht sein Guthaben verliert. Das Datum wird pro Gutschrift beim Buchen eingefroren: Eine spätere Änderung von Frist oder Stichtag wirkt nur auf neue Punkte, nie rückwirkend.
  </Info>
</ParamField>

<ParamField path="Erinnerungsmail vor dem Verfall" type="boolean">
  Benachrichtigt Kunden rechtzeitig, wie viele Punkte wann verfallen.

  <Info>
    Die Mail geht nur an Kunden, die zum jeweiligen Stichtag tatsächlich noch offene Punkte haben – bereits eingelöste Punkte werden nicht angekündigt. Jede Stufe wird pro Kunde und Stichtag genau einmal verschickt, auch wenn der Cronjob mehrmals täglich läuft.
  </Info>
</ParamField>

<ParamField path="Vorwarnstufen" type="select">
  Wann vor dem Stichtag erinnert wird. Mehrere Stufen möglich, jede Stufe wird einmal verschickt.

  <Warning>
    Ist die zugehörige E-Mail-Vorlage deaktiviert, geht keine Erinnerung raus. JTL markiert die Vorlage automatisch als fehlerhaft, wenn der Shop mehr Sprachen hat, als die Vorlage mitbringt. Text, Betreff und Aktivierung bearbeitest du unter **Administration → E-Mail → Vorlagen → Plugin-Vorlagen** in der Vorlage "Bonuspunkte verfallen bald". Anpassungen an der Vorlage überstehen ein Plugin-Update.

    <Accordion title="So findest du die E-Mail-Vorlage">
      <Frame>
        <img src="https://mintcdn.com/dzm/XUHLJO58fjC_lLW0/images/dzm-bonus-plus-email-vorlage-verfall.jpg?fit=max&auto=format&n=XUHLJO58fjC_lLW0&q=85&s=a8dda16d1d4ab18ce7dc316e2fa31daa" alt="E-Mail-Vorlage Bonuspunkte verfallen bald" width="2880" height="1562" data-path="images/dzm-bonus-plus-email-vorlage-verfall.jpg" />
      </Frame>
    </Accordion>
  </Warning>
</ParamField>

<br />

## Einmal-Boni

Punkte für einmalige Aktionen (0 = deaktiviert).

<Frame>
  <img src="https://mintcdn.com/dzm/4prk8b1bYKoyK7Zl/images/bpe2.jpg?fit=max&auto=format&n=4prk8b1bYKoyK7Zl&q=85&s=4c509c86d448df4f244012e83d1d22d5" alt="Einmal-Boni" width="2070" height="460" data-path="images/bpe2.jpg" />
</Frame>

<ParamField path="Registrierung" type="number">
  Punkte-Bonus bei Registrierung eines neuen Kunden.
</ParamField>

<ParamField path="Erstbestellung" type="number">
  Punkte-Bonus bei der ersten Bestellung eines Kunden.
</ParamField>

<ParamField path="Newsletter-Anmeldung" type="number">
  Punkte-Bonus bei Double-Opt-in-Freischaltung des Newsletters.
</ParamField>

<br />

## Einlösung

Regeln für das Einlösen von Punkten im Checkout.

<Frame>
  <img src="https://mintcdn.com/dzm/4prk8b1bYKoyK7Zl/images/bpe4.jpg?fit=max&auto=format&n=4prk8b1bYKoyK7Zl&q=85&s=b3e306d717d793e0a13bf1e4a1236a5d" alt="Einlösung" width="2066" height="458" data-path="images/bpe4.jpg" />
</Frame>

<ParamField path="Obergrenze pro Einkauf" type="number">
  Maximaler Anteil des Bestellwerts, der per Punkten bezahlt werden darf.
</ParamField>

<ParamField path="Mindest-Einlöseschwelle" type="number">
  Punkte, ab denen eingelöst werden darf (0 = keine).
</ParamField>

<ParamField path="Einlöse-Schrittweite" type="number">
  Einzulösende Punkte müssen ein Vielfaches davon sein.
</ParamField>

<br />

## Checkout-Box

Wo die Einlöse-Box im Checkout erscheint.

<Frame>
  <img src="https://mintcdn.com/dzm/2wPW1uht-mB0hnLu/images/dzm-bonus-plus-checkout-box.png?fit=max&auto=format&n=2wPW1uht-mB0hnLu&q=85&s=16fc80caeee74d9c5685cee01305ae51" alt="Checkout-Box" width="2066" height="558" data-path="images/dzm-bonus-plus-checkout-box.png" />
</Frame>

<ParamField path="Platzierung" type="select">
  **Automatisch:** erkennt NOVA/NIUplus selbst und fügt die Box an der passenden Stelle ein (empfohlen). **Custom:** an frei wählbarer Stelle.
</ParamField>

<ParamField path="Markup" type="select">
  **Bootstrap:** gewachsenes Nova-Markup mit Karten- und Grid-Klassen. **Neutral:** templatefreies BEM-Markup ohne Grid- und Karten-Klassen, für eigene oder fremde Templates.

  **Optionen:**

  * **Bootstrap (Nova/NIUplus)**
  * **Neutral (templatefrei, BEM)**

  <Note>
    Die beiden Einstellungen sind unabhängig: Du kannst neutrales Markup auch am vorgesehenen Anker ausspielen, nicht nur an einem eigenen Selektor. Der neutrale Skin bringt nur eine schlanke Grundgestaltung mit, gedacht ist er zum Selberstylen über die BEM-Klasse `dzm-bonus-redeem`.
  </Note>
</ParamField>

<ParamField path="Selektor" type="string">
  CSS-Selektor des Zielelements, an dem die Einlöse-Box eingefügt wird (z. B. `#order-confirm`).

  <Note>
    Nur relevant, wenn bei **Platzierung** die Option **Custom – eigener Selektor** gewählt ist.
  </Note>
</ParamField>

<ParamField path="Einfüge-Methode" type="select">
  Wie relativ zum Zielelement eingefügt wird.

  **Optionen:**

  * **Davor (before):** Fügt die Box vor dem Element ein.
  * **Danach (after):** Fügt die Box nach dem Element ein.
  * **Als erstes Kind (prepend):** Fügt die Box als erstes Kindelement in das Element ein.
  * **Als letztes Kind (append):** Fügt die Box als letztes Kindelement in das Element ein.
</ParamField>

<br />

## Teilnahme

Teilnahme am Bonusprogramm.

<Frame>
  <img src="https://mintcdn.com/dzm/XUHLJO58fjC_lLW0/images/dzm-bonus-plus-teilnahme.jpg?fit=max&auto=format&n=XUHLJO58fjC_lLW0&q=85&s=af0d02cd56feae8718741e805f2cfdd9" alt="Teilnahme" width="2028" height="476" data-path="images/dzm-bonus-plus-teilnahme.jpg" />
</Frame>

<ParamField path="Teilnehmende Kundengruppen" type="select">
  Leer = alle Kundengruppen nehmen teil. Sonst sammeln und sehen nur Kunden der ausgewählten Gruppen Punkte.

  <Note>
    Zur Auswahl stehen die in deinem Shop angelegten Kundengruppen (z. B. Endkunden, B2B, Händler).
  </Note>
</ParamField>

<ParamField path="Opt-in-Pflicht (DSGVO)" type="boolean">
  Standard: aus. Alle registrierten Kunden nehmen automatisch teil (Programm in der Datenschutzerklärung abdecken). An: Kunden müssen bei der Registrierung über eine Checkbox zustimmen, bevor Punkte verarbeitet werden.

  <Info>
    Für ein rein shop-internes Punkteprogramm ist eine separate Einwilligung meist nicht zwingend, ein Hinweis in Datenschutzerklärung/AGB genügt. Nötig wird sie, wenn Daten an Dritte fließen oder du den dokumentierten Consent-Nachweis (mit Logging) willst. Bei aktiver Pflicht brauchst du die Teilnahme-Checkbox.
  </Info>
</ParamField>

<ParamField path="Teilnahme-Checkbox" type="boolean">
  Zustimmungs-Checkbox bei der Registrierung (Anzeigeort Registrierung, mit DSGVO-Logging). Nach dem Anlegen frei in der JTL-Checkboxverwaltung anpassbar (Text, Pflicht, Kundengruppen).

  <Tip>
    Sobald die Checkbox angelegt ist, zeigt das Feld **Angelegt** an.
  </Tip>
</ParamField>

<br />

## Kundenkonto-Bilanz

Wo die Punktebilanz im Kundenkonto des Kunden erscheint.

<Frame>
  <img src="https://mintcdn.com/dzm/2wPW1uht-mB0hnLu/images/dzm-bonus-plus-kundenkonto-bilanz.png?fit=max&auto=format&n=2wPW1uht-mB0hnLu&q=85&s=c63b6b5fde43f7789e549435995f4265" alt="Kundenkonto-Bilanz" width="2062" height="564" data-path="images/dzm-bonus-plus-kundenkonto-bilanz.png" />
</Frame>

<ParamField path="Platzierung" type="select">
  **Automatisch:** erkennt Nova/NIUplus selbst und wählt den passenden Anker (empfohlen). **Nova:** zusätzliche Karte auf der Konto-Übersicht. **NIUplus:** eigener Tab in der Konto-Navigation. **Custom:** an frei wählbarer Stelle.
</ParamField>

<ParamField path="Markup" type="select">
  **Bootstrap:** gewachsenes Nova-Markup mit Karten- und Grid-Klassen, passt in Nova und NIUplus. **Neutral:** templatefreies BEM-Markup ohne Grid- und Karten-Klassen, für eigene oder fremde Templates.

  **Optionen:**

  * **Bootstrap (Nova/NIUplus)**
  * **Neutral (templatefrei, BEM)**

  <Note>
    Die beiden Einstellungen sind unabhängig: Du kannst neutrales Markup auch an den vorgesehenen Ankern ausspielen, nicht nur an einem eigenen Selektor. Der neutrale Skin bringt nur eine schlanke Grundgestaltung mit, gedacht ist er zum Selberstylen über die BEM-Klassen `dzm-bonus-account` beziehungsweise `dzm-bonus-redeem`.
  </Note>
</ParamField>

<ParamField path="Selektor" type="string">
  CSS-Selektor des Zielelements, an dem die Bilanz eingefügt wird (z. B. `#mein-konto`).

  <Note>
    Nur relevant, wenn bei **Platzierung** die Option **Custom – eigener Selektor** gewählt ist.
  </Note>
</ParamField>

<ParamField path="Einfüge-Methode" type="select">
  Wie relativ zum Zielelement eingefügt wird.

  **Optionen:**

  * **Davor (before):** Fügt die Bilanz vor dem Element ein.
  * **Danach (after):** Fügt die Bilanz nach dem Element ein.
  * **Als erstes Kind (prepend):** Fügt die Bilanz als erstes Kindelement in das Element ein.
  * **Als letztes Kind (append):** Fügt die Bilanz als letztes Kindelement in das Element ein.
</ParamField>

<br />

## Checkout-Hinweise

Kurze Punkte-Hinweise im Warenkorb, Checkout und auf der Bestellbestätigung.

<Frame>
  <img src="https://mintcdn.com/dzm/XUHLJO58fjC_lLW0/images/dzm-bonus-plus-checkout-hinweise.jpg?fit=max&auto=format&n=XUHLJO58fjC_lLW0&q=85&s=7895349c3b8d64226420e637b0e3bcb4" alt="Checkout-Hinweise" width="2024" height="350" data-path="images/dzm-bonus-plus-checkout-hinweise.jpg" />
</Frame>

<ParamField path="Punkte-Vorschau & -Bestätigung" type="boolean">
  Zeigt im Checkout die erzielbaren Punkte und auf der Danke-Seite "Du hast X Punkte erhalten" (inkl. Hinweis, wann sie gutgeschrieben werden).
</ParamField>

<ParamField path="Einlöse-Hinweis im Warenkorb" type="boolean">
  Weist Kunden mit Guthaben darauf hin, dass sie Punkte am Ende des Checkouts einlösen können.
</ParamField>

<br />

## Testmodus

Das Programm im Live-Shop erproben, ohne dass Kunden etwas davon merken.

<Frame>
  <img src="https://mintcdn.com/dzm/XUHLJO58fjC_lLW0/images/dzm-bonus-plus-testmodus.jpg?fit=max&auto=format&n=XUHLJO58fjC_lLW0&q=85&s=c3d3cab980a1fcb263030837249caa20" alt="Testmodus" width="2018" height="374" data-path="images/dzm-bonus-plus-testmodus.jpg" />
</Frame>

<ParamField path="Testmodus aktiv" type="boolean">
  An: Kunden sehen keine Punkte und sammeln keine. Sichtbar ist alles nur für im Backend angemeldete Admins.

  <Info>
    Die Sichtbarkeit hängt an der Session – öffne den Shop aus dem Backend heraus (Link "Shop ansehen"), damit deine Frontend-Session als Admin erkannt wird. Ein direkt aufgerufener Shop-Tab zählt nicht.
  </Info>
</ParamField>

<ParamField path="Testkunden" type="string" placeholder="z. B. K-10023">
  Kundennummern, die im Testmodus wirklich Punkte sammeln und einlösen dürfen. Leer = niemand sammelt, reine Vorschau.

  <Info>
    Gebucht wird ausschließlich für die hier eingetragenen Testkunden. Bleibt die Liste leer, ist der Testmodus eine reine Vorschau – es entsteht keine Punkteschuld in der Bilanz.
  </Info>
</ParamField>

<br />

## Integrität & Sicherheit

Der Integritätsschlüssel (HMAC) sichert die Revisionssicherheit der Punktebuchungen gegen nachträgliche Manipulation.

<Note>
  **Zero-Config aktiv:** Der Integritätsschlüssel wird standardmäßig aus dem `BLOWFISH_KEY` abgeleitet, kein Setup nötig.
</Note>

<Warning>
  Wird der `BLOWFISH_KEY` rotiert (z. B. über `dzm_blowfish_rekey`), ist die bestehende Hash-Kette nicht mehr verifizierbar, denn der alte Schlüssel lässt sich nicht reproduzieren. Für maximale Revisionssicherheit setze einen eigenen Schlüssel.
</Warning>

Empfehlung: einen eigenen HMAC-Schlüssel setzen (überlebt eine BLOWFISH-Rotation). Schlüssel generieren, die zwei Zeilen in `includes/config.JTL-Shop.ini.php` einfügen (in der Regel per FTP, da die Datei meist nicht beschreibbar ist), dann den Shop-Cache leeren.

<div style={{height: '1px', backgroundColor: 'silver', margin: '24px 0'}} />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.