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

# accounts - Benutzerkonten

> Konfiguration des accounts-Knotens: Benutzerkonten im WEBSALE Shop mit Registrierung, Login, Passwortregeln, Auto-Login sowie Adress- und Zahlungsdaten.

export const confZahlungsarten = "Einstellungen → Shop-Konfiguration → Gruppe „Zahlungsarten\"";

export const confAdressdaten = "Einstellungen → Shop-Konfiguration → Gruppe „Adressdaten\"";

export const confLoginAnmeldung = "Einstellungen → Shop-Konfiguration → Gruppe „Login & Anmeldung\"";

export const KonfigDeeplink = ({node}) => <>
    Die Einstellung kann über folgenden Link direkt im Admin-Interface geöffnet werden:{" "}
    <code>{`https://<shop-domain>/admin/config/${node}`}</code>{" "}
    (<a href="/konfiguration/konfigurations-deeplinks">Deeplink-Übersicht</a>)
  </>;

export const TextbausteinHinweis = () => <>
    Dieser Text wird über einen Textbaustein realisiert.<br />
    Alles zu Textbausteinen in Konfigurationen finden Sie{" "}
    <a href="https://dokumentation.websale.de/konfiguration#verwendung-von-textbausteinen-in-konfigurationen">hier</a>.
  </>;

Der Konfigurationsknoten `accounts` umfasst alle nötigen Einstellungen rund um die Verwaltung von Benutzerkonten im Onlineshop.

Er definiert, wie sich Kundinnen und Kunden registrieren, anmelden, eingeloggt bleiben und welche Daten sie im Kundenkonto einsehen oder bearbeiten können. Darüber hinaus enthält er sicherheitsrelevante Parameter wie Passwortprüfungen, Login-Sperren, Auto-Login-Regeln sowie die Verwaltung von Zahlungs- und Adressdaten.

Über diese Konfiguration lässt sich das Verhalten des Kundenkontos individuell an die Anforderungen des Shops anpassen – von der einfachen Anmeldung bis zur detaillierten Steuerung von Berechtigungen und Datenfeldern.

***

## `accounts*` - Grundstruktur

Nachfolgend der Grundaufbau des Knotens `accounts`:

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "accounts": {
      "account": {...},
      "accountRestrictions": {...},
      "addressFieldsSettings":{...},
      "addressField":{...},
      "autoLogin": {...},
      "bankInfoField": {...},
      "creditCardField": {...},
      "customAddressField": {...},
      "watchListField": {...}
    }
}
```

#### Parameterbeschreibungen

| **Parameter**           | **Beschreibung**                                                                                                                                                                                                 |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `account`               | Steuert die zentralen Kontoeinstellungen für Kundinnen und Kunden, beispielsweise Sicherheitsprüfungen, Passwortregeln und Login-Schutzmechanismen.                                                              |
| `accountRestrictions`   | Begrenzt die Verfügbarkeit von Kundenkonten auf definierte Subshops.                                                                                                                                             |
| `addressFieldsSettings` | Steuert übergreifende Konfigurationen für Adressfelder, beispielsweise individuelle Beschriftungen, Standardwerte und Schreibschutzregeln.                                                                       |
| `addressField`          | Definiert Struktur und Validierungsregeln für einzelne Adressfelder.                                                                                                                                             |
| `autoLogin`             | Steuert das "Angemeldet bleiben"-Verhalten für Kundenkonten, inkl. Ablaufzeiten und Aktionsberechtigungen.                                                                                                       |
| `bankInfoField`         | Ermöglicht die Erfassung und Verwaltung von Bankdaten im Kundenkonto.                                                                                                                                            |
| `creditCardField`       | Konfiguriert die Anzeige pseudonymisierter Kreditkartendaten im Kundenkonto.                                                                                                                                     |
| `customAddressField`    | Ermöglicht die Definition zusätzlicher individueller Adressfelder für Rechnungs- und Lieferadressen.                                                                                                             |
| `watchListField`        | Definiert Felder der Merk- bzw. Beobachtungsliste mit eindeutiger ID und Namen. <br />Diese Felder sind ausschließlich über die API ansprechbar und besitzen keine Konfigurationsmöglichkeit im Admin Interface. |

***

## `accounts.account` - Benutzerkonto

Steuert die zentralen Kontoeinstellungen für Kundinnen und Kunden. Hier werden Sicherheitsprüfungen, Passwortregeln, Login-Schutzmechanismen und weitere Kontofunktionen festgelegt.

Die Konfiguration beeinflusst das Verhalten beim Anlegen, Anmelden und Verwalten von Kundenkonten im Shop.

Die Einstellungen zu diesem Abschnitt befinden sich im Admin Interface unter {confLoginAnmeldung}.

<KonfigDeeplink node="accounts.account" />

#### Beispielkonfiguration für alle Subshops (`accounts.account`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "accountActivation": {
    "enabled": true,
    "requireOptIn": true
  },
  "additionalPasswordCheckLevels": [
    {
      "checks": [
        {
          "options": { "len": 8 },
          "service": "dataChecker.minLength"
        }
      ]
    },
    {
      "checks": [
        {
          "options": { "minChars": 1 },
          "service": "dataChecker.digitClass"
        },
        {
          "options": { "minChars": 1 },
          "service": "dataChecker.specialClass"
        }
      ]
    }
  ],
  "confirmationOfRegistrationEmail": {
    "fromAddress": "",
    "fromName": "",
    "subject": "",
    "template": ""
  },
  "duplicate": {
    "checkExistence": false,
    "keepAccount": true,
    "foundEmail": {
      "template": "",
      "subject": "",
      "fromAddress": "",
      "fromName": ""
    },
    "informFullAddress": true,
    "keepSignsInInformAddress": 3
  },
  "errorCodes": {
    "passwordResetRequired": "<Textbaustein>"
  },
  "login": {
    "ipBlockCount": 3,
    "ipBlockCountDuration": 1,
    "ipBlockDuration": 10,
    "ipBlockEnabled": true,
    "loginBlockCount": 5,
    "loginBlockDuration": 180,
    "loginBlockEmail": {
      "fromAddress": "noreply@websale.de",
      "fromName": "Mein Onlineshop",
      "subject": "Mein Onlineshop | Ihr Login wurde gesperrt",
      "template": "loginBlocked.htm"
    },
    "loginCountDuration": 60
  },
  "newCustomerRules": [
    {
      "field": "customerNumber",
      "type": "filled"
    }
  ],
  "passwordChecks": [
    {
      "options": { "len": 64 },
      "service": "dataChecker.maxLength"
    }
  ],
  "saveCreditCardData": false,
  "sendConfirmationOfRegistrationEmail": true,
  "subAccountsEnabled": false
}
```

