Du betrachtest gerade Automatisierung von Zahlungsprozessen: Zoho Books und ProfiCash integrieren

Automatisierung von Zahlungsprozessen: Zoho Books und ProfiCash integrieren

  • Beitrags-Autor:

Zahlungsläufe automatisieren: Zoho Books mit ProfiCash & Co. verbinden

Stell Dir vor, Du könntest den Prozess der Lieferantenzahlungen erheblich beschleunigen und gleichzeitig die Fehlerquote drastisch reduzieren. Viele Unternehmen, die Zoho Books für ihre Buchhaltung nutzen, stehen vor der Herausforderung, Zahlungsdaten manuell in separate Banking-Tools wie ProfiCash, SFirm, StarMoney oder Online-Banking-Portale zu übertragen. Das kostet nicht nur Zeit, sondern ist auch anfällig für Tippfehler bei IBANs oder Beträgen. Dieser Artikel zeigt Dir, wie Du durch geschickte Nutzung von Zoho Books-Funktionen und APIs einen teilautomatisierten Workflow aufbaust, um Zahlungsdaten effizient und sicher zu exportieren.

Wir konzentrieren uns darauf, wie Du Zoho Books so konfigurierst, dass Du Zahlungsvorschlagslisten für verschiedene Zahlungsmethoden oder Verantwortliche generieren und diese in einem Format exportieren kannst, das Deine Banking-Software versteht. Das Ziel: Kein manuelles Abtippen von Rechnungsdaten mehr für Standard-Überweisungen.

Die Herausforderung: Manuelle Datenübertragung zwischen Buchhaltung und Banking

In vielen kleinen und mittleren Unternehmen (KMU) sieht der Prozess oft so aus: Rechnungen gehen ein, werden in Zoho Books erfasst und zur Zahlung fällig gestellt. Die Buchhaltung (oder eine dedizierte Person) loggt sich dann separat in die Banking-Software (nehmen wir als Beispiel hier ProfiCash, aber das Prinzip gilt auch für andere wie SFirm, StarMoney oder Banking-Portale der Volksbanken, Sparkassen etc.) ein und tippt die Zahlungsdaten – Empfänger, IBAN, BIC, Betrag, Verwendungszweck – manuell ab. Manchmal sind sogar mehrere Personen für unterschiedliche Zahlungsarten zuständig (z.B. eine Person für Lieferanten, eine andere für Reisekosten).

Dieser manuelle Schritt ist nicht nur zeitaufwendig, sondern birgt auch Risiken:

  • Fehler bei der Eingabe: Zahlendreher in der IBAN oder im Betrag können zu fehlgeschlagenen oder falschen Zahlungen führen.
  • Doppelzahlungen: Ohne klaren Abgleich zwischen Zoho Books und der Banking-Software können Rechnungen versehentlich doppelt bezahlt werden.
  • Ineffizienz: Der Zeitaufwand für das manuelle Übertragen von Daten summiert sich erheblich.
  • Mangelnde Transparenz: Es ist oft unklar, welche Rechnungen bereits im Banking-Tool erfasst, aber noch nicht ausgeführt wurden.

Die ideale Lösung wäre eine direkte Integration, aber die ist nicht immer verfügbar oder gewünscht. Ein pragmatischer und oft schnell umsetzbarer Weg ist der Export von Zahlungsdaten aus Zoho Books und der Import in die Banking-Software.

Schritt-für-Schritt: Vom Zoho Books-Filter zum ProfiCash-Import

Lass uns einen konkreten Workflow entwickeln, um Zahlungsdaten aus Zoho Books für den Import in ProfiCash (oder eine ähnliche Software) vorzubereiten. Wir nutzen dafür Bordmittel von Zoho Books wie benutzerdefinierte Felder und Ansichten sowie eine kleine Prise Deluge (Zoho’s Scripting-Sprache) für den Export.

Schritt 1: Analyse des Zielsystems (z.B. ProfiCash)

