UBS Corporate Banking Automation: EBICS + KeyPort API für Großunternehmen

By SwissFinanceAI Team
|
|18 Min Read
UBS Corporate Banking Automation: EBICS + KeyPort API für Großunternehmen
Image: SwissFinanceAI / banking

Umfassende Anleitung zur UBS-Banking-Automation für internationale Unternehmen: EBICS-Setup, KeyPort API, Multi-Currency, Treasury-Automation, FX-Trading.

UBSEBICSKeyPort APICorporate BankingMulti-CurrencyTreasury AutomationFX Trading

Überblick

UBS Corporate Banking bietet fortschrittlichste Banking-Automation für Großunternehmen (100+ Mitarbeiter, internationaler Handel).

Unterschied zu PostFinance:

  • 2 APIs: EBICS (Standard) + KeyPort API (proprietär, REST-basiert)
  • Multi-Currency: 40+ Währungen (CHF, EUR, USD, GBP, JPY, CNY, etc.)
  • FX-Trading: Automatischer Währungswechsel mit besten Kursen
  • Treasury: Liquiditätsmanagement, Cash Pooling, Hedging

Nachteile:

  • ❌ Höhere Kosten (CHF 50-150/Monat)
  • ❌ Komplexe Einrichtung (4-6 Wochen)
  • ❌ API-Entwickler erforderlich (nicht "out-of-the-box" wie PostFinance)

Best for: Unternehmen mit > CHF 10 Mio. Umsatz/Jahr, internationale Zahlungen, komplexe Treasury-Anforderungen.


1. UBS Corporate Banking-Zugang beantragen

Dauer: 4 Wochen

1.1 Mindestanforderungen

UBS akzeptiert nur:

  • ✅ GmbH oder AG (keine Einzelfirmen)
  • ✅ Mindesteinlage: CHF 50.000 (für Corporate-Konto)
  • ✅ Jahresumsatz > CHF 5 Mio. (für KeyPort API-Zugang)
  • ✅ Sitz in Schweiz oder EU (für SEPA)

1.2 Unterlagen einreichen

UBS benötigt:

  • Handelsregisterauszug (nicht älter als 3 Monate)
  • Statuten (GmbH/AG)
  • Jahresabschluss (letztes Geschäftsjahr)
  • Organigramm (Geschäftsführung, Prokura)
  • ID-Kopien aller Zeichnungsberechtigten

Kontoeröffnung:

  • Termin in UBS-Filiale (Zürich, Bern, Basel, Genf)
  • Dauer: 2-4 Wochen (AML-Prüfung)

1.3 EBICS + KeyPort beantragen

Nach Kontoeröffnung:

  • EBICS: Standard-Zugang (kostenlos, in Corporate Banking enthalten)
  • KeyPort API: Zusatzantrag erforderlich (CHF 100/Monat)

KeyPort API-Antrag:


2. EBICS-Verbindung einrichten

Dauer: 8 Stunden

Gleicher Prozess wie PostFinance (siehe PostFinance EBICS Guide), aber mit UBS-spezifischen Parametern.

2.1 EBICS-Parameter (UBS)

SAP S/4HANA:

  • EBICS-URL: https://ebics.ubs.com/ebicsweb/ebicsweb (UBS EBICS-Server)
  • Partner-ID: UBSSW (UBS Schweiz)
  • User-ID: Vergeben durch UBS (z.B. UBS123456)
  • Bank-Code: 00274 (UBS Swiss Bank Code)

2.2 UBS-spezifische Ordertypen

Zusätzlich zu Standard-EBICS:

  • HAC (Kontoauszug, camt.053)
  • FUL (Zahlungen, pain.001)
  • FDL (Lastschriften, pain.008)
  • CCT (Cross-Currency Transfer) - UBS-spezifisch
  • PTK (Payment Tracking) - Echtzeitstatus von Zahlungen

2.3 Multi-Currency-Setup