#### Parameterbeschreibungen

| **Parameter**                         | **Typ**      | **Beschreibung**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `accountActivation`                   | object       | Konfiguration für die Bestandskundenregistrierung. <br />Ermöglicht die Aktivierung eines bereits im Shop angelegten Kundendatensatzes (beispielsweise per Import) über die Aktion [AccountActivate](/frontend/referenz/aktionen/account#accountactivate). <br />Das Konto gilt als noch nicht aktiviert, wenn: noch kein Passwort gesetzt ist, dem Account keine Mitarbeiterkonten zugeordnet sind oder bisher kein Einladungslink versendet wurde. <br />Aus Sicherheitsgründen kann die Aktivierung nur einmal durchgeführt werden. Welche Felder bei der Bestandskundenregistrierung abgefragt werden, wird [hierüber](/konfiguration/customer-kundendaten#customer-customerdatafieldsettings-feldkonfiguration) gesteuert. |
| `enabled`                             | bool         | Aktiviert (`true`) bzw. deaktiviert (`false`) die Bestandskundenregistrierung.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `requireOptIn`                        | bool         | Steuert, ob nach der Aktivierung eine Opt-In E-Mail an die hinterlegte Adresse versendet wird, die die Registrierung bestätigen muss. <br />Default: `true`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `additionalPasswordCheckLevels`       | list         | Zusätzliche Prüfungen für Passwörter. <br />Ermöglicht gestaffelte Sicherheitsanforderungen, etwa Mindestlänge oder bestimmte Zeichengruppen (Zahlen, Sonderzeichen).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `checks`                              | multiService | Liste von Prüfregeln innerhalb eines Levels; alle enthaltenen Checks müssen erfüllt sein.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `service`                             | string       | Prüftyp (beispielsweise `dataChecker.minLength`, `dataChecker.maxLength`, `dataChecker.digitClass`, `dataChecker.specialClass`).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `options`                             | array        | Optionsobjekt für den jeweiligen Prüftyp. <br />[Hier gibt es mehr Informationen zu den Validierungs- und Prüfservices](/konfiguration/validierungs-und-prufservices).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `confirmationOfRegistrationEmail`     | object       | Konfiguration der Registrierungsbestätigungs-E-Mail.<br />Wird nur genutzt, wenn `sendConfirmationOfRegistrationEmail` = `true` ist.<br />Die E-Mail kann beispielsweise eine Möglichkeit zur Stornierung der Anfrage über einen Link enthalten.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `fromAddress`                         | string       | Absenderadresse, die im E-Mail-Versand verwendet wird.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `fromName`                            | string       | Anzeigename des Absenders in der E-Mail.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `subject`                             | string       | Betreffzeile der Registrierungsbestätigungs-E-Mail.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `template`                            | string       | Name oder Pfad der zu verwendenden [E-Mail-Vorlage](/konfiguration/messages-ereignisgesteuerte-e-mails).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `duplicate`                           | object       | Sammelobjekt für alle Einstellungen der Duplettenprüfung bei der Registrierung.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `checkExistence`                      | bool         | Aktiviert (`true`) bzw. deaktiviert (`false`) die Duplettenprüfung. <br />Default: `false`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `keepAccount`                         | bool         | Legt fest, ob das Konto auch dann angelegt wird, wenn die Prüfung eine Dublette findet (`true` = trotzdem anlegen).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `foundEmail`                          | object       | Mailkonfiguration für den Versand an die gefundene(n) Dublette(n). Im Mailtemplate kann über `$wsRequestVariables.email` die bei der Registrierung angegebene E-Mail-Adresse ausgegeben werden – beispielsweise damit der Account-Admin ein Subaccount für den Nutzer anlegen kann.                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `template`                            | string       | Name oder Pfad der E-Mail-Vorlage.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `subject`                             | string       | Betreffzeile der E-Mail.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `fromAddress`                         | string       | Absenderadresse der E-Mail.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `fromName`                            | string       | Anzeigename des Absenders.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `informFullAddress`                   | bool         | Steuert, ob in den Fehlerdetails der Meldung `duplicateAccountFound` (Aktion `accountRegister`) die gefundene Dubletten-Mailadresse unzensiert (`true`) oder zensiert (`false`) ausgegeben wird.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `keepSignsInInformAddress`            | int          | Nur wirksam, wenn `informFullAddress` = `false`: Anzahl der Zeichen im Local-Part der Mailadresse (alles vor dem `@`), die beibehalten werden. Alle übrigen Zeichen werden durch `*` ersetzt.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `passwordChecks`                      | array        | Basis-Passwortprüfungen (werden immer angewendet). Aufbau identisch zu `additionalPasswordCheckLevels`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `service`                             | string       | Prüftyp (beispielsweise `addressCheck.minLength`, `dataChecker.minLength` für Prüfung einer Mindestangabe, `addressCheck.maxLength`, `dataChecker.maxLength` für Prüfung maximaler Zeichenangabe etc.). <br />Übersicht der verfügbaren Validierungs- und Prüfregeln für Adressdatenfelder finden Sie [hier](/konfiguration/validierungs-und-prufservices).                                                                                                                                                                                                                                                                                                                                                                     |
| `options`                             | array        | Optionsobjekt für den jeweiligen Prüftyp.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `errorCodes`                          | object       | Sammelobjekt für besondere Fehlerzustände.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `passwordResetRequired`               | string       | Schlüssel/Code, der ausgegeben wird, wenn für das Benutzerkonto eine Passwortzurücksetzung erforderlich ist (beispielsweise nach einem administrativen Reset oder aus Sicherheitsgründen). <br />Wird vom System vorgegeben und kann nicht verändert werden. <br /><br /><TextbausteinHinweis />                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `login`                               | object       | Einstellungen für Anmelde-Schutzmechanismen.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `ipBlockEnabled`                      | bool         | Aktiviert (`true`) / deaktiviert (`false`) die IP-basierte Sperre.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `ipBlockCount`                        | int          | Anzahl fehlgeschlagener Versuche pro IP, bevor die IP gesperrt wird. <br />Default: **10**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `ipBlockCountDuration`                | int          | Zeitfenster in **Minuten**, in dem IP-Versuche gezählt werden. <br />Default: **1**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `ipBlockDuration`                     | int          | Sperrdauer der IP in **Minuten**.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `loginBlockCount`                     | int          | Anzahl fehlgeschlagener Logins pro Konto, bevor das Konto gesperrt wird. <br />Default: **5**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `loginCountDuration`                  | int          | Zeitfenster in **Minuten**, in dem Konto-Versuche gezählt werden. <br />Default: **60**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `loginBlockDuration`                  | int          | Kontosperrdauer in **Minuten**. <br />Default: **180**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `loginBlockEmail`                     | object       | E-Mail-Benachrichtigung bei Kontosperre.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `fromAddress`                         | string       | Absenderadresse (E-Mail).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `fromName`                            | string       | Anzeigename des Absenders.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `subject`                             | string       | Betreff der E-Mail.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `template`                            | string       | Vorlagenname/Datei (beispielsweise `loginBlocked.htm`).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `newCustomerRules`                    | array        | Regeln, nach denen ein eingeloggter Kunde im Bestellablauf als Neukunde (`newCustomer`) eingestuft wird - beispielsweise um Zahlungsarten für Neukunden zu sperren. Details siehe [Neukunden-Regeln](#neukunden-regeln-newcustomerrules). Bei `null` oder leerer Liste gilt kein eingeloggter Kunde als Neukunde.                                                                                                                                                                                                                                                                                                                                                                                                               |
| `saveCreditCardData`                  | bool         | Speicherung von Kreditkartendaten im Konto erlauben (`true`/`false`).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `sendConfirmationOfRegistrationEmail` | bool         | Gibt an, ob nach der Registrierung automatisch eine Bestätigungs-E-Mail versendet wird.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `subAccountsEnabled`                  | bool         | Aktiviert oder deaktiviert (`true`/`false`) die Mitarbeiterkontenfunktion. <br />Ist die Funktion aktiv, können für jedes übergeordnete Konto individuelle Mitarbeiterkonten angelegt werden. <br />Sobald diese Funktion aktiviert ist, ist eine direkte Anmeldung am übergeordneten Konto nicht mehr möglich. <br />Daher sollte die Aktivierung ausschließlich in einem neu eingerichteten Shop erfolgen – eine nachträgliche Aktivierung führt dazu, dass sich bestehende Nutzer nicht mehr anmelden können.                                                                                                                                                                                                                |

### Neukunden-Regeln (`newCustomerRules`)

Über `newCustomerRules` wird festgelegt, wann ein **eingeloggter Kunde** im Bestellablauf als Neukunde gilt. Der so ermittelte Kundentyp `newCustomer` wird von der Zahlungsarten-Validierung [`paymentValidation.accountType`](/konfiguration/validierungs-und-prufservices#paymentvalidation-accounttype-validierung-des-kundentyps-fur-zahlungsarten) ausgewertet - beispielsweise um Kauf auf Rechnung für Neukunden zu sperren.

Jede Regel besteht aus einem Feld und einer Bedingung. Trifft die Bedingung einer Regel zu, gilt der Kunde **nicht** als Neukunde. Nur wenn keine der Regeln zutrifft, wird der Kunde als Neukunde eingestuft.

#### Beispielkonfiguration (`accounts.account.newCustomerRules`)

Ein Kunde gilt als Neukunde, solange ihm noch keine Kundennummer zugewiesen wurde:

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "newCustomerRules": [
    {
      "field": "customerNumber",
      "type": "filled"
    }
  ]
}
```

#### Parameterübersicht

| **Parameter** | **Typ** | **Beschreibung**                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `field`       | string  | Das Feld, das für die Prüfung herangezogen wird. <br />Sonderfall `"customerNumber"`: die Kundennummer des Benutzerkontos. <br />Alle anderen Werte werden als `dataId` eines Feldes der **Rechnungsadresse** interpretiert (Standard- oder [zusätzliche Adressfelder](#accounts-customaddressfield-weitere-adressdatenfelder)). <br />Der Wert wird nicht gegen vorhandene Felder validiert - ein nicht existierendes Feld liefert immer einen leeren Wert. |
| `type`        | enum    | Bedingung, bei deren Zutreffen der Kunde **nicht** als Neukunde gilt. <br />Mögliche Werte: <br />- `"filled"` - Ist das Feld gefüllt, gilt der Kunde nicht als Neukunde. <br />- `"empty"` - Ist das Feld leer, gilt der Kunde nicht als Neukunde. <br />Default: `"filled"`                                                                                                                                                                                |

<Info>
  Der Kundentyp wird beim **Login im Bestellablauf** anhand dieser Regeln ermittelt (`newCustomer` oder `customer`). Eine **Neuregistrierung** im Bestellablauf führt unabhängig von den Regeln immer zum Kundentyp `newCustomer`. Gastbesteller haben den Kundentyp `guest`.
</Info>

***

## `accounts.accountRestrictions` - Subshopbeschränkungen für Benutzerkonten

Begrenzt die Verfügbarkeit von Kundenkonten auf definierte Subshops, beispielsweise B2B-Konten nur für einen Länder-Shop freigeben, exklusive Bereiche je Mandant oder Region.

Die Einstellungen zu diesem Abschnitt befinden sich im Admin Interface unter {confLoginAnmeldung}.

<KonfigDeeplink node="accounts.accountRestrictions" />

#### Beispielkonfiguration für alle Subshops (`accounts.accountRestrictions`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "subshopRestrictionList": [],
  "subshopRestrictionsEnabled": false,
  "subshopRestrictionsFallback": "onlySelf"
}
```

#### Parameterbeschreibungen

| **Parameter**                 | **Typ** | **Beschreibung**                                                                                                                                                                                                                                                                     |
| ----------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `subshopRestrictionsEnabled`  | bool    | Aktiviert (`true`) oder deaktiviert (`false`) die Subshop-Beschränkungen für Kundenkonten.                                                                                                                                                                                           |
| `subshopRestrictionsFallback` | enum    | Fallback-Verhalten, wenn keine explizite Zuordnung greift (beispielsweise leere Liste oder fehlende Kennung). Standard: `onlySelf` – Konto ist nur im „eigenen/aktuell adressierten" Subshop nutzbar.                                                                                |
| `subshopRestrictionList`      | list    | Liste der zulässigen Subshops (Allowlist) für das Konto. Einträge müssen den in Ihrer Umgebung verwendeten Subshop-Kennungen entsprechen (beispielsweise den Schlüsseln in der Subshop-Konfiguration). Ist die Liste leer, greift das Verhalten gemäß `subshopRestrictionsFallback`. |

***

## `accounts.addressFieldsSettings` - Individuelle Adressfelder-Einstellungen

Steuert die zentralen Konfigurationen für Adressfelder im Shop. Hier werden individuelle Beschriftungen, Standardwerte, Sichtbarkeiten und Schreibschutzregeln für Rechnungs- und Lieferadressen festgelegt.

Die Einstellungen zu diesem Abschnitt befinden sich im Admin Interface unter {confAdressdaten}.

<KonfigDeeplink node="accounts.addressFieldsSettings" />

#### Beispielkonfiguration für alle Subshops (`accounts.addressFieldsSettings`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "customLabelsDefinition": [],
  "defaultValuesDefinition": [],
  "inputVisibilityDefinition": null,
  "readOnlyFields": null
}
```

#### Parameterübersicht

| **Parameter**               | **Typ** | **Beschreibung**                                                              |
| --------------------------- | ------- | ----------------------------------------------------------------------------- |
| `customLabelsDefinition`    | list    | Definition bedingungsabhängiger Feldbeschriftungen für Adressfelder.          |
| `defaultValuesDefinition`   | list    | Definiert bedingungsabhängige Standardwerte / Vorbelegungen für Adressfelder. |
| `inputVisibilityDefinition` | list    | Definiert die Sichtbarkeit einzelner Adressfelder.                            |
| `readOnlyFields`            | list    | Definiert, welche Adressfelder nur sichtbar und nicht bearbeitbar sind.       |

**Bedingungsabhängige Definitionen (**`customLabelsDefinition` **&** `defaultValuesDefinition`**)**

Die Definitionen `defaultValuesDefinition` und `customLabelsDefinition` ermöglichen es, Standardwerte und benutzerdefinierte Feldbezeichnungen für Adressfelder abhängig von bestimmten Bedingungen zu definieren.

Beide Definitionen folgen derselben Struktur und unterstützen ein `conditions`-Array, mit dem die Anwendung der jeweiligen Regel an Feldbedingungen geknüpft werden kann.

**Aufbau eines Eintrags**

| **Eigenschaft**   | **Typ** | **Beschreibung**                                                                                                                                                                               |
| ----------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `fields`          | list    | Liste der betroffenen Adressfelder (beispielsweise `accounts.addressField.firstName`).                                                                                                         |
| `addressType`     | string  | Adresstyp, für den die Regel gilt. `"bill"` = Rechnungsadresse, `"delivery"` = Lieferadresse.                                                                                                  |
| `label` / `value` | string  | Hier wird zwischen beiden Definitionen unterschieden. `customLabelsDefinition` (`label`): die anzuzeigende Beschriftung. `defaultValuesDefinition` (`value`): der vorzubelegende Standardwert. |
| `conditions`      | list    | Liste von Bedingungen, die alle erfüllt sein müssen, damit die Regel greift.                                                                                                                   |

**Aufbau einer Condition**

| **Eigenschaft** | **Typ** | **Beschreibung**                                                                                                                                     |
| --------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `field`         | string  | Das Adressfeld, auf das sich die Bedingung bezieht (beispielsweise `accounts.addressField.country`).                                                 |
| `type`          | string  | Art der Prüfung. `value`: exakter Vergleichswert oder `filled`: Feld ist befüllt.                                                                    |
| `value`         | string  | Abhängig davon, was bei `type` definiert wurde. Bei `"value"`: der erwartete Wert (beispielsweise `"DE"`). Bei `"filled"`: ein leerer String (`""`). |

**Beispiel für** `customLabelsDefinition`

Benutzerdefinierte Feldbeschriftungen, die abhängig von Bedingungen angezeigt werden:

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "customLabelsDefinition": [
    {
      "fields": ["accounts.addressField.firstName"],
      "addressType": "bill",
      "label": "Vorname (Rechnung)",
      "conditions": [
        {
          "field": "accounts.addressField.country",
          "type": "value",
          "value": "DE"
        }
      ]
    },
    {
      "fields": ["accounts.addressField.firma"],
      "addressType": "delivery",
      "label": "Firma (Lieferung)",
      "conditions": [
        {
          "field": "accounts.addressField.country",
          "type": "filled",
          "value": ""
        }
      ]
    }
  ]
}
```

**Erklärung**

Im ersten Eintrag wird das Feld `accounts.addressField.firstName` in der Rechnungsadresse mit dem Label „Vorname (Rechnung)" beschriftet – jedoch nur, wenn das Land auf `DE` gesetzt ist. Im zweiten Eintrag erhält das Feld `accounts.addressField.firma` in der Lieferadresse das Label „Firma (Lieferung)", sobald das Feld `accounts.addressField.country` einen beliebigen Wert enthält (`type: "filled"`).

**Beispiel für** `defaultValuesDefinition`

Standardwerte für Adressfelder, die ebenfalls bedingungsabhängig vorbefüllt werden:

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "defaultValuesDefinition": [
    {
      "fields": ["accounts.addressField.country"],
      "addressType": "bill",
      "value": "DE",
      "conditions": []
    },
    {
      "fields": ["accounts.addressField.salutation"],
      "addressType": "delivery",
      "value": "Herr",
      "conditions": [
        {
          "field": "accounts.addressField.country",
          "type": "value",
          "value": "DE"
        }
      ]
    }
  ]
}
```

**Erklärung**

Im ersten Eintrag wird das Feld `accounts.addressField.country` in der Rechnungsadresse bedingungslos mit `"DE"` vorbelegt. Im zweiten Eintrag wird die Anrede der Lieferadresse (`accounts.addressField.salutation`) nur dann auf `"Herr"` gesetzt, wenn das Land `DE` ist.

***

## `accounts.addressField` - Einzelne Adressfelder definieren

Steuert die Struktur und Eigenschaften einzelner Adressfelder im Shop. Über Validierungen können Eingaben überprüft und formale Anforderungen (beispielsweise Pflichtfelder, Formatprüfungen) festgelegt werden.

Die Einstellungen zu diesem Abschnitt befinden sich im Admin Interface unter {confAdressdaten}.

<KonfigDeeplink node="accounts.addressField" />

#### Beispielkonfiguration für alle Subshops (`accounts.addressField.firstName`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "label": "<Textbaustein>",
  "name": "firstName",
  "validations": [
    {
      "options": {
        "len": 255
      },
      "service": "addressCheck.maxLength"
    }
  ]
}
```