Bevor Du beginnst, musst Du wissen, welches Dateiformat Deine Banking-Software für den Import von Sammelüberweisungen oder allgemeinen Zahlungsaufträgen benötigt. Viele deutsche Banking-Programme wie ProfiCash oder SFirm unterstützen den Import von Zahlungsdateien im SEPA XML-Format (pain.001.001.03 oder neuere Versionen). Kläre das ab:

  • Prüfe die Dokumentation Deiner Banking-Software.
  • Suche nach Menüpunkten wie „Datentransfer“, „Import“, „Zahlungsaufträge importieren“.
  • Kontaktiere ggf. den Support Deiner Bank oder des Softwareherstellers.

Für unser Beispiel gehen wir davon aus, dass ProfiCash SEPA XML-Dateien importieren kann.

Schritt 2: Das „Zahlungsart“-Feld in Zoho Books anlegen

Das Herzstück unserer Lösung ist ein benutzerdefiniertes Feld in den Lieferantenrechnungen (Vendor Bills) in Zoho Books. Dieses Feld hilft uns, Rechnungen zu kategorisieren und gezielt für den Export zu filtern.

Gehe in Zoho Books zu Einstellungen > Anpassung > Lieferantenrechnungen > Felder > + Neues benutzerdefiniertes Feld.

  • Bezeichnung: Zahlungsart
  • Datentyp: Auswahlliste
  • Optionen (Beispiele, passe sie an Deine Bedürfnisse an):
    • SEPA Überweisung [Verantwortlicher A / Abteilung X]
    • SEPA Überweisung [Verantwortlicher B / Abteilung Y]
    • Lastschrift
    • Kreditkarte
    • PayPal
    • Manuelle Zahlung (für Ausnahmen)
  • Setze das Feld ggf. als Pflichtfeld, um sicherzustellen, dass es immer ausgefüllt wird.

Warum ist das wichtig? Mit diesem Feld legst Du bei der Erfassung der Rechnung fest, WIE und DURCH WEN sie bezahlt werden soll. Rechnungen, die per Lastschrift oder Kreditkarte bezahlt werden, müssen nicht exportiert werden. Rechnungen, die Person A bezahlen soll, können separat von denen für Person B exportiert werden.

Schritt 3: Benutzerdefinierte Ansicht(en) erstellen

Nun erstellst Du in Zoho Books eine oder mehrere Ansichten, die Dir genau die Rechnungen anzeigen, die für den nächsten Zahlungslauf relevant sind.

Gehe zu Einkäufe > Lieferantenrechnungen. Klicke auf den Dropdown-Pfeil neben „Alle Lieferantenrechnungen“ und wähle + Neue benutzerdefinierte Ansicht.

  • Name der Ansicht: z.B. „Zahlungslauf SEPA [Verantwortlicher A]“
  • Kriterien definieren:
    • ZahlungsartistSEPA Überweisung [Verantwortlicher A]
    • UND
    • Statusist nichtBezahlt (oder spezifischer: Überfällig, Offen)
    • Optional: Füge weitere Kriterien hinzu, z.B. Fälligkeitsdatum.
  • Spalten zum Anzeigen auswählen: Wähle alle Spalten aus, die Du für den Export benötigst (Lieferantenname, Rechnungsnummer, Fälligkeitsdatum, Offener Betrag, IBAN des Lieferanten, BIC des Lieferanten etc.). Stelle sicher, dass IBAN und BIC in den Stammdaten des Lieferanten gepflegt sind!
  • Speichere die Ansicht.

Wiederhole dies für andere Zahlungsarten oder Verantwortliche, falls nötig (z.B. „Zahlungslauf SEPA [Verantwortlicher B]“).

Schritt 4: Die Export-Funktion (Deluge Custom Function)

Jetzt kommt der technische Teil. Wir erstellen eine Custom Function in Zoho Books, die die Daten aus der gefilterten Ansicht abruft und in einem (vorerst einfachen) Format aufbereitet. Später kann diese Funktion erweitert werden, um das spezifische Zielformat (z.B. SEPA XML) zu erzeugen.

