Zum Hauptinhalt springen

xInvoice Zahlungsdetails

mseDoc365 erzeugt die EN16931-Zahlungsdetail-Gruppen in beiden Syntaxen — CII (XRechnung) und UBL (XRechnung-UBL) — indem die Zahlungsmethode des Belegs klassifiziert und die SEPA-spezifischen Daten aus den BC-Standardtabellen aufgelöst werden. Diese Seite beschreibt, wie eine gebuchte Verkaufsrechnung oder Verkaufsgutschrift auf der BC-Seite in den korrekten Zahlungsdetail-Block auf der Empfängerseite übersetzt wird.

Zahlungsmethode → Zahlungsdetail-Klassifizierung

Der Klassifikator liest das Feld Zahlungsmethode → mseBC mseDoc365 UNECE Code (BT-81). Dieser Code bestimmt, welche Zahlungsdetail-Gruppe in der XML erzeugt wird:

UNECE-CodeBedeutungXML erzeugt
30Generische ÜberweisungBG-17PayeePartyCreditorFinancialAccount (CII) / PayeeFinancialAccount (UBL)
58SEPA-ÜberweisungBG-17
59SEPA-LastschriftBG-19PayerPartyDebtorFinancialAccount / PaymentMandate + BT-89 (Mandatsreferenz) + BT-90 (Gläubiger-ID)
sonstige (z. B. 42 Scheck, 48/54/55 Karte)Nicht-SEPA / keine BankverbindungWeder BG-17 noch BG-19 — nur das Element TypeCode / PaymentMeansCode

Ist die Zahlungsmethode des Belegs leer (oder der UNECE-Code darauf leer), setzt das System den UNECE-Code vor der Klassifizierung standardmäßig auf 30. Um beide Gruppen bewusst zu unterdrücken, konfigurieren Sie den UNECE-Code der Zahlungsmethode auf einen anderen Wert als 30 / 58 / 59.

SEPA-Lastschrift (BG-19) — Datenermittlung

Für den Code 59 benötigt das System drei SEPA-spezifische Werte:

  • BT-89 Mandatsreferenz — die ID des SEPA-Lastschriftmandats
  • BT-90 Gläubiger-Identifikationsnummer — die SEPA-Gläubiger-Nr. des Firmenbankkontos
  • BT-91 Zahler-IBAN — die IBAN des im Mandat hinterlegten Kundenbankkontos

Mandat (BT-89) — Auflösungsreihenfolge

Für Verkaufsrechnungen:

  1. Das direkt am Beleg gesetzte Mandat (Sales Invoice Header."Direct Debit Mandate ID").
  2. Eine Suche über die SEPA-Lastschriftmandate des Rechnungsempfänger-Debitors, die offen sind (Closed = Nein, Blocked = Nein), am Fälligkeitsdatum gültig sind und entweder Ignore Expected Number of Debits = Ja oder Expected Number of Debits > Debit Counter aufweisen. Der erste Treffer gewinnt.
  3. Dieselbe Suche über den Auftraggeber-Debitor, falls Rechnungsempfänger und Auftraggeber unterschiedlich sind.

Für Verkaufsgutschriften: Die BC-Standardtabelle Sales Cr.Memo Header führt kein Mandatsreferenz-Feld. Stattdessen liest das System Applies-to Doc. Type = Invoice + Applies-to Doc. No., ermittelt die zugehörige gebuchte Rechnung und übernimmt deren Mandatsreferenz. Ist die Gutschrift keiner Rechnung zugewiesen, läuft dieselbe Rechnungsempfänger → Auftraggeber-Suche.

Liefert keiner der Schritte ein Mandat, wird ein aussagekräftiger Fehler ausgelöst und die XML nicht erzeugt.

Zahler-IBAN (BT-91) — Auflösungsreihenfolge

  1. Das im Mandat hinterlegte Kundenbankkonto (SEPA Direct Debit Mandate."Customer Bank Account Code").
  2. Das erste Kundenbankkonto mit nicht-leerer IBAN des Rechnungsempfänger-Debitors.
  3. Dieselbe Suche über den Auftraggeber-Debitor, falls die beiden unterschiedlich sind.

Die IBAN selbst stammt aus Customer Bank Account.IBAN. Liefert keiner der Schritte eine IBAN, wird ein Fehler ausgelöst.

Gläubiger-Identifikationsnummer (BT-90) — Auflösungsreihenfolge

  1. Das am Beleg gesetzte Firmenbankkonto (Sales Header."Company Bank Account Code").
  2. Ein Bankkonto mit Use as Default for Currency = Ja, dessen Währungscode dem Belegwährungscode entspricht.
  3. Das LCY-Standard-Bankkonto (Default-for-Currency mit leerem Währungscode) — wenn der Beleg in einer Fremdwährung ist und kein währungsspezifisches Default-Konto konfiguriert ist.
  4. Als letzte Möglichkeit ein beliebiges Bankkonto, das eine Creditor No. gesetzt hat.