#### Parameterübersicht

| **Parameter** | **Typ** | **Beschreibung**                                                                                                                                                            |
| ------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `label`       | string  | Definition der Feldbeschriftung. <br /><br /><TextbausteinHinweis />                                                                                                        |
| `name`        | string  | Anzeigename (in diesem Beispiel des Kunden, in anderen Fällen beispielsweise der Name der Stadt, in der der Kunde wohnt).                                                   |
| `validations` | array   | Definiert die Liste der Validierungsregeln, die auf das jeweilige Adressfeld angewendet werden.                                                                             |
| `options`     | array   | Definiert die Parameter oder Einstellungen, die eine Validierungsregel benötigt – beispielsweise Grenzwerte, erlaubte Zeichen oder Bedingungen.                             |
| `len`         | int     | Gibt im Beispiel die maximal zulässige Zeichenlänge für die Validierung an.                                                                                                 |
| `service`     | string  | Bezeichnet den verwendeten Validierungsdienst, der die eigentliche Prüfung durchführt – hier beispielsweise `addressCheck.maxLength` zur Kontrolle der maximalen Feldlänge. |

***

## `accounts.autoLogin` - Angemeldet bleiben

Steuert das „Angemeldet bleiben"-Verhalten (Auto-Login) für Kundenkonten: Aktivierung, Ablaufzeiten und Reaktionen auf Sonderfälle.

