> ## 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.

# Lastschrift

> Wie Sie in WEBSALE V8s die SEPA-Lastschrift einrichten, Bankverbindungen abfragen und speichern, IBAN prüfen lassen, Lastschriftmandate erzeugen und den IBAN-Konverter einbinden.

Bei der Lastschrift gibt der Käufer seine Bankverbindung an, und Sie ziehen den Betrag ein. Seit 2014 läuft das europaweit einheitlich als SEPA-Lastschrift: IBAN und BIC statt Kontonummer und Bankleitzahl, und der Einzug braucht ein schriftliches Mandat des Käufers.

WEBSALE V8s deckt beides ab. Der Shop nimmt die Bankverbindung entgegen, prüft die IBAN, verwaltet mehrere Bankverbindungen je Kunde und erzeugt auf Wunsch das Mandat als PDF-Anhang der Bestätigungsmail.

Wollen Sie das Ausfallrisiko nicht selbst tragen, lässt sich die Lastschrift auch über einen Zahlungsdienstleister abwickeln, beispielsweise über Paymorrow oder über PayPal Checkout. Dann gelten die Beschreibungen dort statt dieser Seite.

Wegweiser: [Paymorrow](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/paymorrow.md) · [Lastschrift über PayPal Checkout](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/paypal-checkout.md)

## Bankverbindungen abfragen

Wo der Käufer seine Bankverbindung eingibt, hängt davon ab, ob er angemeldet ist.

| Käufer | Was er tun kann |
| - | - |
| angemeldet, Speichern erlaubt | eine gespeicherte Bankverbindung wählen, oder eine neue eingeben, die nur für diese Bestellung gilt |
| angemeldet, Speichern nicht erlaubt | Bankverbindung für diese Bestellung eingeben |
| nicht angemeldet | Bankverbindung für diese Bestellung eingeben |

Verwalten kann ein angemeldeter Käufer seine Bankverbindungen im Kundenkonto: anlegen, ändern, löschen.

> [!WARNING]
>
> Gespeichert wird nur, wenn im Abschnitt `<UserData>` der Parameter `SaveBankData-Allow` auf `yes` steht. Andernfalls gibt es keine Verwaltung im Kundenkonto, und jede Bestellung verlangt die Bankverbindung erneut.

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

### Die beiden Templates

| Template | Wofür |
| - | - |
| `ws_bank_manage.htm` | Verwaltung der Bankverbindungen im Kundenkonto |
| `ws_place_order.htm` | Auswahl und Eingabe im Bestellablauf |

Welches Template für die Verwaltung verwendet wird, legt der Parameter `BankManage` im Abschnitt `<Templates>` fest.

### Die Bereiche auf `ws_bank_manage.htm`

Das Template besteht aus drei Bereichen, die einander ausschließen.

| Bereich | Zeigt |
| - | - |
| `{BANK-Overview}` | die Liste der gespeicherten Bankverbindungen |
| `{BANK-Edit}` | das Formular zum Anlegen und Ändern |
| `{BANK-ConfirmDelete}` | die Sicherheitsabfrage vor dem Löschen |

Den Bereich `{BANK-ConfirmDelete}` bekommt der Käufer in den Auslieferungs-Templates nur zu sehen, wenn JavaScript abgeschaltet ist. Mit JavaScript übernimmt ein Dialogfenster die Sicherheitsabfrage. Der Bereich gehört trotzdem ins Template, sonst steht ein Käufer ohne JavaScript vor einer Löschung ohne Rückfrage.

### Die Bereiche auf `ws_place_order.htm`

Hier entscheidet sich zuerst, ob überhaupt gespeichert wird.

| Bereich | Gilt, wenn |
| - | - |
| `{ST-MultipleData}` | der Käufer angemeldet ist **und** `SaveBankData-Allow = yes` gesetzt ist |
| `{ST-SingleData}` | einer der beiden Punkte nicht zutrifft |

Innerhalb dieser Bereiche liegt jeweils die Eingabe selbst, `{BANK-MultipleDataInput}` beziehungsweise `{BANK-SingleDataInput}`.

Im mehrfachen Fall kommt eine weitere Unterscheidung dazu:

| Bereich | Bedeutet |
| - | - |
| `{BANK-AccountSelected}` | der Käufer hat eine gespeicherte Bankverbindung gewählt, zeigen Sie sie an |
| `{!BANK-AccountSelected}` | er hat keine gewählt, zeigen Sie die Eingabefelder. Was er hier einträgt, wird **nicht** gespeichert |

Damit bekommt ein angemeldeter Käufer die Wahl, eine Bankverbindung ausnahmsweise nur einmal zu verwenden.

### Weitere Einstellungen

Alle im Abschnitt `<PaymentDebitNote-Txt>`, sofern nicht anders vermerkt.

| Parameter | Wofür |
| - | - |
| `UserDescr` | Beschriftung für die eigene Bezeichnung der Bankverbindung |
| `UserDescrRequired` | `yes` macht diese Bezeichnung zur Pflicht |
| `BankRequired` | `yes` macht den Namen der Bank zur Pflicht |
| `Country` | Beschriftung für das Land der Bank |
| `SelectAccountNoSaveEntry` | erster Eintrag der Auswahlliste, mit dem der Käufer eine Bankverbindung nur einmalig verwendet |
| `SelectAccountEntryPrefix` | Vorsatz vor jedem Eintrag der Auswahlliste |
| `SelectAccountSeparator` | Trenner zwischen diesem ersten Eintrag und den gespeicherten Verbindungen |
| `AccountDataNotProofed` | Fehlertext, wenn die Bankverbindung im Einzelfall nicht geprüft wurde |

Die Klartextnamen der Länder stehen im eigenen Abschnitt `<PaymentDebitNote-Country>`, je Zeile ein dreistelliger ISO-Code, dazu `other` für alle übrigen.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentDebitNote-Country>
   DEU   = Deutschland
   AUT   = Österreich
   other = anderes Land
</PaymentDebitNote-Country>
```

Zwei Meldungen gehören in `<NotifyMessages-Txt>`:

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<NotifyMessages-Txt>
   Bank-Saved   = Ihre Bankverbindung wurde gespeichert.
   Bank-Deleted = Ihre Bankverbindung wurde gelöscht.
</NotifyMessages-Txt>
```