Jeder Schritt schließt gesperrte (Blocked) Bankkonten aus. Der BT-90-Wert selbst kommt aus Bank Account."Creditor No.".

Ist das Firmenbankkonto explizit am Beleg gesetzt und gesperrt, löst das System einen Fehler aus, statt still ein anderes Konto zu wählen — die explizite Auswahl gewinnt, und ein gesperrtes Konto ist nie der richtige Wert.

Überweisung (BG-17) — Erzeugung

Für die Codes 30 und 58 wird BG-17 mit der IBAN (Company Information.IBAN) und dem BIC (Company Information.SWIFT Code) der eigenen Firma als Zahlungsempfänger erzeugt. Das gilt für Rechnungen und Gutschriften gleichermaßen — Gutschriften nutzen denselben Zahlungsdetail-Workflow wie Rechnungen, lediglich die Geldflussrichtung unterscheidet sich (was unabhängig von der XML-Struktur ist).

Fehler und Lösungen

Ist ein Beleg für SEPA-Lastschrift konfiguriert und ein BG-19-Pflichtfeld kann nicht aufgelöst werden, löst das System einen aussagekräftigen Fehler aus. Die Ausgabe wird auf der BC-Seite gestoppt, damit Sie die Daten korrigieren können, bevor der Empfänger eine ungültige Rechnung sieht.

FehlermeldungWo Sie es beheben
No SEPA Direct Debit Mandate could be resolved … on customer XSetzen Sie Mandatsreferenz am Beleg oder legen Sie ein aktives Mandat (offen, gültig, mit verbleibenden Abbuchungen) für den Kunden an.
SEPA Direct Debit Mandate %1 referenced by the document does not existDie Mandatsreferenz am Beleg zeigt auf ein gelöschtes oder umbenanntes Mandat — wählen Sie ein gültiges Mandat aus.
SEPA Direct Debit Mandate %1 has no Customer Bank Account CodeÖffnen Sie das Mandat und tragen Sie sein Customer Bank Account Code ein.
Customer Bank Account … has no IBANTragen Sie die IBAN auf dem Kundenbankkonto ein.
Customer X has no bank account with an IBANLegen Sie ein Kundenbankkonto mit IBAN unter der Debitorenkarte an.
Company Bank Account %1 is blockedDas Firmenbankkonto am Beleg ist gesperrt — wählen Sie ein anderes Konto oder entsperren Sie es.
Bank Account %1 has no Creditor No. setTragen Sie Creditor No. auf der Firmenbankkonto-Karte ein (die SEPA-Gläubiger-ID, typischerweise DE…).
No company Bank Account with a Creditor No. could be foundMindestens ein Firmenbankkonto muss die SEPA-Gläubiger-Nr. tragen — üblicherweise das mit Use as Default for Currency markierte Konto.

Technische Referenz

Der Klassifikator ist die öffentliche Prozedur SetPaymentMeansFlags auf der Puffer-Tabelle mseBC mseDoc365 S. Inv.Buffer (Tabelle 5563231). Sie schreibt fünf Pufferfelder, die von den Schemazeilen gelesen werden:

Feld-Nr.FeldnameRolle
30Is Credit TransferBoolean-Gate für die BG-17-Erzeugung (CII + UBL)
31Is Direct DebitBoolean-Gate für die BG-19-Erzeugung (CII + UBL) sowie für die BT-90-Hülle in UBL
32Direct Debit Mandate IDBT-89
33Bank Assigned Creditor IDBT-90
34Debtor IBANBT-91

Die Schemazeilen der getrennten Gruppen tragen Data Type = TypeBoolean, Source Table No. = 5563231 und Check to Process or Ignore = Ja. Siehe XML Schema Line, wie dieses Flag die Unterdrückung des Unterbaums steuert.

Anpassung kundenseitig

Da SetPaymentMeansFlags innerhalb von CreateBuffer vor OnAfterCreateBuffer ausgeführt wird, können Erweiterungen die fünf Pufferfelder in ihrem OnAfterCreateBuffer-Abonnenten lesen oder überschreiben, wenn ein Sonderfall andere Daten benötigt.

Um die Schemazeilen selbst anzupassen, setzen Sie Locked = Ja auf den BG-17- / BG-19- / BT-89- / BT-90- / BT-91-Zeilen in der Seite "XML Schema Lines". Ihre Anpassungen bleiben dann über Schema-Refreshes vom Standard erhalten — Details im Abschnitt Locking auf der XML-Schema-Line-Seite.