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

Umfassende Anleitung zur UBS-Banking-Automation für internationale Unternehmen: EBICS-Setup, KeyPort API, Multi-Currency, Treasury-Automation, FX-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:
- Formular: https://www.ubs.com/keyport-apply (Beispiel)
- Angaben: Verwendungszweck (z.B. "SAP-Integration"), erwartetes Transaktionsvolumen
- Freischaltung: 2 Wochen
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:
- Hauptkonto: CHF (CH93 0027 4000 1234 5678 9)
- Sub-Konten: EUR (CH11 0027 4000 2345 6789 0), USD (CH22 0027 4000 3456 7890 1), GBP, JPY, etc.
- EBICS-Verbindung: Nur zum Hauptkonto (CHF)
- EBICS-Abruf:
camt.053enthä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 abrufenGET /accounts/{iban}/balance- Kontostand EchtzeitGET /accounts/{iban}/transactions- Transaktionen (letzten 90 Tage)POST /payments- Zahlung einreichen (Alternative zu EBICS FUL)GET /payments/{id}/status- Zahlungsstatus prüfenPOST /fx/quote- FX-Kurs abfragenPOST /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):
- Mitarbeiter sieht EUR-Eingang (morgens)
- Mitarbeiter ruft UBS-Berater an (10:00 Uhr)
- UBS-Berater gibt FX-Kurs durch (z.B. EUR/CHF 0.9450)
- Mitarbeiter bestätigt
- UBS führt Wechsel aus (11:00 Uhr)
- Dauer: 1-2 Stunden, Kurs evtl. schlechter (Markt bewegt sich)
Automatisch (KeyPort FX API):
- KeyPort erkennt EUR-Eingang (Echtzeit, via Webhook)
- Python-Script ruft FX-Kurs ab (API)
- Script vergleicht mit Limit (z.B. "nur wechseln wenn EUR/CHF < 0.9500")
- Script führt Wechsel aus (API)
- 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
Option 2: Kostenlose Beratung (60 Min)
- Wir analysieren, ob UBS für Ihr Unternehmen geeignet ist
- Alternative: PostFinance (einfacher), Revolut (günstiger)
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.


