Einrichtung von SEPA Lastschriften ab rev1055

Ab der gSales Revision 1055 haben wir die SEPA Implementierung überarbeitet und erweitert. (ChangelogAnleitung zum Update).
Die folgenden Schritte sind notwendig um Lastschriften ab dem Februar 2014 erfolgreich bei euren Kunden einziehen zu können.

Bevor Einstellungen in gSales getätigt werden empfehlen wir euch den SEPA Leitfaden 2.0 vom Bundesverband Informationswirtschaft,
Telekommunikation und neue Medien e.V. (BITKOM) herunterzuladen und euch unbedingt gründlich in die sehr komplexe und von bisherigen Lastschriften abweichende Thematik einzulesen. Die PDF Datei findet ihr unter http://www.bitkom.org/de/themen/74457_75253.aspx

Als nächstes stellt sich die Frage wie SEPA und dessen Kernthemen wie Mandate, Mandatsreferenznummern, Vorlauffristen und Pre-Notifications in gSales umgesetzt wurden. Es folgt daher eine Schritt für Schritt Anleitung und Informationen um die SEPA Lastschriften unter gSales einzurichten. 

Wir empfehlen die Umstellung lange vor Februar 2014 einzurichten und zu testen. So bleiben euch böse Überraschungen am Stichtag erspart.

Voraussetzungen

Gläubiger-Identifikationsnummer

Um Lastschriften mittels SEPA einziehen zu können benötigt ihr eine Gläubiger-Identifikationsnummer. Diese wird von der deutschen Bundesbank vergeben und kann unter https://extranet.bundesbank.de/scp/ beantragt werden. Eure Gläubiger-Identifikationsnummer hinterlegt ihr gemeinsam mit eurer Bankverbindung (Kontoinhaber, IBAN, BIC) in der gSales Konfiguration unter: "Administration > Konfiguration > Lastschriften".

SEPA Geschäftsvorfall

Bei eurer Bank müsst ihr den SEPA Geschäftsvorfall für das betroffene Konto (welches die Lastschriften einziehen soll) freischalten lassen.

Ergänzung der Kundendaten

Die Kundendaten müssen um SEPA spezifische Angaben wie IBAN, BIC und dem Datum der Mandatserteilung ergänzt werden. Aus der internen gSales Kunden-ID und dem Datum der Mandatserteilung wird eine für das Kunden-Mandat eindeutige Mandatsreferenznummer errechnet.

Bei einer etwaigen Änderung der Bankverbindung des Kunden wird ein neues Mandat eingeholt welches wiederum ein neues Datum der Mandatserteilung zur Folge hat. Dadurch wird die nächste Lastschrift als Erstlastschrift erkannt und korrekt von der Bank verarbeitet. Dieser Umstand muss bei der Vergabe von eigenen Mandatsreferenznummern, was prinzipiell möglich ist, unbedingt beachtet werden da Lastschriften sonst ggf. nicht korrekt von der neuen Bankverbindung eingezogen werden können.

Das Lastschriftmandat

Prinzipiell ist es möglich bestehende schriftliche Lastschriftvereinbarung als SEPA Mandat fortzuführen. Hierbei ist es allerdings nötig den Kunden über diesen Vorgang zu informieren und über die Gläubiger-Identifikationsnummer und die Mandatsreferenznummer unter der das neue SEPA Mandat geführt wird zu unterrichten. Für neue Mandate gibt es im Internet zahlreiche vorgefertigte Vorlagen/Formulare: https://www.google.de/search?q=SEPA+Mandat+vorlage

Bestehende Bankverbindungen umwandeln nach IBAN und BIC

Mittels einem kostenpflichtigen Drittanbieter und der gSales 2 API ist es möglich anhand der bestehenden Bankverbindungen der für Lastschriften aktiven Kunden automatisiert die IBAN und BIC zu ermitteln und in den Kundendatensätzen zu hinterlegen. Das Script "example_convertBankData.php" findet ihr im Anhang dieses Artikels.

SEPA Pre-Notifcation

Die notwendige Pre-Notifcatiion des Kunden erfolgt über den Rechnungseinleitungs- oder Rechnungsabschlusstext. Hier stehen folgende Variablen zur Verfügung die bei Generierung der PDF Datei mit den tatsächlichen Daten ersetzt werden.

{sepa_creditor_id} Wird durch die von der deutschen Bundesbank vergebene Gläubiger-Identifikationsnummer ersetzt.
{sepa_mandat} Wird durch die Mandatsreferenznummer des Kunden ersetzt.
{amount} Wird durch den zu abbuchenden Betrag / Rechnungsbetrag ersetzt.
{sepa_payable} Wird durch das SEPA-Fälligkeitsdatum ersetzt, an welchem das Konto des Kunden belastet wird.
{c.bank_name} Variable aus den Stammdaten des Kunden. Wird durch den Namen der Bank ersetzt.
{c.bank_iban} Variable aus den Stammdaten des Kunden. Wird durch die IBAN des Kunden ersetzt.
{c.bank_bic} Variable aus den Stammdaten des Kunden. Wird durch die BIC des Kunden ersetzt.

Es kann folgender Standardtext in der gSales Konfiguration unter "Administration > Konfiguration > Rechnungen > Abschlusstext Rechnungen bei Lastschrifteinzug" hinterlegt werden.

---

Die Forderung von {amount} ziehen wir von Ihrem Konto {c.bank_iban} bei der {c.bank_name} ein. SEPA-Basis-Lastschrift mittels Mandat {sepa_mandat} und Gläubiger-Identifikationsnummer {sepa_creditor_id}. Fälligkeitstag ist der {sepa_payable}.