Die Einstellungen zu diesem Abschnitt befinden sich im Admin Interface unter {confLoginAnmeldung}.

<KonfigDeeplink node="accounts.autoLogin" />

#### Beispielkonfiguration für alle Subshops (`accounts.autoLogin`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "actions": null,
  "active": true,
  "errorCodes": {
    "actionRequiresLogin": ""
  },
  "expireTimesInDays": {
    "cookie": 30,
    "noAutoLogin": 10,
    "noPasswordLogin": 20
  },
  "restriction": "notAllowed"
}
```

#### Parameterbeschreibung

| **Parameter**         | **Typ** | **Beschreibung**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `active`              | bool    | Aktiviert (`true`) oder deaktiviert (`false`) die Auto-Login-Funktion insgesamt.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `restriction`         | enum    | Richtlinie für Auto-Login. Wert `notAllowed`: Auto-Login ist untersagt (keine dauerhafte Sitzung). Weitere Werte sind systemspezifisch vorbelegt.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `expireTimesInDays`   | object  | Sammelobjekt mit Ablaufzeiten (in **Tagen**) für unterschiedliche Szenarien.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `cookie`              | uint    | Gültigkeitsdauer des Auto-Login-Cookies in Tagen. Nach Ablauf ist ein regulärer Login erforderlich. Default: **30**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `noAutoLogin`         | uint    | Maximale Inaktivitätsdauer in Tagen ohne Auto-Login; nach Ablauf wird keine automatische Anmeldung mehr versucht. Default: **10**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `noPasswordLogin`     | uint    | Zeitraum in Tagen, nach dem trotz bestehendem Auto-Login eine Passwort-Eingabe erzwungen wird (beispielsweise als Re-Auth). Default: **20**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `errorCodes`          | object  | Objekt für spezielle Fehlerzustände.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `actionRequiresLogin` | string  | Schlüssel/Code für den Fall, dass eine Aktion eine erneute Anmeldung erfordert.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `actions`             | list    | Liste der Aktionen, die während eines automatischen Logins **ohne erneute Passwortabfrage** erlaubt sind. Damit lässt sich gezielt festlegen, was Kunden im angemeldeten Zustand nutzen dürfen, ohne sich erneut anzumelden. <br />Beispielsweise kann so der Zugriff auf unkritische Funktionen wie die Merkliste erlaubt werden, während sicherheitsrelevante Aktionen (beispielsweise Warenkorb- oder Bestellvorgänge) weiterhin eine erneute Anmeldung erfordern. <br />Beispiele für erlaubte Aktionen: `WatchListAdd` → neue Merkliste anlegen, `WatchListDelete` → Merkliste löschen, `WatchListItemAdd` → Produkte auf eine Merkliste legen, `WatchListItemDelete` → Produkte von einer Merkliste löschen. <br />Wenn keine Aktionen erlaubt werden sollen, muss der Wert auf `null` gesetzt werden. In diesem Fall sind alle Aktionen automatisch gesperrt, und für jede Interaktion ist eine erneute Anmeldung erforderlich. |

***

## `accounts.bankInfoField` - Bankdaten

Ermöglicht die Erfassung und Verwaltung von Bankdaten im Kundenkonto. Im Gegensatz zu Kreditkartendaten können diese Informationen direkt im Shop eingegeben, geändert und gespeichert werden.

Die gespeicherten Bankverbindungen stehen anschließend im Bestellprozess – insbesondere bei der Zahlart SEPA-Lastschrift – zur Auswahl.

<KonfigDeeplink node="accounts.bankInfoField" />

#### Beispielkonfiguration für alle Subshops (`accounts.bankInfoField.owner`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "dataId": "owner",
  "label": "Kontoinhaber",
  "name": "owner"
}
```

