Automatisierte KYC-Prozesse: Wirtschaftlich Berechtigte in Zoho CRM per API ermitteln
Wenn Du im Finanzsektor, als Zahlungsdienstleister oder in einer anderen Branche tätig bist, die strengen regulatorischen Anforderungen unterliegt, kennst Du die Herausforderung: die Ermittlung der wirtschaftlich Berechtigten (Ultimate Beneficial Owners, UBOs). Dieser Prozess ist nicht nur gesetzlich vorgeschrieben (Stichwort Geldwäschegesetz, GwG), sondern oft auch ein manueller, zeitaufwendiger und fehleranfälliger Albtraum – insbesondere bei komplexen, international verschachtelten Firmenstrukturen. In diesem Artikel zeige ich Dir, wie Du diesen KYC-Prozess (Know Your Customer) direkt in Zoho CRM automatisieren kannst, indem Du die Stärken von Zoho mit externen APIs wie OpenCorporates kombinierst.
Die Herausforderung aus der Praxis: Wer steckt wirklich hinter der Fassade?
Stell Dir ein typisches Szenario vor: Ein neuer B2B-Kunde möchte Eure Dienstleistungen nutzen. Der Kunde ist eine GmbH. Ein Blick ins Handelsregister zeigt, dass die Gesellschafter nicht nur zwei Privatpersonen sind, sondern auch eine weitere Holding-GmbH. Um die wahren wirtschaftlich Berechtigten zu finden, musst Du nun die Gesellschafter dieser Holding ermitteln. Vielleicht ist diese wiederum Teil einer ausländischen Unternehmensgruppe. Die manuelle Recherche in verschiedenen Registern wird schnell unübersichtlich, kostet wertvolle Zeit und das Ergebnis ist schwer zu dokumentieren. Genau hier setzen wir an und bauen eine Lösung, die diese Recherche auf Knopfdruck erledigt und die Ergebnisse sauber und nachvollziehbar in Deinem Zoho CRM ablegt.
Schritt-für-Schritt: Von der manuellen Recherche zur automatisierten UBO-Ermittlung
Unser Ziel ist es, einen Button im Firmen-Modul (Accounts) von Zoho CRM zu erstellen. Dieser Button löst eine Funktion aus, die eine externe API abfragt, die Firmenstruktur analysiert und die wirtschaftlich Berechtigten automatisch als verknüpfte Kontakte anlegt.
1. Vorbereitung in Zoho CRM: Das Datenmodell schaffen
Zuerst benötigst Du eine solide Datenbasis. Standardmäßig hast Du in Zoho CRM die Module „Firmen“ (Accounts) und „Kontakte“ (Contacts). Um die Beteiligungsstrukturen abzubilden, kannst Du entweder ein benutzerdefiniertes Modul „Beteiligungen“ erstellen oder – für eine einfachere Lösung – ein Multi-Select-Lookup-Feld im Firmen-Modul verwenden, das auf sich selbst verweist, um Muttergesellschaften abzubilden. Für unser Beispiel legen wir den Fokus auf die direkte Zuordnung der final ermittelten Personen.
- Im Modul „Firmen“: Stelle sicher, dass Du Felder für die Handelsregisternummer und das Land hast. Füge ein benutzerdefiniertes Feld hinzu, z.B. „Kundentyp“ (Dropdown: Kunde, Beteiligungsgesellschaft, etc.), um operative Kunden von reinen Holdings zu unterscheiden.
- Im Modul „Kontakte“: Erstelle ein Feld namens „Anteil in %“, um die Beteiligungsquote zu speichern, sobald eine Person als wirtschaftlich Berechtigter identifiziert wurde.
- Verknüpfung: Wir werden die gefundenen wirtschaftlich Berechtigten (Kontakte) mit der jeweiligen Firma (Account) über die Standard-Related-List verknüpfen.
2. Die externe API: Daten aus öffentlichen Registern ziehen
Das Herzstück unserer Automatisierung ist eine externe Datenquelle. In unserem Beispiel nutzen wir die API von OpenCorporates, einer der größten offenen Datenbanken für Unternehmensdaten weltweit. Andere Dienste wie North Data oder lokale Handelsregister-APIs sind ebenfalls denkbar. Du benötigst einen API-Schlüssel, den Du nach der Registrierung auf deren Plattform erhältst.
Die API erlaubt es uns, anhand eines Firmennamens oder einer Registernummer nach einem Unternehmen zu suchen und Informationen über dessen leitende Angestellte und Gesellschafter zu erhalten.
3. Die Logik definieren: Die 25%-Regel und der „fiktive Berechtigte“
Bevor wir den Code schreiben, müssen wir die wichtigste Geschäftsregel klären. Laut GwG gilt als wirtschaftlich Berechtigter, wer direkt oder indirekt mehr als 25% der Kapitalanteile oder Stimmrechte kontrolliert. Was aber, wenn niemand diese Schwelle erreicht? Für diesen Fall gibt es die Regel des „fiktiven wirtschaftlich Berechtigten“: Kann kein UBO ermittelt werden, gilt der gesetzliche Vertreter oder Geschäftsführer als solcher. Diese Regel ist ein Segen für unsere Automatisierung, da sie einen klaren Endpunkt für unsere Suche definiert und Endlosschleifen verhindert.
4. Die Umsetzung mit Deluge: Eine Custom Function in Zoho CRM
Jetzt geht es ans Eingemachte. Wir erstellen eine Custom Function in Deluge, der Skriptsprache von Zoho. Gehe dazu in Deinem Zoho CRM zu Einstellungen > Automatisierung > Aktionen > Funktionen > Neue Funktion erstellen.
Schritt 1: Einen Button erstellen
Erstelle zuerst einen neuen Button im Firmen-Modul (Einstellungen > Anpassung > Module und Felder > Firmen > Links und Buttons). Nenne ihn „Wirtschaftlich Berechtigte ermitteln“ und wähle aus, dass er eine bestehende Funktion ausführen soll.
Schritt 2: Die Deluge-Funktion schreiben
Die Funktion nimmt die ID der Firma als Argument, ruft die externe API auf, wertet die Antwort aus und legt die entsprechenden Datensätze in Zoho CRM an.
Hier ist ein vereinfachtes Beispielskript, das die Grundlogik demonstriert:
// Argument: Die ID des Firmen-Datensatzes, für den der Button geklickt wurde
void findUBOs(int accountId)
{
// 1. Firmendaten aus Zoho CRM abrufen
accountDetails = zoho.crm.getRecordById("Accounts", accountId);
companyName = accountDetails.get("Account_Name");
// Angenommen, Du hast ein Feld für die Jurisdiktion, z.B. 'de' für Deutschland
jurisdictionCode = accountDetails.get("Jurisdiction_Code");
// 2. API-Aufruf an OpenCorporates vorbereiten
// Ersetze 'DEIN_API_SCHLUESSEL' durch deinen echten API-Schlüssel
apiKey = "DEIN_API_SCHLUESSEL";
// Die URL für die Unternehmenssuche
apiUrl = "https://api.opencorporates.com/v0.4/companies/search?q=" + companyName + "&jurisdiction_code=" + jurisdictionCode + "&api_token=" + apiKey;
// 3. API aufrufen
response = invokeurl
[
url: apiUrl
type: GET
];
// info response; // Zum Debuggen die Antwort ausgeben
// 4. JSON-Antwort verarbeiten (dies ist ein vereinfachtes Beispiel)
companies = response.get("results").get("companies");
if (companies.size() > 0)
{
// Wir nehmen den ersten Treffer für dieses Beispiel
firstCompany = companies.get(0).get("company");
companyUrl = firstCompany.get("opencorporates_url");
// Hier würde die eigentliche rekursive Logik ansetzen:
// a) Eine weitere API-Anfrage stellen, um die Gesellschafter ("officers") dieser Firma abzurufen.
// b) Die Liste der Gesellschafter durchgehen.
// c) FÜR JEDEN GESELLSCHAFTER:
// - Ist es eine natürliche Person mit >25% Anteil?
// -> Prüfen, ob der Kontakt im CRM existiert. Wenn nicht, anlegen. Mit der Firma verknüpfen.
// - Ist es eine juristische Person (Firma)?
// -> Rufe diese Funktion rekursiv für die Gesellschafter-Firma auf.
// Simulierter Fund eines UBO zur Demonstration
uboName = "Max Mustermann";
uboShare = 51.0;
// Prüfen, ob der Kontakt bereits existiert
searchResponse = zoho.crm.searchRecords("Contacts", "(Full_Name:equals:" + uboName + ")");
if (searchResponse.size() == 0)
{
// Kontakt anlegen, wenn er nicht gefunden wurde
contactMap = Map();
contactMap.put("Last_Name", uboName);
// Wichtig: Den Kontakt mit der ursprünglichen Firma verknüpfen
contactMap.put("Account_Name", accountId);
// Benutzerdefiniertes Feld für den Anteil füllen
contactMap.put("Anteil_in", uboShare);
createResponse = zoho.crm.createRecord("Contacts", contactMap);
info "Neuer Kontakt erstellt: " + createResponse;
}
else
{
info "Kontakt " + uboName + " existiert bereits.";
}
}
else
{
// Fehlerbehandlung: Keine Firma gefunden
info "Keine Firma mit dem Namen " + companyName + " in der API gefunden.";
}
}
Wichtiger Hinweis: Das obige Skript ist eine stark vereinfachte Darstellung. Eine produktive Implementierung erfordert eine tiefere, rekursive Logik, um verschachtelte Strukturen aufzulösen, sowie eine robuste Fehlerbehandlung (z.B. bei API-Limits oder ungültigen Daten).
Tipps und Best Practices für eine robuste Lösung
- Fehlerbehandlung ist entscheidend: Was passiert, wenn die API nicht erreichbar ist oder einen Fehler zurückgibt? Dein Skript sollte solche Fälle abfangen und eine verständliche Fehlermeldung ausgeben, z.B. über eine Notiz im CRM-Datensatz oder eine Benachrichtigung in Zoho Cliq.
- API-Kosten im Blick behalten: APIs sind selten kostenlos. Kläre die Kosten pro Aufruf und implementiere einen Mechanismus, um unnötige Abfragen zu vermeiden. Speichere zum Beispiel den Zeitstempel der letzten erfolgreichen Abfrage in einem Feld und erlaube eine erneute Prüfung erst nach 24 Stunden. Die Kosten von wenigen Euro pro Neukundenprüfung sind jedoch oft vernachlässigbar im Vergleich zur manuellen Arbeitszeit.
- Skalierbarkeit planen: Der manuelle Button ist ein guter erster Schritt. In der nächsten Stufe könntest Du den Prozess weiter automatisieren. Nutze einen Workflow in Zoho CRM, der die Funktion automatisch auslöst, sobald eine neue Firma mit dem Status „Qualifizierung“ angelegt wird. Für noch komplexere, systemübergreifende Abläufe eignet sich Zoho Flow hervorragend, um den Prozess zu orchestrieren.
- Datenqualität sicherstellen: Wenn die API eine Firma findet, die noch nicht in Deinem CRM existiert, sollte Dein Skript diese automatisch anlegen. Das stellt sicher, dass Dein CRM zur zentralen Datenquelle (Single Source of Truth) für alle Unternehmensbeteiligungen wird.
Zusätzliche Potenziale im Zoho-Ökosystem
Eine einmal implementierte Lösung entfaltet ihr volles Potenzial erst durch die Kombination mit anderen Zoho Apps:
- Zoho Analytics: Erstelle Dashboards, die den KYC-Status Deines gesamten Kundenstamms visualisieren. Wie viele Kunden sind vollständig verifiziert? Wo fehlen noch Daten? So behältst Du die Compliance immer im Blick.
- Zoho Sign: Sobald die wirtschaftlich Berechtigten ermittelt sind, kannst Du diese Daten nutzen, um Verträge automatisch zu befüllen und zur digitalen Signatur zu versenden.
- Zoho Books / Zoho Invoice: Die verifizierten Kundendaten bilden eine saubere Grundlage für die Rechnungsstellung und das Finanzmanagement.
- Zoho Creator: Wenn der Prozess extrem komplex wird und eine eigene Benutzeroberfläche zur Validierung der Daten erfordert, kannst Du eine maßgeschneiderte App mit Zoho Creator bauen, die nahtlos mit Deinem CRM kommuniziert.
Fazit: Mehr als nur Automatisierung – ein strategischer Vorteil
Die Automatisierung der UBO-Ermittlung in Zoho CRM ist mehr als nur eine technische Spielerei. Du verwandelst einen reaktiven, manuellen Pflichtprozess in einen proaktiven, automatisierten und skalierbaren Wettbewerbsvorteil. Du reduzierst nicht nur den administrativen Aufwand drastisch, sondern minimierst auch das Risiko menschlicher Fehler und stellst eine lückenlose Dokumentation für Compliance-Audits sicher. Dieses Projekt ist ein perfektes Beispiel dafür, wie die offene Architektur von Zoho es Dir ermöglicht, Standardsoftware durch die intelligente Anbindung von externen APIs an Deine spezifischen, branchenkritischen Anforderungen anzupassen.
Verwendete Zoho Apps in diesem Szenario:
- Zoho CRM als zentrale Plattform und für die Ausführung der Deluge-Funktion.
- Zoho Flow als mögliche Alternative oder Erweiterung für komplexe Workflows.
- Zoho Analytics für Reporting und Compliance-Übersicht.
- Zoho Sign für die anschließende Vertragsautomatisierung.