Gehe zu Einstellungen > Automatisierung > Benutzerdefinierte Funktionen > + Neue benutzerdefinierte Funktion.

  • Funktionsname: z.B. exportZahlungslaufSEPA_A
  • Modul: Lieferantenrechnungen
  • Beschreibung: Exportiert offene Rechnungen für Zahlungslauf A
  • Deluge-Skript:
// Deluge Script zum Abrufen von Rechnungsdaten für einen spezifischen Zahlungslauf
// HINWEIS: Dieses Skript ruft Daten ab, erzeugt aber noch KEINE fertige SEPA XML-Datei.
//          Die Umwandlung in XML ist ein komplexerer Schritt.

// ID der benutzerdefinierten Ansicht abrufen (oder Kriterien direkt hier definieren)
// Am einfachsten: Filtere die Kriterien direkt im Code
// Ersetze 'Deine_Zahlungsart_Option_A' mit dem exakten Wert aus der Auswahlliste
zahlungsartKriterium = "SEPA Überweisung [Verantwortlicher A]";
organizationId = zoho.books.organization.get().get("organization_id");

// Kriterien für die Suche definieren
// Wir suchen offene Rechnungen mit der spezifischen Zahlungsart
searchCriteria = Map();
searchCriteria.put("status", "unpaid"); // oder spezifischere Status wie 'open', 'overdue'
// Wichtig: Verwende den API-Namen des benutzerdefinierten Feldes!
// Den findest Du in Einstellungen > Anpassung > Lieferantenrechnungen > Felder
// Er lautet oft 'cf_zahlungsart' oder ähnlich. Passe dies an!
searchCriteria.put("cf_zahlungsart", zahlungsartKriterium); 

// Rechnungen abrufen
try {
    // Parameter für den API-Aufruf vorbereiten
    params = Map();
    params.put("organization_id", organizationId);
    params.put("search_criteria", searchCriteria);
    
    // Zoho Books API aufrufen, um Lieferantenrechnungen abzurufen
    // Hinweis: 'vendorbills' ist der API-Endpunkt für Lieferantenrechnungen
    response = zoho.books.getRecords("vendorbills", params);
    
    billList = List();
    if (response.get("code") == 0 && response.get("bills") != null) {
        for each bill in response.get("bills")) {
            billData = Map();
            billData.put("Rechnungsnummer", bill.get("bill_number"));
            billData.put("Lieferant", bill.get("vendor_name"));
            billData.put("Faelligkeitsdatum", bill.get("due_date"));
            billData.put("OffenerBetrag", bill.get("balance"));
            
            // Lieferanten-ID holen, um Bankdaten abzurufen
            vendorId = bill.get("vendor_id");
            vendorDetails = zoho.books.getRecordById("vendors", organizationId, vendorId);
            
            // Bankdaten des Lieferanten holen (falls vorhanden)
            // Achtung: IBAN/BIC müssen im Lieferantenstammsatz hinterlegt sein!
            // Die genauen Feldnamen können variieren, ggf. anpassen.
            // Oft sind Bankdaten in einem Sub-Formular oder ähnlichem. Prüfe Deine Struktur!
            // Beispielannahme: Felder heissen 'iban' und 'bic' direkt im Vendor-Modul
            // In der Realität ist es oft komplexer (z.B. via vendorDetails.get("payment_details") etc.)
            billData.put("IBAN", vendorDetails.get("vendor").get("cf_iban")); // Beispiel: Benutzerdefiniertes Feld IBAN
            billData.put("BIC", vendorDetails.get("vendor").get("cf_bic"));   // Beispiel: Benutzerdefiniertes Feld BIC
            
            billList.add(billData);
        }
        // Ausgabe (z.B. als formatierter String oder Vorbereitung für XML)
        info "Anzahl Rechnungen gefunden: " + billList.size();
        info billList; // Zeigt die gesammelten Daten im Debug-Log an
        
        // NÄCHSTER SCHRITT: Diese 'billList' in das SEPA XML Format umwandeln.
        // Dies erfordert spezifische XML-Strukturierung und ist hier nicht dargestellt.
        // Du könntest hier Deluge-String-Manipulation verwenden oder eine externe API/Webhook aufrufen.
        
        // Beispiel: Rückgabe als JSON (einfacher als XML in Deluge)
        return billList.toString(); 
        
    } else {
        info "Keine Rechnungen gefunden oder Fehler: " + response;
        return "Fehler beim Abrufen der Rechnungen.";
    }
} catch (e) {
    info "Exception aufgetreten: " + e;
    return "Exception: " + e;
}

