E-Mail Konfiguration
Eingang
Ausgang
Google Workspace Verbindung (Gmail API)
Mail-Eingang Filter
Bestimmt, welche Mails beim Polling persistiert werden. Solange der Filter deaktiviert ist, landen alle empfangenen Mails in der DB (Test-Modus). Aktiviere ihn, sobald nur noch echte Carano/Fleet-Hub-Abrechnungen verarbeitet werden sollen.
Google OAuth (Mailbox-Login)
Wird unter /mailboxes beim Verbinden eines Postfachs via „Mit Google verbinden" verwendet.
Werte stammen aus der Google Cloud Console → OAuth 2.0 Client (Web Application).
Authorized Redirect URIs müssen http://xrechnung.forms.fleethub.de/api/auth/google/callback enthalten.
Fallback-Konfiguration
System-Informationen
| Version | 2.0.0 |
| Umgebung | - |
| Datenbank | - |
| Redis | - |
| Celery Worker | - |
Admin-Mail-Empfaenger
Empfaenger fuer interne System-/Fehler-Mails (Auto-Generation-Fehler, fehlende ER-PDFs,
SFTP-Probleme, keine_regulierung-Followup-Report). Mehrere Adressen durch Semikolon
trennen. Default: oliver.engmann@fleethub.de.
Rechnungssteller (Fleet-Hub)
Stammdaten des Rechnungsstellers fuer ZUGFeRD/EN16931 (aktuell genutzt vom ATU-Format). Hinweis: Bei "nicht steuerbar"-Rechnungen (ATU, Kategorie O) wird die USt-ID NICHT ausgegeben (BR-O-02) - dort greift die Handelsregisternr (BT-30).
Automatische Bereinigung
Ausgangsrechnungen und generierte Dateien werden nach der konfigurierten Anzahl Tage automatisch geloescht.
Geplante Tasks
| Task | Zeitplan | Letzte Ausführung | Nächste Ausführung | Status |
|---|---|---|---|---|
|
E-Mail Abruf & Verarbeitung
fetch_and_process_invoices |
Jede volle Stunde |
- | - | Unbekannt |
|
Archiv-Bereinigung
cleanup_old_files |
Täglich 03:00 |
- | - | Aktiv |
Fleet-Hub / Carano API
Zugangsdaten fuer die Fleet-Hub/Carano REST API. Wird benoetigt fuer Eingangsrechnungs-PDFs und Fahrzeugdaten.
SFTP Server
SFTP-Server fuer die automatische Uebertragung. Werden in den Kundenstammdaten verknuepft.
Neuer SFTP Server
Aktivitätslog
| Zeit | Level | Nachricht |
|---|---|---|
| Logs werden geladen... | ||
D&M Fahrzeugliste
Sheet-Name beliebig (z. B. Fahrzeuge oder Tabelle).
Spalten werden über die Überschrift zugeordnet, Reihenfolge egal.
Pflicht: Kennzeichen, Vorsteuerabzug AT;
optional Kostenstelle 2, Kunden-Kennung (ID wird ignoriert).
Zeilen mit leerem Vorsteuerabzug AT werden ignoriert.
Kunden-Kennung darf BMD-spezifische Kennungen enthalten — fuer SAP gilt die
Whitelist PKW / LKW / sonstiges / umsatzbezogen;
abweichende Werte werden als leer importiert (Warnung) und fuehren beim
SAP-Verarbeitungslauf zum Abbruch + Mail an Oliver, falls das Kennzeichen vorkommt.
D&M SAP Kostenartenbaum
Excel-Sheet Tabelle1. Header in Zeile 2.
Spalten: Code | Kostenart_ID | Kostenart-Bezeichnung | Sachkonto PKW/LKW | Sachkonto sonstige KFZ | Sachkonto umsatzbezogene KFZ | Wording.
Trennzeilen ohne Kostenart_ID werden ignoriert.
D&M Steuerfrei-Allowlist gilt für BMD & SAP
Gemeinsame Positiv-Liste für BMD und SAP: nur diese Kostenarten
dürfen bei Carano-Code 3 steuerfrei gebucht werden. Eine
Kostenart mit Code 3, die hier nicht steht → Block
(Wäsche/Werkstatt/Reifen/Treibstoff können nie steuerfrei sein).
D&M BMD Steuersatz-Logik
Steuerbehandlung nach autoritativem Carano-Code:
0 %-Zeilen → RC NORMAL=Reverse Charge, 3=steuerfrei
(nur wenn Kostenart in der Allowlist, sonst Block);
>0 %-Zeilen → Land (AT=versteuert, Ausland=„ausländischer Bezug").
Bei Versatz CSV↔Carano (z. B. Storno) wird geblockt.
Allowlist: siehe Karte oben.
D&M BMD Fahrzeugliste-Quelle
Wie bei SAP, aber nur Vorsteuerabzug AT ist fuer BMD relevant. aus = immer die hochgeladene Liste. schatten = bucht weiter mit der Liste, vergleicht zusaetzlich live und meldet Abweichungen per Mail. aktiv = Liste >24h alt → live pro Kennzeichen (exakter Match); kein Treffer/API-Fehler → harter Block + Admin-Mail, kein stiller Fallback.
D&M BMD ER-Vollständigkeit
Prueft je Eingangsrechnung, ob der volle Carano-Betrag an den Kunden
weiterberechnet wurde — damit keine Position vergessen wird.
Der Abgleich laeuft ueber alle Ausgangsrechnungen, weil eine ER
regelmaessig auf mehrere AR verteilt wird (Nachtrag im Folgelauf).
aus = keine Pruefung.
schatten = nur Admin-Mail, kein Versand-Eingriff.
aktiv = fehlender Betrag → Versand blockiert.
Hinweis: erkannt wird eine teilweise
abgerechnete ER. Eine ER, die auf der Rechnung komplett fehlt, kann so
nicht auffallen (sie steht dann in keiner CSV-Zeile).
D&M SAP ER-Vollständigkeit
Identische Logik wie bei BMD, eigener Schalter (getrennt rollbar).
Soll-Betrag = Summe aller Carano-Datensätze zur ER-Nummer; der
Abgleich läuft über alle Ausgangsrechnungen des Mandanten.
aus = keine Prüfung.
schatten = nur Admin-Mail.
aktiv = fehlender Betrag → Versand blockiert.
Hinweis: Bis Juni 2026 war die SAP-Abwicklung
unsauber (Storno-Zyklen, Doppelerfassungen) — taucht in einer neuen Rechnung
eine ER aus dieser Zeit auf, blockt sie bewusst.
D&M SAP Steuersatz-Logik
Wie BMD, aber Ziel ist das SAP-MWSKZ. 0 %-Zeilen mit ER nach
Carano-Code: RC NORMAL = Reverse Charge
(PKW→IZ, LKW-EU→E7,
LKW-Drittland→E5); 3 = steuerfrei
→ inländischer 0 %-Code (PKW→T0,
LKW→V0; nur Allowlist, sonst Block).
>0 %-Zeilen + Management-Fee bleiben unverändert (Geo),
FZINS bleibt T0.
Allowlist: gemeinsame Karte oben (gilt für BMD & SAP).
D&M SAP Fahrzeugliste-Quelle
Alternative zum Excel-Upload: Vorsteuerabzug AT, Kostenstelle 2 und
Kunden-Kennung koennen live ueber GET /vehicle/extended/ bei
Carano abgefragt werden (exakter Kennzeichen-Match, kein Substring).
aus = immer die hochgeladene Liste
(heutiges Verhalten). schatten = bucht
weiter mit der Liste, vergleicht zusaetzlich live und meldet Abweichungen
per Mail — kein Versand-Einfluss. aktiv =
ist die Liste juenger als 24 Stunden, wird sie verwendet; sonst
live pro Kennzeichen abgefragt. Kennzeichen ohne exakten Live-Treffer oder
bei API-Fehler → harter Block + Admin-Mail (kein stiller Fallback auf
eine veraltete Liste).
OP-Liste Google Sheet
URL des Google-Sheets mit der OP-Liste. Wird automatisch beim Hochladen
einer neuen Zahlliste nachgeladen (via OAuth-Mailbox, bevorzugt
edi-import@fleethub.de). Berechtigung im Sheet: nur
Betrachter notwendig.
Abweichungs-Hinweis. Die OP-Liste wird immer vollstaendig neu
geladen. Weicht der neue Stand um mehr als den hier eingestellten Wert
vom bisherigen ab — gemessen an Zeilenzahl oder Summe —
erscheint ein Hinweis mit dem Delta in € und %, der aktiv
bestaetigt werden muss („Ja, ist ok“ oder Quelle pruefen und
neu laden). Grosse Spruenge sind zum Monatswechsel normal
(Zahlungseingaenge, DL-Ausgangsrechnungen); still durchlaufen soll aber
keiner — ein Refresh mit 735 statt 3.601 Positionen haette sonst
tausende Ausgangsrechnungen als bezahlt gelten lassen.
0 schaltet den Hinweis ab.
Budget-Reminder (Säule 2)
Mail an Kunden mit dem verfügbaren Budget. Versand an den unten gewählten Wochentagen zur konfigurierten Uhrzeit (Europe/Berlin). Gezeigt wird alles, was seit der letzten Mail passiert ist — also alle zwischenzeitlich ausgeführten Zahllisten; so steht jede Rechnung in genau einer Mail. Kunden ohne Bewegung bekommen die Mail ebenfalls, dann mit unverändertem Budget. Einzeln pro Kunde in Kundenübersicht aktivierbar. Das Budget ist dasselbe, nach dem der Budget-Check freigibt.
{datum}, {debitor_nr},
{geschaeftspartner}.
{datum}, {debitor_nr},
{geschaeftspartner},
{budget_vorher}, {rechnungen},
{gutschriften}, {verfuegbar},
{gesperrt},
{aufstellung} (fertiger Rechenweg),
{gesellschaften} (nur bei Sammelmail).
{verfuegbar} wird nie negativ ausgegeben;
bei negativem Budget greift die Variante „kein Budget“.
{aufstellung} zeigt
hier bewusst keinen Rechenweg — sonst stünde dort ein
negatives „Budget vorher“ über einer 0,00-Zeile.
Monatsbericht (Säule 2)
Eine zusammengefasste Monatsmail für Kunden, die statt
des Reminders oben einmal im Monat einen Überblick wollen: Budget,
die von uns bezahlten Rechnungen, die offenen Posten aus der OP-Liste
und die Akonto-Zahlungseingänge. Die vollständige Einzelaufstellung
der bezahlten Rechnungen geht als Excel-Datei mit.
Kunden, die hier stehen, bekommen den Reminder oben nicht
mehr — sonst läge bei ihnen zweimal Post mit verschiedenen
Zeiträumen. Jeder Bericht führt seinen eigenen Zeitraum: was hier
gemeldet wurde, ist unabhängig davon, was der Reminder gemeldet hat.
Zahllisten-Freigabe-Benachrichtigung
Empfaenger, die benachrichtigt werden, wenn eine Zahlliste final freigegeben (Status "Ausgefuehrt") wird. Mehrere Adressen durch Semikolon trennen. Falls leer: Fallback auf den Admin-Mail-Empfaenger (Tab "E-Mail Konfiguration").
Prueferkreis fuer das 4-Augen-Prinzip. Nimmt jemand eine Zahlliste in Verarbeitung, geht automatisch eine Freigabe-Aufforderung an die anderen aus diesem Kreis — der Startende steht in Kopie. Mehrere Adressen durch Semikolon trennen. Leer lassen heisst: alle aktiven Benutzer ausser dem Startenden.
Mandanten mit eigenem Bankkonto. Fuer diese Mandanten fuehrt
Fleet-Hub ein eigenes Konto — der Kunde ueberweist seine
Ausgangsrechnungen dorthin, und alle Zahlungen an seine Lieferanten
werden von dort gezogen. Die Freigabe-Mail ans SAP-Team nennt
dann, wie viel Geld der Lauf von diesem Konto zieht (freigegebene
Rechnungen abzueglich verrechneter Gutschriften).
Mehrere Kuerzel durch Komma trennen, leer = kein solcher Block.
Es zaehlt der ganze Mandant: bei PKE also
PKE Deutschland und Sysdacom — eine neue
Schwestergesellschaft kommt automatisch mit.
ATU — Kostenstellen-Vermerk
Fehlt in einer Carano-Zeile die Kostenstelle, bricht die Verarbeitung
normalerweise ab. Steht dieser Schalter auf an, wird stattdessen ein
Vermerk in das Kostenstellen-Feld geschrieben und die Rechnung läuft durch.
Gemessen an den Rechnungen Mai–September 2026 blockieren ohne den
Vermerk 33 von 52 Rechnungen.
aus stellen — dann greift
wieder der harte Abbruch. Gilt für beide ATU-Formate (ZUGFeRD und VK-CSV).
Säule 5 — QM-Reports im Überblick
Jeder QM-Report hat einen eigenen Aktiv-Schalter und einen eigenen Verteiler. Ist kein Verteiler eingetragen, geht die Mail an den Admin-Mail-Empfänger (Reiter „System"). Die Einstellungen je Report stehen in den Karten darunter.
| Report | Status | Zeitplan | Mail geht an |
|---|---|---|---|
| Lade … | |||
D&M-Dokumenteprüfung — Rechnungsempfänger (Carano vs. PDF)
Tägliche QM-Kontrolle: Gleicht den in Carano erfassten Rechnungsempfänger gegen die Firmierung auf dem Lieferanten-PDF (per OCR) ab. Niedrige Ähnlichkeit = mögliche Falschablage/-erfassung → landet als Verdachtsfall in der Tages-Mail und unter D&M-Dokumenteprüfung zur Sichtung. Der Lauf ist rein lesend und rührt keine bestehende Verarbeitung an.
ATU Fuhrpark — Stammdaten (Fahrzeuge und Fahrer)
Täglicher Abgleich der fleet+-Stammdaten gegen fünf Pflegevorgaben: Kostenstelle am Fahrzeug, Nutzer am Fahrzeug, Fahrer im richtigen Mandanten, Personalnummer und Mail-Domain beim Fahrer. Offene Punkte stehen als Aufgabenliste in der Mail und unter ATU Fuhrpark. Der Lauf ist rein lesend und ändert nichts in fleet+.
= davor exakter Vergleich: =lkw trifft „LKW", aber nicht „LKW bis 3,5to".=muster = exakt). Gilt nur für die Vertragsprüfung; die Ausnahmen oben (Bruttolistenpreis/Beschaffungsart) heben die Vertragspflicht nicht auf.ATU HR Versteuerung — Firmenwagen-Meldung an ATU HR
Monatlich: am Probelauftag geht die Meldung mit allen Pflegehinweisen an den internen Verteiler (Zeit zum Nachpflegen in Carano), am Meldetag an ATU HR. Gemeldet werden alle Fahrzeugwechsel seit der letzten Meldung und die Abweichungen zum HR-Stand. Importe, Läufe und Lieferungen unter ATU HR Versteuerung.
Verarbeitung der Carano-Rechnungsdateien nach SAP. Jeder Schalter gilt je Eingangssystem getrennt. aus = Regel läuft nicht. schatten = Regel läuft und meldet, hält aber nichts auf. aktiv = Regel greift.
Testlauf per Upload
Testlauf: nichts gespeichert · Produktiv: gespeichert und abgelegt · Ergebnis als ZIP
Schickt hochgeladene invoice_*- und contract_*-Dateien durch die
komplette Kette — Struktur, Dublette, Modifikationen, Fachprüfung — für das oben
gewählte Quellsystem. Testlauf: ohne SFTP, ohne Eintrag in Belege, Positionen oder
Vertragszuordnung; hochgeladene contract-Dateien gelten für diesen Lauf; protokolliert wird nur
die Laufzeile, dieselbe Datei darf beliebig oft durchlaufen. Produktiv verarbeiten: speichert
wie ein SFTP-Lauf (Belege, Positionen, Befunde, Vertragsimport, Dublettensperre) und legt im Modus
aktiv das Original ins Remote-Archiv und das Ergebnis nach Ausgang bzw. Fehler; die
Schalter gelten wie gespeichert. In beiden Fällen kommt ein ZIP zurück: Ausgabedateien (so, wie
sie ins SAP gehen), Laufbericht, Befunde und Änderungen der Modifikationen als CSV.
Läufe und Befunde
Die letzten 20 Läufe aller Richtungen (SFTP-Eingang, produktiver Upload, Testlauf). „Befunde" zeigt die gespeicherten Befunde eines Laufs; Testläufe speichern keine.
SAP-Übertrag
Dateien, die FleetFlow im Ausgang (SAP-Übertrag) abgelegt hat. Solange die Kopie an SAP aus ist, überträgst du sie von Hand und hakst sie hier ab. „Datei" lädt genau die Fassung, die abgelegt wurde.
Grundeinstellungen
/Eingangsrechnungen; /AusgangsrechnungenER_AR_Liste_*.csv. „Aus FleetIQ
abrufen“ auf Neue Zahlliste holt daraus die jüngste Datei. Leer = /Zeitplan und Alarm
Aus den Echtdaten gemessen: Carano stellt um 10:00, 14:00 und 23:00 bereit. Eine Bereitstellung dauert im Median 1 Minute, im schlechtesten gemessenen Fall 21 Minuten — der Versatz von 30 Minuten liegt sicher dahinter.
/api/ferk/tagesreport).
/api/ferk/watchdog).
Werte der Prüfungen und Modifikationen
Prüfungen
Modifikationen
Zahlungsziel je Kunde und Lieferant (M4)
Im SAP hängt die Zahlungsbedingung am Lieferanten und gilt damit für alle
Kunden gleich. Hat ein Kunde bei einem Lieferanten aber 30 Tage ausgehandelt,
während das SAP nach 7 Tagen zahlt, finanzieren wir ihn 23 Tage lang.
Hier steht die abweichende Vereinbarung; M4 schreibt den Code in den Beleg.
Als Kundennummer * eintragen heißt: gilt für alle Kunden dieses
Lieferanten. Eine kundenspezifische Zeile gewinnt gegen die Sternzeile.
Der Code hat genau vier Zeichen — das Feld
im SAP-Satz ist nicht breiter (Position 388–391). Gültig sind etwa
Z001, Z014, Z055.
| Kunde | Lieferant | Code | Tage | Bemerkung |
|---|
SAP-Stammdaten (P10–P13)
Kreditoren, Debitoren, PSP-Elemente und Artikelnummern der gewählten Umgebung. Erkannt werden CSV, Semikolon-Listen und spaltenausgerichtete SAP-Exporte. Zeilen ohne verwertbaren Schlüssel werden übersprungen und gezählt.
Mandantengruppen — welche Mandanten P8 als einen behandelt
P8 hält einen Beleg auf, der Debitoren verschiedener Mandanten
trifft. Manche Unternehmen sind aber bewusst als mehrere Mandanten geführt
— Vossloh etwa als VOS, VFS, VRI, VRS und VR, weil jede Gesellschaft
ein eigenes Layout für die Ausgangsrechnungen wollte.
Eingangsrechnungen laufen jedoch übergreifend über alle fünf.
Wer hier zusammensteht, gilt für P8 als ein Mandant. Am Bestand gemessen:
ohne Gruppen blockiert P8 44 Belege, mit den beiden hinterlegten
Gruppen 28 — die 16 Vossloh-übergreifenden gehen zu Recht durch.
Die Gruppe wirkt beim Prüfen, nicht beim Import: in der
Vertragszuordnung steht weiterhin der echte Mandant, eine Änderung greift
sofort ohne Neuimport.
| Gruppe | Mandant | Verträge | Bemerkung |
|---|
Vertragszuordnung aus contract_*.txt (P8, M3, M4)
Die Rechnungspositionen tragen nur die Carano-Vertrags-ID. Welcher Kunde
und welcher Mandant dahintersteht, sagt erst diese Zuordnung — und
ohne sie kann P8 („alle Debitoren eines Belegs gehören einem
Mandanten") nichts prüfen.
Der Mandant kommt nicht aus der Datei, sondern über die
Debitorennummer aus der Kundenübersicht. Fehlt ein Kunde dort,
bleibt der Mandant leer und P8 lässt dessen Belege ungeprüft durch —
lieber keine Prüfung als eine auf halber Datenlage.
Die Lieferungen sind Deltas, kein
Vollbestand: die 192 bekannten Dateien decken 10,5 % der in
Rechnungen referenzierten Verträge ab. Für den Vollbestand die Quelle
Initial-Load wählen. Im laufenden Betrieb holt der
Verarbeitungslauf die Dateien selbst vom SFTP.
VertragsID Stamm.xlsx
| Vertrags-ID | Vertragsnummer | Debitor | Mandant | Laufzeit | Quelle |
|---|
FleetFlow-Zugänge anlegen, Rolle vergeben, deaktivieren. Neue Accounts
bekommen ein Master-Passwort und müssen beim ersten Login ein eigenes setzen.
Admin: alles inkl. Benutzerverwaltung ·
Freigabe: alles außer Benutzerverwaltung ·
Viewer: nur ansehen – jede Änderung lehnt der Server ab.
Eine Rollenänderung wirkt sofort, ohne neuen Login.
| Name | Rolle | Status | Angelegt | Aktion | |
|---|---|---|---|---|---|