Problem: Standard-EBICS unterstützt nur 1 Währung pro Verbindung.

UBS-Lösung: Multi-Currency-Container-Konto

Setup:

  1. Hauptkonto: CHF (CH93 0027 4000 1234 5678 9)
  2. Sub-Konten: EUR (CH11 0027 4000 2345 6789 0), USD (CH22 0027 4000 3456 7890 1), GBP, JPY, etc.
  3. EBICS-Verbindung: Nur zum Hauptkonto (CHF)
  4. EBICS-Abruf: camt.053 enthält alle Währungen (Multi-Currency-XML)

Beispiel camt.053 (Multi-Currency):

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.04">
  <BkToCstmrStmt>
    <!-- CHF-Konto -->
    <Stmt>
      <Id>STMT-CHF-20260122</Id>
      <Acct><Id><IBAN>CH93 0027 4000 1234 5678 9</IBAN></Id></Acct>
      <Bal>
        <Amt Ccy="CHF">120500.00</Amt>
      </Bal>
    </Stmt>
    <!-- EUR-Konto (Sub-Account) -->
    <Stmt>
      <Id>STMT-EUR-20260122</Id>
      <Acct><Id><IBAN>CH11 0027 4000 2345 6789 0</IBAN></Id></Acct>
      <Bal>
        <Amt Ccy="EUR">85300.00</Amt>
      </Bal>
    </Stmt>
    <!-- USD-Konto (Sub-Account) -->
    <Stmt>
      <Id>STMT-USD-20260122</Id>
      <Acct><Id><IBAN>CH22 0027 4000 3456 7890 1</IBAN></Id></Acct>
      <Bal>
        <Amt Ccy="USD">95200.00</Amt>
      </Bal>
    </Stmt>
  </BkToCstmrStmt>
</Document>

3. KeyPort API-Zugang aktivieren

Dauer: 2 Wochen (nach Antrag)

3.1 Was ist KeyPort API?

KeyPort = UBS proprietäre REST API (JSON, HTTPS)

Vorteile gegenüber EBICS:

  • Echtzeit: Sofortiger Zugriff auf Kontostände (EBICS: nur täglich)
  • Zusatzfunktionen: FX-Trading, Payment Tracking, Cash Pooling
  • Modern: REST statt XML (einfacher für Entwickler)

Verfügbare Endpoints:

  • GET /accounts - Alle Konten abrufen
  • GET /accounts/{iban}/balance - Kontostand Echtzeit
  • GET /accounts/{iban}/transactions - Transaktionen (letzten 90 Tage)
  • POST /payments - Zahlung einreichen (Alternative zu EBICS FUL)
  • GET /payments/{id}/status - Zahlungsstatus prüfen
  • POST /fx/quote - FX-Kurs abfragen
  • POST /fx/execute - Währungswechsel ausführen

3.2 API-Credentials erhalten

Nach KeyPort-Freischaltung:

  • UBS sendet Client ID + Client Secret (per Post, verschlüsselt)
  • OAuth 2.0: KeyPort verwendet OAuth 2.0 für Authentifizierung

Credentials-Beispiel:

Client ID: ubs_corporate_abc123
Client Secret: sk_live_AbC123XyZ456 (geheim!)

3.3 OAuth-Token abrufen

Python-Beispiel:

import requests

# OAuth-Token abrufen
token_url = "https://api.ubs.com/oauth/token"
response = requests.post(token_url, data={
    "grant_type": "client_credentials",
    "client_id": "ubs_corporate_abc123",
    "client_secret": "sk_live_AbC123XyZ456",
    "scope": "accounts:read payments:write fx:execute"
})

access_token = response.json()["access_token"]
print(f"Access Token: {access_token}")  # Gültig 1 Stunde

3.4 Kontostand abrufen (Echtzeit)

Python-Beispiel:

# Kontostand abrufen (alle Konten)
accounts_url = "https://api.ubs.com/v1/accounts"
headers = {"Authorization": f"Bearer {access_token}"}

