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

# Kaufgutscheine zum Ausdrucken

> Gutscheine als Produkt verkaufen, die Nummer sofort nach der Bezahlung anzeigen und den Gutschein als PDF zum Ausdrucken bereitstellen.

Ein Kaufgutschein ist ein Gutschein, den der Kunde im Shop kauft, meist um ihn zu verschenken. Sein größter Vorteil ist das Tempo: Der Käufer lädt ihn unmittelbar nach der Bezahlung herunter und druckt ihn aus, was ihn zum brauchbaren Last-Minute-Geschenk macht.

Technisch ist ein Kaufgutschein ein ganz gewöhnliches Produkt. Er wird in den Warenkorb gelegt, durchläuft den normalen Bestellvorgang und wird wie jedes andere Produkt bezahlt. Das Besondere passiert im Hintergrund.

![Kaufgutschein](https://mintcdn.com/websaleag-44ee7ea6/Vx3oBE97Leuacjk4/images/kaufgutschein.jpg?fit=max\&auto=format\&n=Vx3oBE97Leuacjk4\&q=85\&s=e3a5c173a5950f3c98ffda29ff3ac39d)

## Wie der Ablauf aussieht

| Schritt | Was geschieht |
| - | - |
| Der Kunde legt das Gutscheinprodukt in den Warenkorb | Der Shop erzeugt eine Gutscheinnummer oder entnimmt sie einem vorher angelegten Pool |
| Der Kunde bezahlt | Die Gutscheinnummer wird ihm sofort angezeigt |
| Der Kunde lädt den Gutschein herunter | Je Gutscheinnummer entsteht aus einem eigenen Template eine PDF-Datei mit Nummer, Betrag und Gültigkeit |

Weil der Käufer die Nummer unmittelbar nach der Bezahlung sieht und sofort einlösen kann, lassen sich Kaufgutscheine an sichere Zahlungsarten knüpfen. Wie das eingestellt wird, steht in Schritt 5.

Ändert der Kunde nach dem Legen in den Warenkorb noch den Wert, beispielsweise über eine andere Variante, zieht der Shop die Nummern neu. Die Nummer, die am Ende auf dem Gutschein steht, ist deshalb erst mit der Bestellung endgültig.

Anwendungsbeispiel: [Kaufgutscheine zum Ausdrucken mit mehreren Motiven anbieten](https://dokumentation.websale.de/v8s/anwendungsbeispiele/appex-kaufgutscheine-mehrere-motive.md)

## Die Integration

### Schritt 1: Freischaltung

Wollen Sie den Gutschein-Generator nutzen, muss dieser für Ihren Shop freigeschaltet werden. Wenden Sie sich dafür an Ihren WEBSALE-Ansprechpartner.

Kommen die Gutscheine aus einem externen System und liegen deshalb nicht im WEBSALE-Format vor, ergänzen Sie im Abschnitt `<Voucher-Txt>` der `shop.config` den Eintrag `ExternalVouchers-Allow = yes`.

### Schritt 2: Gutscheineingabe integrieren

Bietet Ihr Shop noch gar keine Gutscheine an, fehlt die Eingabemöglichkeit. Ohne sie kann niemand den gekauften Gutschein später einlösen.

Wegweiser: [Gutschein-Eingabe vorsehen](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutschein-eingabe-vorsehen.md)

### Schritt 3: Die Kaufgutscheine als Produkte anlegen

Kaufgutscheine werden wie jedes andere Produkt angelegt. Zusätzlich brauchen sie das Produktfeld `InstantVoucherProduct`, das aus vier Angaben besteht. Alle vier stehen hintereinander in einem Feld und werden von `<g>` umschlossen.

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<g><1>Gutscheinprodukt y/n</1><2>ChargenID</2><3>Vorlagenwert überschreiben y/n</3><4>Nummer neu generieren y/n</4></g>
```

| Position | Bedeutung | Werte |
| - | - | - |
| `<1>` | ist dieses Produkt ein Gutscheinprodukt | `y` aktiv. Jeder andere Wert bedeutet inaktiv, und die restlichen drei Angaben werden nicht ausgewertet |
| `<2>` | die ChargenID, zu der die Gutscheine gehören | der Name der Charge |
| `<3>` | woher der Gutscheinwert kommt | `y` der Produktpreis ist der Gutscheinwert und überschreibt den Wert aus Vorlage oder Pool. Jeder andere Wert belässt es beim Wert aus Vorlage oder Pool |
| `<4>` | woher die Nummer kommt | `y` der Shop generiert eine neue Nummer. Jeder andere Wert entnimmt sie dem Pool |

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<g><1>y</1><2>Kaufgutscheine</2><3>y</3><4>y</4></g>
```

> [!WARNING]
>
> Die Werte werden auf `y` geprüft, nicht auf `n`. Ein Tippfehler oder ein leeres Feld an Position 1 macht das Produkt zu einem gewöhnlichen Artikel, der ohne Gutschein verkauft wird. Der Shop meldet das nicht.

Für die Wertabstufungen werden in aller Regel Varianten verwendet. Eine Variante "Gutscheinwert" mit den Stufen 10, 20, 50, 100, 200 und 500 Euro ist der übliche Aufbau. In Verbindung mit `<3>` gleich `y` ergibt sich der Gutscheinwert dann unmittelbar aus der gewählten Variante.

### Schritt 4: Gutscheinnummern bereitstellen

Die Nummern kommen aus einer von zwei Quellen. Welche es ist, entscheidet Position 4 im Produktfeld.

| Position 4 | Quelle | Was Sie vorbereiten |
| - | - | - |
| `y` | Der Shop generiert die Nummer neu | eine Gutscheinvorlage im Gutschein-Generator des Online-Servicebereichs |
| alles andere | Der Shop entnimmt sie einem Pool | Import eines Gutscheinnummern-Pools aus Ihrem Warenwirtschafts- oder ERP-System |

In beiden Fällen muss jedem Gutschein eine ChargenID zugewiesen sein, denn genau diese ID tragen Sie an Position 2 des Produktfelds ein. Ohne passende Charge findet der Shop keine Nummern.

Haben Sie an Position 3 festgelegt, dass der Produktpreis den Gutscheinwert bestimmt, überschreibt der Shop zwei Angaben, unabhängig von der Quelle:

* Die hinterlegte Währung wird durch die Währung des Subshops ersetzt.
* Der Gutscheinwert aus Vorlage oder Pool wird durch den Produktpreis ersetzt.

> [!WARNING]
>
> Beim Pool muss Ihr Vorsystem dafür sorgen, dass immer genügend Nummern bereitstehen. Sind keine mehr da, kann das Gutscheinprodukt nicht gekauft werden. Die Prüfung findet im Regelfall erst bei der Bestellaufgabe statt und nicht schon beim Legen in den Warenkorb. Der Kunde durchläuft also den gesamten Bestellvorgang, bevor er die Fehlermeldung sieht. Überwachen Sie den Füllstand des Pools deshalb aktiv, statt sich auf die Meldung zu verlassen.

Das Format der Importdatei ist in einer eigenen Dokumentation beschrieben, die Sie bei der WEBSALE AG anfordern können.

Wegweiser: [Gutscheine anlegen oder importieren](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutscheine-anlegen-oder-importieren.md)

### Schritt 5: Zahlungsarten festlegen

Weil der Käufer die Gutscheinnummer sofort nach der Bezahlung sieht und sie unmittelbar einlösen kann, sollten Sie Kaufgutscheine nur gegen Online-Bezahlverfahren wie Kreditkarte, PayPal oder Sofortüberweisung abgeben. Bei Rechnung oder Nachnahme hätte der Kunde den Gegenwert bereits in der Hand, bevor das Geld bei Ihnen ist.

Die Freigabe legen Sie je Zahlungsart einzeln fest, in der `shop.config` im jeweiligen Abschnitt `<PaymentXXX-Txt>`.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentXXX-Txt>
   InstantVoucherProducts-Allow = yes
</PaymentXXX-Txt>
```

`XXX` steht für die jeweilige Zahlungsart, der Abschnitt heißt also beispielsweise `<PaymentCreditCard-Txt>`. Liegt mindestens ein Kaufgutschein im Warenkorb, bietet der Shop nur noch die Zahlungsarten an, bei denen dieser Eintrag auf `yes` steht.

Referenz: [PaymentXXX-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/zahlungsarten.md)

### Schritt 6: Kaufgutscheine in den Templates kennzeichnen (optional)

Kaufgutscheine lassen sich gesondert klammern, um sie anders darzustellen als gewöhnliche Produkte, beispielsweise mit einem Hinweis auf den sofortigen Download.

| Template | Abschnitt |
| - | - |
| Produktübersichtsseite `ws_category.htm` und Produktdetailansicht `ws_product.htm` | `PR-InstantVoucherProduct` |
| Warenkorbseite `ws_basket.htm` | `BASKET-PR-InstantVoucherProduct` |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PR-InstantVoucherProduct}
   Diesen Gutschein erhalten Sie sofort nach der Bezahlung zum Ausdrucken.
{/PR-InstantVoucherProduct}
```

Referenz: [PR-InstantVoucherProduct](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten.md) · [BASKET-PR-InstantVoucherProduct](https://dokumentation.websale.de/v8s/referenz/tags/basket/gutscheine-im-warenkorb.md#kaufgutscheine-als-produkt)

### Schritt 7: Gutscheinnummer und Download-Link anzeigen

Die erzeugte Nummer und der Link auf die PDF-Datei lassen sich an drei Stellen ausgeben: auf der Bestelleingangsbestätigungsseite `ws_confirm.htm`, in der Bestelleingangsbestätigungs-E-Mail und in der Bestellhistorie.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{@BASKET-PR-Data}
   {BASKET-PR-InstantVoucherProduct}
      {BASKET-PR-InstantVoucherProductData}
         {@BASKET-PR-InstantVoucherProductData}
            Gutscheinnummer: ~BASKET-PR-InstantVoucherProductData_VoucherNumber~
            <a href="~WS-Start~~BASKET-PR-InstantVoucherProductData_PDFLinkPart~">Gutschein herunterladen</a>
         {/@BASKET-PR-InstantVoucherProductData}
      {/BASKET-PR-InstantVoucherProductData}
   {/BASKET-PR-InstantVoucherProduct}
{/@BASKET-PR-Data}
```

Die innere Schleife ist nötig, weil eine Warenkorbposition mehrere Gutscheine enthalten kann. Kauft jemand fünf Gutscheine derselben Sorte, entstehen fünf Nummern und fünf PDF-Dateien in einer einzigen Position.

`BASKET-PR-InstantVoucherProductData_PDFLinkPart` liefert nur den hinteren Teil der Adresse. Davor gehört `WS-Start`, deshalb stehen die beiden Tags im Beispiel direkt hintereinander. Der Parameter ist verschlüsselt und mit einer Prüfsumme versehen und enthält die Shopkennung, sodass sich fremde Gutscheine darüber nicht abrufen lassen.

Referenz: [BASKET-PR-Data](https://dokumentation.websale.de/v8s/referenz/tags/basket/mehrfach-lieferadressen-und-belegexemplare.md#basket-pr-d) · [BASKET-PR-InstantVoucherProduct](https://dokumentation.websale.de/v8s/referenz/tags/basket/gutscheine-im-warenkorb.md#kaufgutscheine-als-produkt) · [BASKET-PR-InstantVoucherProductData](https://dokumentation.websale.de/v8s/referenz/tags/basket/gutscheine-im-warenkorb.md#kaufgutscheine-als-produkt) · [BASKET-PR-InstantVoucherProductData\_VoucherNumber](https://dokumentation.websale.de/v8s/referenz/tags/basket/gutscheine-im-warenkorb.md#kaufgutscheine-als-produkt) · [BASKET-PR-InstantVoucherProductData\_PDFLinkPart](https://dokumentation.websale.de/v8s/referenz/tags/basket/gutscheine-im-warenkorb.md#kaufgutscheine-als-produkt) · [WS-Start](https://dokumentation.websale.de/v8s/referenz/tags/basket/gutscheine-im-warenkorb.md#kaufgutscheine-als-produkt)

### Schritt 8: Das Template für den PDF-Download erstellen

Der Gutschein zum Ausdrucken entsteht aus einem eigenen Template. Dafür sind drei Einstellungen nötig.

#### 8.1 Das Template in der Konfiguration zuweisen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Templates>
   InstantVoucherPDF = ws_instant_voucher.htm   # Template für den PDF-Download des Gutscheins
</Templates>
```

#### 8.2 Das Template anlegen

Legen Sie das Template unter dem soeben vergebenen Namen in Ihrem Templateverzeichnis an, also beispielsweise unter `benutzer/templates`, in einem mehrsprachigen Shop im Verzeichnis des jeweiligen Subshops.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
Gutschein
Betrag:     ~INSTANTVOUCHER-Amount~ ~INSTANTVOUCHER-CurrencyCode~ ~INSTANTVOUCHER-CurrencySymbol~
Nummer:     ~INSTANTVOUCHER-VoucherNumber~
Gültig bis: ~INSTANTVOUCHER-ValidUntil_day~.~INSTANTVOUCHER-ValidUntil_month~.~INSTANTVOUCHER-ValidUntil_year~
```

Die Familie `INSTANTVOUCHER-` umfasst genau diese sieben Tags.

| Tag | Inhalt |
| - | - |
| `INSTANTVOUCHER-Amount` | der Gutscheinbetrag, bereits im Preisformat des Shops |
| `INSTANTVOUCHER-CurrencyCode` | der Währungscode, beispielsweise `EUR` |
| `INSTANTVOUCHER-CurrencySymbol` | das Währungssymbol |
| `INSTANTVOUCHER-VoucherNumber` | die Gutscheinnummer |
| `INSTANTVOUCHER-ValidUntil_day` | der Tag der Gültigkeit |
| `INSTANTVOUCHER-ValidUntil_month` | der Monat der Gültigkeit |
| `INSTANTVOUCHER-ValidUntil_year` | das Jahr der Gültigkeit |

> [!WARNING]
>
> Die drei Datumstags bleiben leer, wenn für den Gutschein kein Ablaufdatum hinterlegt ist. Der Satz "Gültig bis: `..`" steht dann mit zwei nackten Punkten auf dem ausgedruckten Gutschein. Klammern Sie die Zeile deshalb, beispielsweise über `{INSTANTVOUCHER-ValidUntil_year}`, damit sie nur bei vorhandenem Datum erscheint.

Für ein Ladengeschäft können Sie die Gutscheinnummer zusätzlich als Barcode auf das Template drucken und an der Kasse einscannen lassen. Den Barcode erzeugt das Tag `WS-BarcodeURL` als Bild.

Referenz: [Abschnitt Templates](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik.md#templates) · [INSTANTVOUCHER-](https://dokumentation.websale.de/v8s/referenz/tags/instantvoucher-kaufgutscheine.md) · [WS-BarcodeURL](https://dokumentation.websale.de/v8s/referenz/tags/ws/merkzettel-vergleich-upload-und-externe-dienste.md#die-tags-im-uberblick)

#### 8.3 Den Dateinamen der PDF-Datei festlegen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PDFGenerator>
   InstantVoucherPDFFilename = gutschein.pdf
</PDFGenerator>
```

Dieser Name erscheint im Download-Dialog des Kunden. Ein sprechender Name wie `gutschein.pdf` ist hier mehr wert als eine technische Bezeichnung, weil die Datei im Downloadordner des Käufers wiederfindbar bleiben soll.

Referenz: [Abschnitt PDFGenerator](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik.md#pdfgenerator)

### Schritt 9: Die Fehlermeldung hinterlegen

Geht beim Ziehen oder Erzeugen einer Gutscheinnummer etwas schief, braucht der Kunde einen Text. Legen Sie ihn in der `shop.config` im Abschnitt `<NotifyMessages-Txt>` ab.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<NotifyMessages-Txt>
   InstantVoucherError = Es ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut oder wenden Sie sich an den Shopbetreiber.
</NotifyMessages-Txt>
```

> [!WARNING]
>
> Diese Meldung ist der einzige Hinweis, den der Kunde im Fehlerfall bekommt, und sie erscheint typischerweise erst bei der Bestellaufgabe. Ohne hinterlegten Text bricht der Bestellvorgang ohne Erklärung ab.

Referenz: [NotifyMessages-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/texte-und-meldungen.md#notifymessages-txt)

### Schritt 10: Download in der Bestellhistorie anbieten

Löscht der Kunde die Bestätigungsmail, hat er ohne diesen Schritt keine Möglichkeit mehr, an seinen Gutschein zu kommen. Ergänzen Sie den Download deshalb auf der Bestellhistorie `ws_order_history.htm`.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{@OH-S-Item}
   {@OH-S-InstantVoucherProduct}
      <a href="~WS-Start~~OH-P-PDFLinkPart~">Gutschein ausdrucken</a>
      Gutscheinnummer: ~OH-P-Number~
   {/@OH-S-InstantVoucherProduct}
{/@OH-S-Item}
```

Referenz: [OH-S-](https://dokumentation.websale.de/v8s/referenz/tags/oh-bestellhistorie.md) · [OH-P-](https://dokumentation.websale.de/v8s/referenz/tags/oh-bestellhistorie.md) · WS-Start

## Was Sie beachten sollten

> [!WARNING]
>
> Der Kaufgutschein lässt sich **nicht** als PDF-Anhang an die Bestellbestätigungsmail hängen. Der Kunde erreicht ihn ausschließlich über einen Download-Link, entweder in der Bestelleingangsbestätigung aus Schritt 7 oder in der Bestellhistorie aus Schritt 10. Richten Sie deshalb möglichst beide Wege ein.

Bei Fragen zur Einrichtung wenden Sie sich an das WEBSALE Support-Team.

## Verwandte Themen

* Wegweiser: [Gutscheine anbieten: Übersicht](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutscheine-anbieten-uebersicht.md)
* Wegweiser: [Gutscheine anlegen oder importieren](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutscheine-anlegen-oder-importieren.md)
* Wegweiser: [Gutschein-Eingabe vorsehen](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutschein-eingabe-vorsehen.md)
* Anwendungsbeispiel: Kaufgutscheine zum Ausdrucken mit mehreren Motiven anbieten


## Related topics

- [INSTANTVOUCHER- (Kaufgutscheine zum Ausdrucken)](https://dokumentation.websale.de/v8s/referenz/tags/instantvoucher-kaufgutscheine.md)
- [Kaufgutscheine mit mehreren Motiven anbieten](https://dokumentation.websale.de/v8s/anwendungsbeispiele/appex-kaufgutscheine-mehrere-motive.md)
- [Gutscheine im Warenkorb](https://dokumentation.websale.de/v8s/referenz/tags/basket/gutscheine-im-warenkorb.md)
- [PDF-Anhang der Bestelleingangsbestätigung](https://dokumentation.websale.de/v8s/bestelluebersicht-bestelleingangsbestaetigung/pdf-anhang-der-bestelleingangsbestaetigung.md)
- [Gutscheine anbieten: Übersicht](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutscheine-anbieten-uebersicht.md)


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