Referenz: [Abschnitt PaymentDebitNote-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/zahlungsarten.md#paymentdebitnote-txt) · [Abschnitt PaymentDebitNote-Country](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/zahlungsarten.md#paymentdebitnote-country) · [Abschnitt UserData](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/kunde-anmeldung-und-kundenkonto.md#userdata)

## SEPA einrichten

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentDebitNote-Txt>
   SEPAMode                   = on
   IBAN                       = IBAN
   BIC                        = BIC
   BICRequired                = no
   SEPACreditorIdentifier     = DE98ZZZ09999999999
   SEPAMandateGeneratorOffset = 1000000
   SEPAMandateGeneratorPrefix = DEU-
   SEPACountry-Rule           = AllowCountries
   SEPACountry-List           = DE,AT,CH
</PaymentDebitNote-Txt>
```

| Parameter | Bedeutung |
| - | - |
| `SEPAMode` | `on`, `off` oder `test`. Bei `test` gilt SEPA nur im Testmodus des Shops |
| `IBAN` | Beschriftung des IBAN-Feldes |
| `BIC` | Beschriftung des BIC-Feldes |
| `BICRequired` | `yes` macht den BIC zur Pflicht. Voreinstellung ist `no`, und innerhalb Deutschlands wird der BIC nicht gebraucht |
| `SEPACreditorIdentifier` | Ihre Gläubiger-Identifikationsnummer. Pflichtangabe, und Sie müssen sie behördlich beantragen |
| `SEPAMandateGeneratorOffset` | Startwert, ab dem der Shop die Mandatsreferenzen hochzählt |
| `SEPAMandateGeneratorPrefix` | Vorsatz vor der Mandatsreferenz, beispielsweise ein Länderkürzel |
| `SEPACountry-Rule` | `AllowCountries` oder `DenyCountries` |
| `SEPACountry-List` | zweistellige Länderkürzel, kommagetrennt |

> [!WARNING]
>
> Ein `SEPAMode`, den der Shop nicht kennt, und ein fehlender `SEPAMode` bedeuten **nicht** `off`. In diesem Fall übergeht der Shop das SEPA-Kennzeichen an den Bankdaten, statt SEPA abzuschalten. Dasselbe gilt für `test`, solange der Shop nicht im Testmodus läuft. Setzen Sie den Parameter deshalb ausdrücklich auf `on` oder `off`, statt sich auf eine Voreinstellung zu verlassen.

Ob der Shop Mandatsreferenzen erzeugt und PDF-Anhänge versendet, entscheidet der Abschnitt `<CustomerMail>`. Lassen Sie die vier dortigen Parameter leer, unterbleibt beides.

## Wie die IBAN geprüft wird

Der Shop prüft jede eingegebene IBAN in mehreren Stufen und gibt für jede Stufe einen eigenen Fehlertext aus. Die Texte stehen im Abschnitt `<VerifyCustomerData>`.

| Stufe | Geprüft wird | Fehlertext |
| - | - | - |
| 1 | Feld ist ausgefüllt | `BankAccountIBANEmptyError-Txt` |
| 2 | Länge zwischen 5 und 34 Zeichen | `BankAccountIBANLengthError-Txt` |
| 3 | Aufbau: zwei Buchstaben, zwei Ziffern, dann Buchstaben und Ziffern | `BankAccountIBANError-Txt` |
| 4 | Länderkennung ist zulässig | `BankAccountIBANCountryError-Txt` |
| 5 | länderspezifische Länge, für Deutschland 22 Zeichen | `BankAccountIBANLengthError-Txt` |
| 6 | Prüfsumme | `BankAccountIBANChecksumError-Txt` |

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<VerifyCustomerData>
   BankAccountIBANEmptyError-Txt    = Bitte geben Sie Ihre IBAN an.
   BankAccountIBANLengthError-Txt   = Die Länge der eingegebenen IBAN stimmt nicht. Bitte prüfen Sie Ihre Eingabe.
   BankAccountIBANError-Txt         = Die eingegebene IBAN ist nicht korrekt. Bitte prüfen Sie Ihre Eingabe.
   BankAccountIBANCountryError-Txt  = Das Länderkennzeichen Ihrer IBAN wird nicht unterstützt.
   BankAccountIBANChecksumError-Txt = Die eingegebene IBAN ist nicht korrekt. Bitte prüfen Sie Ihre Eingabe.
   BankAccountBICEmptyError-Txt     = Bitte geben Sie Ihre BIC an.
   BankAccountBICError-Txt          = Die eingegebene BIC ist nicht korrekt.
</VerifyCustomerData>
```

Referenz: Fehlermeldungen VerifyCustomerData

### Lastschrift auf Länder beschränken

Fast jeder Shop will nur aus bestimmten Ländern einziehen. Dafür sind `SEPACountry-Rule` und `SEPACountry-List` da.

| `SEPACountry-Rule` | Wirkung |
| - | - |
| `AllowCountries` | nur IBANs aus der Liste werden weiter geprüft, alle anderen werden abgewiesen |
| `DenyCountries` | IBANs aus der Liste werden abgewiesen, alle anderen weiter geprüft |

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentDebitNote-Txt>
   SEPACountry-Rule = AllowCountries
   SEPACountry-List = DE,AT,CH
</PaymentDebitNote-Txt>
```

Abgewiesen heißt: Der Shop bricht die Prüfung ab und gibt `BankAccountIBANCountryError-Txt` aus.

> [!WARNING]
>
> Bleibt `SEPACountry-List` leer, findet **keine** Länderprüfung statt, unabhängig davon, was in `SEPACountry-Rule` steht. Der Shop akzeptiert dann jede IBAN, deren Aufbau und Prüfsumme stimmen.

Eine länderspezifische Längenprüfung gibt es nur für Länder, die der Shop kennt. Das sind rund 60 Länder des europäischen Zahlungsraums und einige darüber hinaus. Für eine IBAN aus einem anderen Land prüft der Shop Aufbau und Prüfsumme, nicht aber die erwartete Länge.

## Lastschriftmandate

Ohne Mandat kein Einzug. Der Shop kann das Mandat bei jeder Bestellung als PDF erzeugen und der Bestätigungsmail anhängen, vorausgefüllt mit den Adressdaten, IBAN und BIC, einer erzeugten Mandatsreferenz und Ihrer Gläubiger-Identifikationsnummer.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<CustomerMail>
   SEPACustomerPDFTemplate = pdf_sepa_customer.htm
   SEPACustomerPDFFileName = SEPA-Mandat_~BANK-IBAN~_~WS-OrderID~.pdf
   SEPACompanyPDFTemplate  = pdf_sepa_company.htm
   SEPACompanyPDFFileName  = SEPA-Mandat_~BANK-IBAN~_~WS-OrderID~.pdf
</CustomerMail>
```

In den Bestelldaten vermerkt der Shop, ob ein Mandat versendet wurde.

### Basis- oder Firmenlastschrift

Es gibt zwei PDF-Vorlagen, weil es zwei Mandatsarten gibt.

> [!WARNING]
>
> An einen Endkunden darf **nur** eine Basis-Lastschrift gehen. Nur wenn das Feld „Firma" in den Adressdaten gefüllt ist, kommt die Firmenlastschrift überhaupt in Frage. Der Shop unterscheidet danach automatisch, welche Vorlage er verwendet.

Welche Art der Käufer unterschrieben zurückgeschickt hat, erfährt der Shop nicht von selbst. Diese Angabe kommt über die Warenwirtschaftsschnittstelle herein oder wird im Online-Servicebereich gepflegt.

### Einmaliges oder wiederkehrendes Mandat

Ein wiederkehrendes Mandat erspart beiden Seiten Arbeit: Der Käufer unterschreibt einmal, Sie verwalten ein Mandat statt vieler. Ob Sie dem Käufer diese Wahl lassen, entscheiden Sie über den Text der PDF-Vorlage.

> [!WARNING]
>
> Liegt für eine Bankverbindung ein wiederkehrendes Mandat vor, lässt sich diese Bankverbindung im Kundenkonto **nicht mehr ändern**. Der Käufer muss eine neue anlegen. Schreiben Sie an dieser Stelle einen erklärenden Hinweis ins Template, sonst steht er vor einem Formular, das sich nicht speichern lässt.

Der Shop erzeugt außerdem kein neues Mandat, wenn für die gewählte Bankverbindung bereits ein wiederkehrendes vorliegt. Genau dafür ist es da.

### Mandatsreferenzen

Je Bankverbindung und Bestellung erzeugt der Shop eine eigene Mandatsreferenz, höchstens 35 Zeichen lang. Sie setzt sich aus dem Vorsatz und einer hochgezählten Nummer zusammen.

Mit `SEPAMandateGeneratorPrefix = DEU-` und `SEPAMandateGeneratorOffset = 1000000` lautet die erste Referenz `DEU-1000000`, die zweite `DEU-1000001` und so weiter.

Ob ein Vorsatz überhaupt möglich ist, hängt an Ihren angeschlossenen Systemen. Manche Warenwirtschaften verlangen eine rein numerische Mandatsreferenz. Klären Sie das, bevor Sie einen Vorsatz vergeben, denn nachträglich ändern lässt er sich nicht ohne Bruch in der Nummernfolge.

Die zuletzt erzeugte Referenz speichert der Shop je Bankverbindung und kann sie im Kundenkonto anzeigen.

### Die Tags dafür

| Tag | Liefert |
| - | - |
| `BANK-IBAN` | die IBAN |
| `BANK-BIC` | den BIC |
| `BANK-SEPAMode` | Klammerung: SEPA ist aktiv |
| `BANK-SEPALastDirectMandate` | die zuletzt erzeugte Mandatsreferenz |
| `BANK-SEPADirectMandateType` | Mandatsart, `1` einmalig, `2` wiederkehrend, `0` nicht gesetzt |
| `BANK-SEPADirectDebitType` | Lastschriftart, `1` Basis, `2` Firma, `0` nicht gesetzt |
| `BANK-SEPACreditorIdentifier` | Ihre Gläubiger-Identifikationsnummer |

Beide Typ-Tags nehmen den Wert als Parameter und klammern damit.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{BANK-SEPAMode}
   ~BANK-IBAN_text~: ~BANK-IBAN~
   ~BANK-BIC_text~: ~BANK-BIC~

   {BANK-SEPALastDirectMandate}
      <p>Letzte Mandatsreferenz: ~BANK-SEPALastDirectMandate~</p>
   {/BANK-SEPALastDirectMandate}

   {!BANK-SEPADirectMandateType(0)}
      <p>Mandatsart:
         {BANK-SEPADirectMandateType(1)}einmalig{/BANK-SEPADirectMandateType(1)}
         {BANK-SEPADirectMandateType(2)}wiederkehrend{/BANK-SEPADirectMandateType(2)}
      </p>
   {/!BANK-SEPADirectMandateType(0)}

   {!BANK-SEPADirectDebitType(0)}
      <p>Lastschriftart:
         {BANK-SEPADirectDebitType(1)}Basis-Lastschrift{/BANK-SEPADirectDebitType(1)}
         {BANK-SEPADirectDebitType(2)}Firmen-Lastschrift{/BANK-SEPADirectDebitType(2)}
      </p>
   {/!BANK-SEPADirectDebitType(0)}
{/BANK-SEPAMode}
```

Die Klammerung `{!BANK-SEPADirectMandateType(0)}` blendet die Zeile aus, solange keine Mandatsart feststeht.

### Eingabeformular

Dieses Muster passt in `{BANK-Edit}` auf `ws_bank_manage.htm` ebenso wie in `{BANK-MultipleDataInput}` und `{BANK-SingleDataInput}` auf `ws_place_order.htm`.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{BANK-SEPADirectMandateType(2)}
   <p>Für diese Bankverbindung liegt ein wiederkehrendes Mandat vor. Die Daten sind
      deshalb nicht änderbar. Legen Sie bei Bedarf eine neue Bankverbindung an.</p>
{/BANK-SEPADirectMandateType(2)}

<label for="~BANK-UserDescr_input~">~BANK-UserDescr_text~</label>
<input type="text" id="~BANK-UserDescr_input~" name="~BANK-UserDescr_input~"
   value="~BANK-UserDescr~" class="input~BANK-UserDescr_error~">
{BANK-UserDescr_error}<p class="error">~BANK-UserDescr_errortext~</p>{/BANK-UserDescr_error}

<label for="~BANK-Owner_input~">~BANK-Owner_text~ *</label>
<input type="text" id="~BANK-Owner_input~" name="~BANK-Owner_input~"
   value="~BANK-Owner~" class="input_owner~BANK-Owner_error~">
{BANK-Owner_error}<p class="error">~BANK-Owner_errortext~</p>{/BANK-Owner_error}

<label for="~BANK-IBAN_input~">~BANK-IBAN_text~ *</label>
<input type="text" id="~BANK-IBAN_input~" name="~BANK-IBAN_input~"
   value="~BANK-IBAN~" class="input_iban~BANK-IBAN_error~" autocomplete="off">
{BANK-IBAN_error}<p class="error">~BANK-IBAN_errortext~</p>{/BANK-IBAN_error}

<label for="~BANK-BIC_input~">~BANK-BIC_text~</label>
<input type="text" id="~BANK-BIC_input~" name="~BANK-BIC_input~"
   value="~BANK-BIC~" class="input_bic~BANK-BIC_error~" autocomplete="off">
{BANK-BIC_error}<p class="error">~BANK-BIC_errortext~</p>{/BANK-BIC_error}

<label for="~BANK-BANK_input~">~BANK-BANK_text~</label>
<input type="text" id="~BANK-BANK_input~" name="~BANK-BANK_input~"
   value="~BANK-BANK~" class="input_bank~BANK-BANK_error~" autocomplete="off">
{BANK-BANK_error}<p class="error">~BANK-BANK_errortext~</p>{/BANK-BANK_error}
```

Der Knopf zum Speichern gehört in `{BANK-Mode_Manage}` für den Aufruf aus dem Kundenkonto beziehungsweise in `{BANK-Mode_Order}` für den Aufruf aus dem Bestellablauf. Bei einem wiederkehrenden Mandat klammern Sie ihn zusätzlich mit `{!BANK-SEPADirectMandateType(2)}`, damit er dort gar nicht erst erscheint.

## IBAN-Konverter

Käufer, die ihre IBAN nicht zur Hand haben, können sie aus Kontonummer und Bankleitzahl errechnen lassen. Dafür gibt es ein JavaScript-Werkzeug, das sich als Ebene über jedes Formular legt, das Bankdaten abfragt.

![Iban Konverter17 03 14web](https://mintcdn.com/websaleag-44ee7ea6/LS0r3yDDNtTzNzIH/images/iban_konverter17_03_14web.jpg?fit=max\&auto=format\&n=LS0r3yDDNtTzNzIH\&q=85\&s=086a1e2b85b8c445dff7294f3b017d55)

> [!WARNING]
>
> Das Werkzeug rechnet, es prüft nicht. Ob die eingegebene Kontonummer und Bankleitzahl richtig sind, weiß es nicht, und manche Banken bilden ihre IBAN anders als nach dem Standardverfahren. Weisen Sie den Käufer darauf hin, dass die Berechnung ohne Gewähr erfolgt.

### Schritt 1: Bibliotheken einbinden

In den Kopfbereich des Templates, `ws_bank_manage.htm` oder `ws_place_order.htm`.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<script src="/$WS/ws_sysdata/js/ws-system-1.8.1.js"></script>
<script src="/$WS/ws_sysdata/js/ws-iban-converter-1.0.0.min.js"></script>

<script>
   $(document).ready(function () {
      var countryList = [
         ["DE", "Deutschland"],
         ["AT", "Österreich"],
         ["CH", "Schweiz"]
      ];
      $("#~BANK-IBAN_input~").ws_iban_converter({
         countryList: countryList
      });
   });
</script>
```

`countryList` bestimmt, welche Länder der Käufer im Konverter zur Auswahl hat. Ohne diesen Parameter erscheinen alle Länder, die das Werkzeug kennt.

> [!WARNING]
>
> Prüfen Sie die Versionsnummern gegen den Stand, den Ihr Shop tatsächlich verwendet. Von der Systembibliothek muss mindestens 1.8.1 eingebunden sein, und zwei verschiedene Stände derselben Bibliothek auf einer Seite vertragen sich nicht.

### Schritt 2: IBAN-Feld kennzeichnen

Der Aufruf oben bezieht sich auf die `id` des IBAN-Feldes. Sie muss also gesetzt sein.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<input type="text" id="~BANK-IBAN_input~" name="~BANK-IBAN_input~" value="~BANK-IBAN~">
```

### Schritt 3: Knopf und Ebene einbauen

Beides gehört in denselben Bereich wie das IBAN-Feld, also `{BANK-Edit}` innerhalb von `<form action="~FORM-BankManage~">` beziehungsweise `{BANK-MultipleDataInput}` und `{BANK-SingleDataInput}` innerhalb von `<form action="~FORM-PlaceOrder~">`.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<input type="button" class="ibanConverterOpen" value="IBAN berechnen">

<div class="ibanConverter">
   <h2>IBAN aus Kontonummer errechnen</h2>

   <div class="ibanStep1">
      <label>Land</label>
      <select class="ibanCountry"></select>
   </div>

   <div class="ibanStep2">
      <div class="ibanAccountNumber"><label>Kontonummer</label><input type="text"></div>
      <div class="ibanBankCode"><label>Bankleitzahl</label><input type="text"></div>
      <div class="ibanAgency"><label>Filiale</label><input type="text"></div>
      <div class="ibanCheckDigit"><label>Prüfziffer</label><input type="text"></div>
      <div class="ibanAccountType"><label>Kontotyp</label><input type="text"></div>
      <div class="ibanRegionCode"><label>Regionalcode</label><input type="text"></div>
      <input type="button" class="ibanBuild" value="IBAN generieren">
   </div>

   <div class="ibanStep3">
      <div class="ibanField"><label>IBAN</label><input type="text" class="ibanResult" readonly></div>
      <input type="button" class="ibanAssume" value="IBAN übernehmen">
   </div>

   <div class="ibanClose">schließen</div>
</div>
```

Die Klassen sind keine Gestaltung, sondern Ankerpunkte. Das Werkzeug findet seine Felder darüber. Welche der Eingabefelder in Schritt 2 sichtbar sind, entscheidet es je nach gewähltem Land selbst.

Die Bereiche `ibanStep2` und `ibanStep3` blendet es zunächst aus und erst ein, wenn das Land gewählt beziehungsweise die IBAN errechnet ist.

### Alle Einstellungen

Jede Klasse im HTML lässt sich über einen Parameter umbenennen, dazu kommen die Fehlertexte und fünf Rückrufe.

| Parameter | Wofür |
| - | - |
| `openField` | Element, das die Ebene öffnet |
| `ibanConverter` | die Ebene selbst |
| `closeField` | Element, das die Ebene schließt |
| `buildField` | Knopf zum Berechnen |
| `assumeField` | Knopf zum Übernehmen |
| `countryField` | Auswahlliste für das Land |
| `bankField` | Umschlag um das Feld für die Bankleitzahl |
| `agencyField` | Umschlag um das Feld für die Filiale |
| `accountField` | Umschlag um das Feld für die Kontonummer |
| `checkDigitField` | Umschlag um das Feld für die Prüfziffer |
| `accountTypeField` | Umschlag um das Feld für den Kontotyp |
| `regionField` | Umschlag um das Feld für den Regionalcode |
| `ibanField` | Umschlag um das Ergebnisfeld |
| `step2` | Bereich, der nach der Landauswahl erscheint |
| `step3` | Bereich, der nach dem Berechnen erscheint |
| `countryList` | Einschränkung der Länderauswahl |
| `errorMissingFields` | Fehlertext: nicht alle Felder gefüllt |
| `errorBankOnlyNumeric` | Fehlertext: Bankleitzahl nicht numerisch |
| `errorAccountOnlyNumeric` | Fehlertext: Kontonummer nicht numerisch |
| `errorAgencyOnlyNumeric` | Fehlertext: Filiale nicht numerisch |
| `errorCheckDigitkOnlyNumeric` | Fehlertext: Prüfziffer nicht numerisch |
| `errorAccountTypeOnlyNumeric` | Fehlertext: Kontotyp nicht numerisch |
| `errorRegionOnlyNumeric` | Fehlertext: Regionalcode nicht numerisch |
| `onInit` | Rückruf nach der Einrichtung |
| `onOpen` | Rückruf beim Öffnen der Ebene |
| `onClose` | Rückruf beim Schließen der Ebene |
| `onBuild` | Rückruf nach dem Berechnen |
| `onAssume` | Rückruf nach dem Übernehmen |

Der Parametername `errorCheckDigitkOnlyNumeric` enthält ein überzähliges `k`. Das ist kein Tippfehler in dieser Dokumentation, sondern der Name, den das Werkzeug erwartet.

Materialien: Styleanweisungen für den IBAN-Konverter

## Verwandte Themen

* Wegweiser: [Zahlungsarten anlegen, für die allgemeinen Parameter und die Ausgabe im Template](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/zahlungsarten-anlegen.md)
* Wegweiser: [Rechnungs- und multiple Lieferadressen abfragen, für das Muster der mehrfachen Kundendaten](https://dokumentation.websale.de/v8s/adressdaten/rechnungs-und-multiple-lieferadressen-abfragen.md)
* Wegweiser: [Paymorrow](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/paymorrow.md)
* Wegweiser: Lastschrift über PayPal Checkout


## Related topics

- [Zahlungsarten](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/zahlungsarten.md)
- [PayPal Checkout](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/paypal-checkout.md)
- [Paymorrow](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/paymorrow.md)
- [Sektionen: Positionen und Zahlung](https://dokumentation.websale.de/v8s/schnittstellen/bestellungen/ws-bestelldaten/sektionen-positionen-und-zahlung.md)
- [Materialien SEPA-Integration](https://dokumentation.websale.de/v8s/materialien/materialien-sepa-integration.md)


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