Wichtige Hinweise zum Skript:

  • Passe den Wert für zahlungsartKriterium exakt an Deine Option an.
  • Finde den korrekten API-Namen Deines benutzerdefinierten Feldes („Zahlungsart“) heraus und ersetze cf_zahlungsart im Skript. Du findest den API-Namen in den Feld-Einstellungen.
  • Stelle sicher, dass die IBAN und BIC in den Lieferantenstammdaten korrekt hinterlegt sind. Passe die Zeilen vendorDetails.get("vendor").get("cf_iban") und vendorDetails.get("vendor").get("cf_bic") an die tatsächlichen Feldnamen in Deinem Zoho Books Setup an. Es könnten Standardfelder oder weitere benutzerdefinierte Felder sein.
  • Dieses Skript ruft die Daten nur ab und gibt sie als Liste aus (oder als JSON-String). Die eigentliche Konvertierung in ein SEPA XML-Format ist ein komplexerer Schritt, der spezifische Kenntnisse des Formats erfordert. Du könntest:
    • Den XML-String mühsam in Deluge zusammenbauen (nur für sehr einfache Fälle empfohlen).
    • Einen Webhook an einen externen Dienst (z.B. eine kleine Funktion in AWS Lambda, Google Cloud Functions oder Deinem eigenen Server mit PHP oder Node.js) senden, der die Daten empfängt und die XML-Datei generiert.
    • Prüfen, ob Zoho Flow oder Zoho Creator hier unterstützen können, um die Transformation zu erleichtern.

Schritt 5: Die Export-Funktion ausführen (z.B. per Button)

Damit Du die Funktion einfach ausführen kannst, erstelle einen Button in der zuvor erstellten benutzerdefinierten Ansicht.

  • Gehe zu Einstellungen > Automatisierung > Schaltflächen > + Neue Schaltfläche.
  • Modul: Lieferantenrechnungen
  • Name der Schaltfläche: z.B. „Zahlungslauf A exportieren“
  • Ansicht wählen: Wähle die Listenansicht (Deine benutzerdefinierte Ansicht).
  • Aktion: Wähle „Aus vorhandenen Aktionen“ und Deine erstellte Custom Function (z.B. exportZahlungslaufSEPA_A).
  • Speichere die Schaltfläche.

Wenn Du nun Deine benutzerdefinierte Ansicht öffnest und die gewünschten Rechnungen auswählst (oder auch ohne Auswahl, wenn die Funktion alle in der Ansicht filtert), erscheint der Button. Ein Klick führt das Deluge-Skript aus.

Momentan gibt das Skript die Daten nur im Debug-Log aus oder als einfachen String zurück. Um eine Datei herunterzuladen, müsstest Du das Skript erweitern, z.B. indem es die Daten an eine Creator-App oder einen externen Service sendet, der dann den Download anbietet.

Schritt 6: Generierte Datei in ProfiCash importieren

Sobald Du eine Funktion hast, die eine valide SEPA XML-Datei (oder das benötigte Format) erzeugt und zum Download anbietet, ist der nächste Schritt der Import:

  • Speichere die generierte Exportdatei auf Deinem Rechner.
  • Öffne ProfiCash (oder Deine Banking-Software).
  • Navigiere zur Import-Funktion (z.B. unter „Zahlungsverkehr“ > „Datentransfer“ > „Import“).
  • Wähle die gespeicherte Datei aus und folge den Anweisungen der Software zum Import der Zahlungsaufträge.
  • Prüfe die importierten Zahlungen sorgfältig, bevor Du sie zur Ausführung freigibst!