response = requests.get(accounts_url, headers=headers)
accounts = response.json()

for account in accounts["data"]:
    iban = account["iban"]
    balance = account["balance"]["amount"]
    currency = account["balance"]["currency"]
    print(f"{iban}: {currency} {balance:,.2f}")

# Output:
# CH93 0027 4000 1234 5678 9: CHF 120,500.00
# CH11 0027 4000 2345 6789 0: EUR 85,300.00
# CH22 0027 4000 3456 7890 1: USD 95,200.00

4. Multi-Currency-Konten anbinden

Dauer: 4 Stunden

4.1 Währungen aktivieren

UBS unterstützt 40+ Währungen:

  • Hauptwährungen: CHF, EUR, USD, GBP, JPY, CNY, HKD, SGD, AUD, CAD
  • Exotische Währungen: PLN, CZK, HUF, SEK, NOK, DKK, etc.

Kosten:

  • Kontoeröffnung: CHF 0 (kostenlos für Corporate-Kunden)
  • Kontoführung: CHF 10/Monat pro Währung (ab 5. Währung kostenlos)

Antrag:

  • UBS Online Banking → Konten → Neue Währung hinzufügen
  • Freischaltung: 1-2 Werktage

4.2 SAP Multi-Currency-Mapping

SAP-Customizing:

  • OBYA: House Bank anlegen (UBS CHF, UBS EUR, UBS USD)
  • FBZP: Zahlungsprogramm-Varianten (je Währung)

Automatische Währungszuordnung:

Rechnung EUR 10.000 → SAP zahlt von UBS EUR-Konto
Rechnung USD 15.000 → SAP zahlt von UBS USD-Konto
Rechnung CHF 5.000 → SAP zahlt von UBS CHF-Konto

5. FX-Trading-Automation einrichten

Dauer: 16 Stunden (inkl. Tests)

5.1 Use Case: Automatischer Währungswechsel

Szenario: Unternehmen erhält EUR-Zahlung, benötigt aber CHF für Lieferanten.

Manuell (ohne Automation):

  1. Mitarbeiter sieht EUR-Eingang (morgens)
  2. Mitarbeiter ruft UBS-Berater an (10:00 Uhr)
  3. UBS-Berater gibt FX-Kurs durch (z.B. EUR/CHF 0.9450)
  4. Mitarbeiter bestätigt
  5. UBS führt Wechsel aus (11:00 Uhr)
  6. Dauer: 1-2 Stunden, Kurs evtl. schlechter (Markt bewegt sich)

Automatisch (KeyPort FX API):

  1. KeyPort erkennt EUR-Eingang (Echtzeit, via Webhook)
  2. Python-Script ruft FX-Kurs ab (API)
  3. Script vergleicht mit Limit (z.B. "nur wechseln wenn EUR/CHF < 0.9500")
  4. Script führt Wechsel aus (API)
  5. Dauer: 10 Sekunden, bester verfügbarer Kurs

5.2 FX-Quote abrufen (API)

Python-Beispiel:

# FX-Kurs abfragen (EUR → CHF)
fx_quote_url = "https://api.ubs.com/v1/fx/quote"
response = requests.post(fx_quote_url, headers=headers, json={
    "from_currency": "EUR",
    "to_currency": "CHF",
    "amount": 10000.00  # EUR 10,000
})

quote = response.json()
rate = quote["exchange_rate"]  # z.B. 0.9450
chf_amount = quote["target_amount"]  # CHF 9,450.00
valid_until = quote["valid_until"]  # ISO timestamp (Quote gültig 60 Sek)

print(f"EUR/CHF Rate: {rate}")
print(f"CHF 10.000 = CHF {chf_amount:,.2f}")
print(f"Quote gültig bis: {valid_until}")

5.3 FX-Trade ausführen (API)

Python-Beispiel:

# Währungswechsel ausführen (EUR → CHF)
fx_execute_url = "https://api.ubs.com/v1/fx/execute"
response = requests.post(fx_execute_url, headers=headers, json={
    "quote_id": quote["id"],  # Quote von vorherigem API-Call
    "from_account": "CH11 0027 4000 2345 6789 0",  # EUR-Konto
    "to_account": "CH93 0027 4000 1234 5678 9",  # CHF-Konto
    "confirm": True
})

trade = response.json()
print(f"Trade ID: {trade['id']}")
print(f"Status: {trade['status']}")  # "executed"
print(f"EUR 10.000 → CHF {trade['chf_amount']:,.2f}")

5.4 Automatischer FX-Trigger (n8n Workflow)

n8n Workflow:

1. TRIGGER: Webhook (UBS sendet Benachrichtigung bei EUR-Eingang)
2. HTTP Request: GET /accounts/EUR/balance (aktueller EUR-Stand)
3. IF: EUR-Balance > 5.000 (nur große Beträge wechseln)
4. HTTP Request: POST /fx/quote (EUR → CHF Quote abrufen)
5. IF: Quote Rate < 0.9500 (nur bei günstigem Kurs wechseln)
6. HTTP Request: POST /fx/execute (Wechsel ausführen)
7. Slack Notification: "EUR 10,000 → CHF 9,450 (Rate: 0.9450)"

Vorteil:

  • ✅ Kein manueller Eingriff
  • ✅ Bester verfügbarer Kurs (Echtzeit)
  • ✅ Regelbasiert (nur bei günstigem Kurs)

6. Treasury-Reporting automatisieren

Dauer: 8 Stunden

6.1 Liquiditätsübersicht (alle Konten)

Python-Script: Täglicher Report (E-Mail an CFO)

import smtplib
from email.mime.text import MIMEText

# Alle Kontostände abrufen (KeyPort API)
response = requests.get("https://api.ubs.com/v1/accounts", headers=headers)
accounts = response.json()["data"]

# Umrechnung in CHF (Basis-Währung)
total_chf = 0
report_lines = []

for account in accounts:
    currency = account["balance"]["currency"]
    amount = account["balance"]["amount"]

    # FX-Quote abrufen (zu CHF)
    if currency != "CHF":
        fx_response = requests.post("https://api.ubs.com/v1/fx/quote", headers=headers, json={
            "from_currency": currency,
            "to_currency": "CHF",
            "amount": amount
        })
        chf_equivalent = fx_response.json()["target_amount"]
    else:
        chf_equivalent = amount

    total_chf += chf_equivalent
    report_lines.append(f"{currency} {amount:,.2f} = CHF {chf_equivalent:,.2f}")

# E-Mail zusammenstellen
report = f"""
Liquiditätsübersicht (Stand: 22.01.2026, 08:00 Uhr)

{chr(10).join(report_lines)}

---
GESAMT (in CHF): CHF {total_chf:,.2f}
"""

# E-Mail senden
msg = MIMEText(report)
msg["Subject"] = "Tägliche Liquiditätsübersicht (UBS)"
msg["From"] = "finance@swissfinanceai.com"
msg["To"] = "cfo@swissfinanceai.com"

smtp = smtplib.SMTP("smtp.gmail.com", 587)
smtp.starttls()
smtp.login("finance@swissfinanceai.com", "password")
smtp.send_message(msg)
smtp.quit()

print("Liquiditätsübersicht versendet!")

6.2 Cash Flow Forecast (7 Tage)

Erweiterung: Prognose basierend auf offenen Rechnungen (SAP-Daten)

# Offene Forderungen aus SAP abrufen (BAPI_AR_ACC_GETOPENITEMS)
# Offene Verbindlichkeiten aus SAP abrufen (BAPI_AP_ACC_GETOPENITEMS)

# Forecast-Berechnung (vereinfacht)
forecast = {
    "Tag 1": total_chf + 15000 - 8000,  # +15k Forderung, -8k Verbindlichkeit
    "Tag 2": total_chf + 22000 - 12000,
    # ...
}