#### Parameterbeschreibung

| **Parameter** | **Typ** | **Beschreibung**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `dataId`      | string  | Interne Kennung des Datenfeldes (beispielsweise „owner").                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `label`       | string  | Anzeigename im Kundenkonto, beispielsweise „Kontoinhaber".                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `name`        | string  | Technischer Feldname. Wird vom System vorgegeben und sollte nicht verändert werden. Folgende `name` stehen zur Verfügung: <br />- `accountNumber` - Kontonummer der Kundin bzw. des Kunden (in der Regel nur bei älteren Konten ohne IBAN relevant) <br />- `bankCode` - Bankleitzahl (nur relevant, wenn keine IBAN verwendet wird) <br />- `bankName` - Name der Bank <br />- `bic` - BIC (Business Identifier Code) der Bank <br />- `iban` - IBAN (International Bank Account Number) der Kontoinhaberin bzw. des Kontoinhabers <br />- `owner` - Name der Kontoinhaberin bzw. des Kontoinhabers <br />- `sepaDebitType` - Art der SEPA-Lastschrift (beispielsweise CORE oder B2B) <br />- `sepaDirectDebitMandate` - Mandatsreferenznummer der SEPA-Lastschrift <br />- `sepaMandateDate` - Datum der Mandatserteilung (ISO-Format empfohlen: YYYY-MM-DD) <br />- `sepaMandateType` - Typ des SEPA-Mandats (beispielsweise Erstmandat oder Folgemandat) |

***

## `accounts.creditCardField` - Kreditkarten

Die Bezahlung mit Kreditkarte wird aus Sicherheitsgründen ausschließlich über externe Payment-Service-Provider (PSP) abgewickelt.

Die Eingabe der Kreditkartendaten, die Erkennung des Kartentyps sowie die Durchführung des 3D Secure 2.0-Verfahrens erfolgen vollständig beim Payment-Provider. Reale Kreditkartendaten werden niemals im Onlineshop gespeichert oder verarbeitet.

Im Kundenkonto können – sofern vom PSP unterstützt und vertraglich freigeschaltet – pseudonymisierte Kreditkarteninformationen angezeigt werden. Dadurch können Kunden beim nächsten Einkauf bequem eine gespeicherte Karte auswählen, ohne die Daten erneut eingeben zu müssen. Eine direkte Eingabe oder Änderung von Kreditkartendaten im Shop ist dabei nicht möglich.

<KonfigDeeplink node="accounts.creditCardField" />

#### Beispielkonfiguration für alle Subshops (`accounts.creditCardField.holder`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "dataId": "holder",
  "label": "Kreditkarten-Inhaber",
  "name": "holder"
}
```

#### Parameterbeschreibung

| **Parameter** | **Typ** | **Beschreibung**                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `dataId`      | string  | Interne Kennung des Datenfeldes (beispielsweise „holder").                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `label`       | string  | Anzeigename im Kundenkonto, beispielsweise „Kreditkarten-Inhaber".                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `name`        | string  | Technischer Feldname. Wird vom System vorgegeben und sollte nicht verändert werden. Folgende `name` stehen zur Verfügung: <br />- `cvCode` - Sicherheitscode (3 oder 4 Stellen, je nach Kartentyp) <br />- `expireMonth` - Ablaufmonat der Karte <br />- `expireYear` - Ablaufjahr der Karte <br />- `holder` - Karteninhaberin bzw. Karteninhaber <br />- `number` - Kartennummer (pseudonymisiert) <br />- `type` - Kartentyp (beispielsweise Visa, MasterCard, American Express) |

***

## `accounts.customAddressField` - Weitere Adressdatenfelder

Ermöglicht die Definition zusätzlicher Adressfelder für Rechnungs- und/oder Lieferadressen.

Diese Felder ergänzen die Standardangaben (beispielsweise Name, Straße, PLZ, Ort, Land, Telefon) um individuelle Eingabefelder, die im Kundenkonto oder im Checkout angezeigt und gespeichert werden. Beispiele für typische Zusatzfelder sind: *Adresszusatz*, *Etage*, *Postfach*, *Packstationnummer* oder *Abteilung*.

<KonfigDeeplink node="accounts.customAddressField" />

#### Beispielkonfiguration für alle Subshops (`accounts.customAddressField.postOfficeBox`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "dataId": "customField.postfach",
  "label": "<Textbaustein>",
  "name": "postfach",
  "validations": [
    {
      "options": {
        "len": 3
      },
      "service": "addressCheck.minLength"
    },
    {
      "options": {
        "len": 20
      },
      "service": "addressCheck.maxLength"
    },
    { 
      "options": {
        "signs": "^[0-9A-Za-z\\s-]+$"
      },
      "service": "addressCheck.legalSigns" 
    }   
  ]
}
```