Schritt 7: Status in Zoho Books aktualisieren (Die Krux ohne Bank-Feed)

Nachdem die Zahlungen über ProfiCash ausgeführt wurden, müssen die Rechnungen in Zoho Books als „bezahlt“ markiert werden. Hier liegt oft eine Herausforderung, besonders wenn die automatischen Bank-Feeds in Zoho Books nicht zuverlässig funktionieren (wie im Inspirations-Dokument erwähnt).

  • Idealfall (mit funktionierenden Bank-Feeds): Sobald die Zahlungen auf Deinem Bankkonto verbucht sind, erscheinen sie im Bankabgleich von Zoho Books. Du kannst sie dann den entsprechenden offenen Rechnungen zuordnen, wodurch diese automatisch auf „bezahlt“ gesetzt werden. Dies ist die sauberste Methode!
  • Manuelle Markierung: Du musst die bezahlten Rechnungen in Zoho Books manuell als „bezahlt“ markieren. Das ist fehleranfällig und untergräbt einen Teil der Automatisierung.
  • Import aus ProfiCash? Prüfe, ob ProfiCash einen Export oder ein Protokoll der ausgeführten Zahlungen bereitstellt (z.B. als CSV oder CAMT-Datei). Eventuell könntest Du diese Datei nutzen, um über einen weiteren Import oder ein Skript die Rechnungen in Zoho Books zu aktualisieren. Dies erfordert aber eine eindeutige Referenz (z.B. Rechnungsnummer im Verwendungszweck).
  • Status-Update per Deluge/API: Theoretisch könntest Du eine weitere Custom Function schreiben, die den Status einer Rechnung über die Zoho Books API aktualisiert. Der Trigger dafür ist aber schwierig, wenn kein Exportprotokoll aus ProfiCash verfügbar ist.

Ein konzeptionelles Deluge-Snippet zum Aktualisieren einer Rechnung (benötigt die Rechnungs-ID):

// Konzept: Status einer Rechnung aktualisieren (Trigger unklar)
billId = 1234567890123456789; // Die ID der zu aktualisierenden Rechnung
organizationId = zoho.books.organization.get().get("organization_id");

updateData = Map();
// Achtung: Direkte Statusänderung ist oft nicht der Weg.
// Stattdessen wird eine Zahlung hinzugefügt.
paymentInfo = Map();
paymentInfo.put("vendor_id", vendorId); // Benötigt Vendor ID
paymentInfo.put("payment_mode", "Bank Transfer"); // Beispiel
paymentInfo.put("amount", amountPaid); // Benötigt bezahlten Betrag
paymentInfo.put("date", zoho.currentdate); // Zahlungsdatum
paymentInfo.put("bank_charges", 0); 
paymentInfo.put("bills", {{"bill_id": billId, "amount_applied": amountPaid}});

// API aufrufen, um die Zahlung zu erfassen
// Dies markiert die Rechnung (oder Teile davon) als bezahlt
response = zoho.books.createRecord("vendorpayments", organizationId, paymentInfo);
info response;

Wichtig: Die zuverlässige Statusaktualisierung ist kritisch, um Doppelzahlungen zu vermeiden. Priorisiere die Reparatur der Bank-Feeds!

