Ab der gSales Revision 1055 haben wir die SEPA Implementierung überarbeitet und erweitert. (Changelog, Anleitung 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 folgende Script - ihr müsst die API Zugangsdaten hinterlegen und es anschließend auf eurem Server aufrufen.
Hat denn die SEPA-Datei das Merkmal Local Instrument=COR1 fuer die EURO-Eil-Lastschrift?
wir wollen nicht die von gSales errechnete Mandatsreferenznummer nutzen, sondern erstellen für unsere Kunden Rahmenmandate. Heisst wir nutzen die Kundennummer und ein Kürzel, dieses bleibt solange der Kunde uns das Mandat gegeben hat Lastschriften einzuziehen gültig! Somit muss man nicht immer wieder mit neuen Mandatsref.nummern hantieren.
Könnte man diese Funktionalität evtl. noch mit einpflegen?
Prefix + gSales-KundenID + ggf. Suffix
@Marcus
Beim aktuellen Stand leider noch nicht. Wir werden versuchen das neue Merkmal bis zum Sepa Launch zu implementieren.
@Pat Bone
Du kannst in den Kundendetails oder auch über die gSales API eine eigene Mandatsreferenznummer vergeben. Beachte aber bitte, dass wenn sich die Bankverbindung und damit auch das Mandat des Kunden ändert du zwingend eine neue Referenznummer eintragen musst da die Lastschrift sonst als "Folgelastschrift" gekennzeichnet wird und dann nicht abgebucht werden kann.
Wenn ich nach der Ausfuehrung des Umwandlungsscripts DTAU auf IBAN/BIC die SEPA-Datei bei der Bank einreiche, sind das alles Erstlastschriften. Ich habe aber lauter Bestandsmandate der alten Lastschriften, was aus meiner Sicht ja Folgelastschriften sein muessten. Das ist ziemlich wichtig aufgrund der Lquiditaet bzw. der Fälligkeitsfristen. Warum sind das Erstlastschriften?
@Marcus
Es handelt sich um eine SEPA Erstlastschrift. Ohne SEPA Erstlastschrift keine SEPA Folgelastschrift. Was du mit DTAUS eingezogen hast hat keine Relevanz.
Na hossa, ist das wirklich so? Da werden ja viele Unternehmen richtig in die Knie gehen finanziell.
Mir ist bei der aktuellen rev folgendes Problem aufgefallen beim Einreichen der SEPA-Datei: Wenn ich z. B wie dieses Wochende Freitag und Samstag Lastschriften hinzufuegen durch den Serienrechnungslauf und die SEPA-Datei heute am Montag im Online-Banking hochlade, erhalte ich 2 Fehlermeldungen: Zum einen stimmen die Vorlagefristen nicht mehr, diese muss ich manuell einen Tag nach hinten legen. Zum anderen kann zumindest das Online-Banking der Sparkasse offenbar Folgelastschrift und Erstlastschrift nicht in einer Datei verarbeiten und nimmt die Datei nicht an. Erst wenn man die Lastschriften trennt, wird es angenommen.
Wie mir meine Bank heute mitteilt, gibt es seit COR1 den Unterschied zwischen Erst- und Folgelastschrift beim Dateieinreichen nicht mehr. Nur COR1 kann gsales nicht. Es gibt uebrigens kein finales Umstellungsdatum. Die Unternehmen, die auf SEPA umstellen, fuehren dies derzeit durch. Es waere toll, wenn die COR1-Funktion fruehzeit realesed werden wuerde.
In der Tat eine sehr schöne Änderung (COR1)! Hier die Infos: http://www.datev.de/portal/ShowPage.do?pid=dpi&nid=153955
COR1 würde dem bisherigen alten Verfahren doch sehr Nahe kommen.
Hallo,
wird es möglich sein, die von gsales generierten Mandatsreferenz einem eigenen Muster folgen zu lassen?
Also z.b. "präfixKDNummerxy" ?
Wird in kürze noch ein update für COR1 kommen?
Habe einen Fehler gefunden:
wohl einen haken bei einer Erstlastschrift vergessen welche dann nicht an die Bank übermittelt wurde
1 Tag später stimmte die Vorlauffrist nicht mehr
Da man die Frist nicht unter "Lastschrift" editieren kann musste das Rechnungsdatum geändert werden um die Vorlauffrist einhalten zu können
Lastschrift gelöscht und aus der Rechnung neu erstellt, diese wurde dann jedoch als Folgelastschrift gekennzeichnet obwohl es eine Erstlastschrift sein muss!
Wäre also gut wenn man den Wert für die Vorlauffrist usw. über die Editfunktion bei Lastschriften ändern könnte, dann kommt man auch nicht auf die Idee das Rechnungsdatum zu ändern und eine Erstlastschrift bleibt eine Erstlastschrift!
Also ich beschäftige mich mit dem Thema SEPA auch schon recht lange, warum gsales COR1 nicht unterstützt ist mir unerklärlich, das würde das ganze doch sehr vereinfachen oder?
Mit jdem Versuch der letzten knapp 12 Monate eine XML Datei an SFIRM oder Profi Cash zu übermitteln kamen Fehlermeldungen beim Datum. Da hilft auch das leeren der dtauspool Tabelle nichts, da diese lediglich die letzten Lastschriften löscht und anschließend auch keine Berechnung mehr stattfinden kann dieser fälligen Rechnungen.
Ich denke man kommt um einen Converter nicht herum und schließe mich an die Meinung von Marcus an, was wiederum eine Redundanz unmöglich macht. Schade, dass man sich als Anwender von Programmen solchen Aufwand antun muss, ich würde gerne 500 oder 1000 Euro zahlen, wenn es danach auch ordentlich funktioniert wie das alte bisherige dtaus Verfahren.
Wir beginnen ab dem 01.07.2014 mit dem Konverter und lassen das mit dtaus aus dem gsales laufen. Zudem könnte man ja eine kleine Routine anbieten um alle Datensätze z.B. Kundennummer als SEPA Referenz zu kopieren. Nicht alle können mit mysql kopieren innerhalb der Abfragen und Updates ordentlich machen.
Warum steht eigentlich der Hinweis (beta) noch im Programm?