#### Parameterbeschreibung

| **Parameter** | **Typ** | **Beschreibung**                                                                                                                                                                                                                                                                                                                       |
| ------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `dataId`      | string  | Interne Kennung oder Referenz-ID des Feldes (beispielsweise zur Verknüpfung mit externen Systemen oder Datenquellen).                                                                                                                                                                                                                  |
| `label`       | string  | Anzeigename des Feldes im Frontend (beispielsweise „Etage" oder „Packstationnummer"). <br /><br /><TextbausteinHinweis />                                                                                                                                                                                                              |
| `name`        | string  | Technischer Feldname, der intern für Speicherung und Zuordnung verwendet wird.                                                                                                                                                                                                                                                         |
| `validations` | array   | Optionales Validierungsobjekt zur Prüfung der Eingabe (beispielsweise Pflichtfeld, maximale Länge, bestimmte Zeichenformate). Kann `null` sein, wenn keine Validierung erforderlich ist. Übersicht der verfügbaren Validierungs- und Prüfregeln für Adressdatenfelder finden Sie [hier](/konfiguration/validierungs-und-prufservices). |

***

## `accounts.watchListField` - Merkliste

Definiert Felder der Merk- bzw. Beobachtungsliste mit eindeutiger ID und Namen.

Diese Felder sind ausschließlich über die API ansprechbar und besitzen keine Konfigurationsmöglichkeit im Admin Interface.

#### Beispielkonfiguration für alle Subshops (`accounts.watchListField`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "name": "watchListIds"
}
```

#### Parameterbeschreibung

| **Parameter** | **Typ** | **Beschreibung**                                                                                                                 |
| ------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `name`        | string  | Technischer Name des Watchlist-Feldes. Dient zur eindeutigen Identifizierung des Feldes innerhalb der API und interner Prozesse. |