Tipps und Best Practices

  • Datenqualität ist entscheidend: Pflege Lieferantenstammdaten inklusive IBAN und BIC sorgfältig. Schulen die Nutzer, das Feld „Zahlungsart“ konsequent und korrekt auszufüllen.
  • XML/SEPA-Generierung: Die Erstellung einer validen SEPA XML-Datei ist der komplexeste Teil. Wenn Du hier nicht weiterkommst, ziehe externe Hilfe (wie den im Dokument genannten Freelancer Gregor Sprint) oder spezialisierte Tools/Services in Betracht. Es gibt Bibliotheken für Sprachen wie PHP, Python oder Node.js, die SEPA XML generieren können.
  • Teste gründlich: Führe den Export/Import-Prozess zunächst mit Testdaten oder einer kleinen Anzahl echter Rechnungen durch. Überprüfe die importierten Daten in ProfiCash akribisch, bevor Du Zahlungen freigibst.
  • Vermeide Doppelzahlungen: Definiere einen klaren Prozess, wann Rechnungen exportiert werden und wie der Status in Zoho Books aktualisiert wird. Kommuniziere diesen Prozess an alle Beteiligten (wie die erwähnte Sabrina und ihren Kollegen Waldemar). Solange die Bank-Feeds nicht laufen, ist besondere Vorsicht geboten.
  • Kommunikation im Team: Wenn mehrere Personen (wie Sabrina und Waldemar) Zahlungen ausführen, stelle sicher, dass beide den neuen Prozess verstehen und anwenden. Die Filterung nach „Zahlungsart“ hilft hier, die Zuständigkeiten klar zu trennen.
  • Skalierbarkeit: Die Lösung mit Custom Fields und Views ist gut skalierbar. Bei sehr hohem Volumen oder komplexen Anforderungen an die XML-Generierung könnte eine robustere externe Lösung (z.B. über eine Middleware oder eine dedizierte App in Zoho Creator) sinnvoll sein.
  • Nutze Zoho Flow: Für komplexere Workflows, die z.B. Benachrichtigungen (via Slack, E-Mail) oder die Anbindung weiterer Systeme erfordern, kann Zoho Flow eine wertvolle Ergänzung sein. Du könntest z.B. einen Flow erstellen, der auf die erfolgreiche Ausführung der Custom Function reagiert.
  • Reporting mit Zoho Analytics: Verbinde Zoho Books mit Zoho Analytics, um Auswertungen über Zahlungszyklen, durchschnittliche Zahlungsziele oder die Nutzung verschiedener Zahlungsarten zu erstellen.

Zusätzliche Möglichkeiten und Integrationen

Neben der Anbindung an klassische Banking-Software wie ProfiCash gibt es weitere interessante Wege:

  • Direkte PSD2-API-Anbindung: Moderne Banken bieten über PSD2-Schnittstellen direkte APIs an. Eine Integration über diese APIs (z.B. mit Klarna Open Banking, finAPI oder bankenspezifischen APIs) könnte eine noch tiefere Automatisierung ermöglichen, ist aber technisch anspruchsvoller in der Umsetzung.
  • Payment Service Provider (PSPs): Dienste wie Stripe Connect oder PayPal Payouts bieten APIs für Massenauszahlungen, die sich potenziell ebenfalls aus Zoho Books heraus ansteuern lassen.
  • Individuallösung mit Zoho Creator: Für sehr spezifische Anforderungen könntest Du eine eigene kleine App mit Zoho Creator bauen, die als Middleware zwischen Zoho Books und der Banking-API oder dem Dateiformat fungiert.

Fazit: Mehr Effizienz durch smarte Nutzung von Zoho Books

Die manuelle Übertragung von Zahlungsdaten aus Zoho Books in Banking-Software ist ein vermeidbarer Zeitfresser und eine Fehlerquelle. Durch die strategische Nutzung von benutzerdefinierten Feldern, benutzerdefinierten Ansichten und Deluge Custom Functions kannst Du einen teilautomatisierten Export-Prozess schaffen, der Dir viel Arbeit abnimmt.

Auch wenn die Erstellung der finalen Exportdatei (insbesondere SEPA XML) eine Herausforderung sein kann, ist der Nutzen – Zeitersparnis, Fehlerreduktion und bessere Kontrolle über Deine Zahlungsprozesse – erheblich. Dieser Ansatz zeigt exemplarisch, wie Du durch das clevere Kombinieren von Zoho-Funktionen und die Anbindung an externe Systeme Deine Geschäftsprozesse optimieren kannst. Beginne klein, teste sorgfältig und baue Deine Automatisierung schrittweise aus!