Wir danken für Ihr Vertrauen und freuen uns auch weiterhin auf eine gute Zusammenarbeit.

---

Darüber hinaus können für einzelne Kunden abweichende Texte können über die "Kunden bearbeiten"-Funktion individuell definiert werden.

Fälligkeiten & Fristen

Fälligkeitsdatum

Beschreibt den Tag an dem das Konto des Kunden belastet werden soll. Wenn keine abweichende Vereinbarung mit dem Kunden vorliegt beträgt diese Frist 14 Tage ab Rechnungsstellung / Pre-Notification. Durch eine Vereinbarung beispielsweise über die AGB kann diese Frist auf 5 Tage bei Erstlastschriften und 2 Tage bei Folgelastschriften verkürzt werden. Diese Fristen können in der gSales Konfiguration unter "Administration > Konfiguration > Lastschriften > Fälligkeit SEPA Erstlastschrift / Fälligkeit SEPA Folgelastschrift" hinterlegt werden. Wochenenden und TARGETII Feiertage werden von gSales bei der Berechnung des Fälligkeitsdatums berücksichtigt. Eine Hinterlegung der Fristen individuell pro Kunden ist aus Gründen der Vereinfachung nicht möglich!

Vorlauffrist

Die Vorlauffrist beschreibt das Datum an dem die XML Datei der Bank spätestens für eine korrekte Ausführung der Lastschriften vorliegen muss. Sie orientiert sich am Fälligkeitsdatum und beträgt bei Erstlastschriften 5, bei Folgelastschriften 2 Bankarbeitstage. Die Vorlauffrist wird im Lastschriftenpool angezeigt und muss bei der Übermittlung der XML Datei an die Bank unbedingt beachtet und eingehalten werden.

In dem Zeitraum zwischen Rechnungsstellung / Pro-Notification und Vorlauffrist können ggf. Einwände und Änderungen des Kunden entgegengenommen und berücksichtigt werden.

Erstellung der SEPA XML Datei

Rechnungen für Kunden mit aktivierten Lastschriften landen wie gewohnt automatisch im Lastschriftpool. Die neuen SEPA-Spezifischen Spalten zeigen euch folgende Informationen.

SEPA-Typ Anzeige ob es sich um eine Erst- oder Folgelastschrift handelt.
SEPA-Mandatsreferenz Mandatsreferenznummer des Kunden die bei der Lastschrift Verwendung findet.
SEPA-Fälligkeitsdatum Tag an dem der Betrag dem Kunden belastet und euch gutgeschrieben wird.
SEPA-Vorlauffrist Tag an dem die XML Datei spätestens bei der Bank eingereicht werden muss.

Als nächstes die einzelnen Positionen markieren für die eine SEPA XML Datei erzeugt werden soll und "SEPA Datei herunterladen" unter "Aktion wählen..." auswählen. Eventuell fehlende Angaben in den Kundendaten werden euch hier in einem Fehlerfall angezeigt, ansonsten lädt euer Browser die XML Datei herunter die anschließend an die Bank übermittelt werden kann.

 

Export der Kundendaten inkl. Mandatsreferenznummer (Nachtrag am 16.12.2013)

Um Kunden eine Mitteilung per E-Mail oder Brief zu schicken mit welchen Eckdaten die SEPA Lastschriften ausgeführt werden kann über die gSales 2 API und einem einfachen PHP Script eine CSV Liste generiert werden.

Hierzu wird die gSales 2 API aktiviert (falls nicht schon aktiv) und das folgende Script um die API URL und dem API Key ergänzt und aufgerufen. Es werden dann die ersten 500 Kundendatensätze angezeigt. Falls weitere Kundendatensätze vorhanden sind einfach den Scriptaufruf um ?page=2 erweitern und ggf. die Seitenanzahl hochzählen.

 

<?php echo '</pre>'; ini_set("soap.wsdl_cache_enabled", "0"); $strApiWsdlUrl = 'http:/meinegsales2url/api/api.php?wsdl'; $strAPIKey = 'meingsales2apikey'; $client = new soapclient($strApiWsdlUrl); $intCount = 500; $intOffset = 0; $intPage=1; if (isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] > 0){ $intPage = $_GET['page']; $intOffset = ($intCount*$intPage)-$intCount; } $arrFilter[] = array('field'=>'dtaus', 'operator'=>'is', 'value'=>1); $arrSort = array('field'=>'customerno', 'direction'=>'asc'); $arrResult = $client->getCustomers($strAPIKey, $arrFilter, $arrSort, $intCount, $intOffset); $strJson = json_encode($arrResult['result']); $arrCustomers = json_decode($strJson, true); echo '"customerno";"lastname";"firstname";"title";"address";"zip";"city";"bank_account_no";"bank_code";"bank_iban";"bank_bic";"sepa_ref"'. "\n"; foreach($arrCustomers as $key => $arrCustomer){ echo '"'.$arrCustomer['customerno'].'";"'.$arrCustomer['lastname'].'";"'.$arrCustomer['firstname'].'";"'.$arrCustomer['title'].'";"'.$arrCustomer['address'].'";"'.$arrCustomer['zip'].'";"'.$arrCustomer['city'].'";"'.$arrCustomer['bank_account_no'].'";"'.$arrCustomer['bank_code'].'";"'.$arrCustomer['bank_iban'].'";"'.$arrCustomer['bank_bic'].'";"'.$arrCustomer['sepa_ref'].'"'. "\n"; }

Bestehende Bankverbindungen konvertieren

Verwendet bitte das Script example_convertBankData.php aus dem API Verzeichnis in GSALES.