# Visualisierung (Matplotlib oder E-Mail-Tabelle)

ROI-Kalkulation

Kosten (1 Jahr, Großunternehmen):

  • UBS Corporate Banking: CHF 100/Monat × 12 = CHF 1.200
  • UBS KeyPort API: CHF 100/Monat × 12 = CHF 1.200
  • Multi-Currency (5 Währungen): CHF 0 (kostenlos ab 5 Währungen)
  • Entwicklung (40h × CHF 150/h): CHF 6.000
  • GESAMT Jahr 1: CHF 8.400
  • GESAMT ab Jahr 2: CHF 2.400 (nur laufende Gebühren)

Einsparungen (1 Jahr):

  • FX-Trading: Bessere Kurse durch Echtzeit-Automation
    • 100 FX-Trades/Jahr × CHF 200 besserer Kurs = CHF 20.000
  • Treasury-Zeit: Automatisierte Reports (5h/Woche → 0,5h/Woche)
    • 4,5h/Woche × 50 Wochen × CHF 120/h (Treasury Manager) = CHF 27.000
  • Zahlungs-Automation: Gleich wie PostFinance (100h/Jahr × CHF 85/h) = CHF 8.500

Einsparungen GESAMT: CHF 55.500/Jahr

ROI:

  • Jahr 1: CHF 55.500 - CHF 8.400 = CHF 47.100 Gewinn (561% ROI)
  • Jahr 2: CHF 55.500 - CHF 2.400 = CHF 53.100 Gewinn (2.212% ROI)

UBS vs. PostFinance: Wann lohnt sich UBS?

| Kriterium | PostFinance | UBS | |-----------|-------------|-----| | Best for | KMU (1-50 Mitarbeiter) | Großunternehmen (100+ Mitarbeiter) | | Kosten | CHF 20/Monat | CHF 200/Monat (EBICS + KeyPort) | | Setup-Dauer | 2-3 Wochen | 4-6 Wochen | | Multi-Currency | ❌ Nur CHF/EUR | ✅ 40+ Währungen | | FX-Trading | ❌ Nein (manuell über E-Finance) | ✅ Automatisch (API) | | Treasury-Features | ❌ Basis (Kontoauszug) | ✅ Erweitert (Cash Pooling, Hedging) | | API-Qualität | ⚠️ Nur EBICS (XML) | ✅ EBICS + REST (JSON) | | Support | ⚠️ Standard (E-Mail) | ✅ Dedicated Relationship Manager |

Entscheidungshilfe:

  • PostFinance: Jahresumsatz < CHF 5 Mio., nur CHF/EUR-Zahlungen, einfache Automation
  • UBS: Jahresumsatz > CHF 10 Mio., internationale Zahlungen (> 3 Währungen), komplexe Treasury-Anforderungen

Nächste Schritte

Option 1: UBS Corporate Banking Setup-Service (CHF 6.000, 40h)

  • Wir richten EBICS + KeyPort API für Sie ein
  • Inklusive: Multi-Currency-Setup, FX-Automation, Treasury-Reports

👉 Service buchen

Option 2: Kostenlose Beratung (60 Min)

  • Wir analysieren, ob UBS für Ihr Unternehmen geeignet ist
  • Alternative: PostFinance (einfacher), Revolut (günstiger)

👉 Termin buchen


Veröffentlicht: 22. Januar 2026 Autor: SwissFinanceAI Team Kategorie: Corporate Banking

References

    Transparency Notice: This article may contain AI-assisted content. All citations link to verified sources. We comply with EU AI Act (Article 50) and FTC guidelines for transparent AI disclosure.

    blog.relatedArticles

    Wir schützen Ihre Privatsphäre

    Wir verwenden Cookies, um Ihr Erlebnis zu verbessern. Mit "Akzeptieren" stimmen Sie der Verwendung zu.