Beschreibung
Der Endpunkt nimmt Nutzerdaten als JSON entgegen und überträgt sie in die MyWage-Datenbank. Bei Erfolg gibt die API eine User-ID und einen Session-Token zurück. Fehler in den Daten oder Systemfehler werden mit entsprechenden Statuscodes und Fehlermeldungen beantwortet.
Flexibel integrierbar: Alle Parameter außer token und email sind optional. Nicht übermittelte Felder werden dem Nutzer im Onboarding-Flow abgefragt — bereits übermittelte Felder werden nicht erneut abgefragt.
Onboarding Targets
Der Endpunkt unterstützt vier Onboarding-Ziele, die über den Partner-Token konfiguriert werden. Für mehrere Ziele können beim Account Manager separate Tokens angefordert werden.
👤 User Registration
Einfache Kontoerstellung. Nutzer legt ein Passwort fest und erhält Zugang zur MyWage-Plattform.
💸 Debt Counseling
Erweiterung der Registrierung um einen optionalen Schuldenberatungs-Antrag.
🏦 Loan Application
Registrierung + Kreditantrag. Daten werden im Antragsformular vorausgefüllt.
💶 Small Loan (Kleinkredit)
Registrierung + Florin+ Kleinkredit-Antrag. Betrag bis 1.500 €, Laufzeit 30 oder 60 Tage.
Base URL
https://app.mywage.de/api/1.1/wf
Endpoint
POST https://app.mywage.de/api/1.1/wf/transfer_user
Alle Parameter werden als JSON im Request-Body übergeben.
Pflichtparameter
| Parameter | Typ | Status | Beschreibung |
| token | string | Required | Partner-Zugriffstoken, vom MyWage Account Manager bereitgestellt. |
| email | string | Required | E-Mail-Adresse des Nutzers. |
Tracking & Flow-Steuerung
| Parameter | Typ | Status | Beschreibung |
| partner_id | string | Optional | Eindeutiger Bezeichner (z.B. Click-ID). Ermöglicht granulare Attribution erfolgreicher Anträge auf Traffic-Quellen. |
| channel | string | Optional | Freitext-Feld zur Kennzeichnung der Traffic-Quelle (z.B. "website", "email", "test"). Nützlich bei mehreren Kanälen. |
| registration_mode | string | Optional | Steuert den Post-Registrierungs-Flow:
default — Link zum Vervollständigen des Antrags wird per E-Mail zugestellt.
direct — Direktlink zum Antrag in der API-Response und per E-Mail.
realtime — Wie direct, plus: Link kommt zusätzlich in der API-Response (für direkte Weiterleitung).
|
Persönliche Daten
| Parameter | Typ | Format / Werte | Beschreibung |
| academic_title | string | "Dr.", "Dr. Dr.", "Prof.", "Prof. Dr.", "Prof. Dr. Dr." | Akademischer Titel. |
| first_name | string | 2–40 Zeichen, keine Zahlen | Vorname. |
| last_name | string | 2–40 Zeichen, keine Zahlen | Nachname. |
| gender | string | "Männlich", "Weiblich", "Divers", "Keine Angabe" | Geschlecht. |
| birthday | string | YYYY.MM.DD | Geburtsdatum. Beispiel: "1985.03.15" |
| place_of_birth | string | 2–40 Zeichen, keine Zahlen | Geburtsort. |
| nationality | string | ISO 3166-1 alpha-2 | Staatsangehörigkeit. Beispiel: "DE" |
| family_status | string | "Ledig", "Verheiratet", "Geschieden", "Getrennt", "Verwitwet", "Eheähnliche Lebensgemeinschaft", "Eingetragene Lebenspartnerschaft" | Familienstand. |
| number_of_children | integer | 0 – 6 | Anzahl der abhängigen Kinder. |
| iban | string | Gültiges IBAN-Format | IBAN des Nutzers. Beispiel: "DE89370400440532013000" |
Adresse
| Parameter | Typ | Format / Werte | Beschreibung |
| street | string | 2–40 Zeichen, erstes Zeichen darf keine Zahl sein | Straßenname. |
| house_number | string | Max. 11 Zeichen, erstes Zeichen muss eine Zahl sein | Hausnummer. |
| postcode | string | 5 Stellen | Postleitzahl. Beispiel: "80331" |
| city | string | 2–40 Zeichen, keine Zahlen | Wohnort. |
| living_situation | string | "Bei den Eltern", "Eigentum", "Miete", "Mietfrei", "Wohngemeinschaft" | Wohnsituation. |
| living_at_current_address_since | string | YYYY.MM.DD | Datum des Einzugs in die aktuelle Wohnung. |
| is_property_owner | string | "True", "False" | Ob der Nutzer Eigentümer der Immobilie ist. |
| adults_in_household | string | "1", "2" (= 2 oder mehr) | Anzahl Erwachsene im Haushalt. Muss als String übergeben werden. |
| children_in_household | string | 0 – 6 | Anzahl Kinder im Haushalt. |
| phone_number | string | E.164, deutsches Mobilnetz | Mobiltelefonnummer. Beispiel: "+4917634501234" |
Beschäftigung
| Parameter | Typ | Format / Werte | Beschreibung |
| job_type | string | Arbeitslos, Leitender Angestellter, Zeitarbeit, Schueler/Student, Selbstaendiger, Professioneller Soldat, Soldat, Angestellter Öffentlicher Dienst, Rentner, Pensionaer, Beamter, Nicht Erwerbstaetiger, Hausfrau/Hausmann, Auszubildender/Lehrling, Arbeiter Privatwirtschaft, Angestellter Privatwirtschaft, Arbeiter Öffentlicher Dienst | Beschäftigungsart. |
| employer_name | string | 2–40 Zeichen | Name des Arbeitgebers. |
| employer_street | string | 2–40 Zeichen, kein Zahlen-Anfang | Straße des Arbeitgebers. |
| employer_house_number | string | Max. 11 Zeichen, Zahlen-Anfang | Hausnummer des Arbeitgebers. |
| employer_postcode | string | 5 Stellen | PLZ des Arbeitgebers. |
| employer_city | string | 2–40 Zeichen, keine Zahlen | Stadt des Arbeitgebers. |
| working_at_current_job_since | string | YYYY.MM.DD | Beschäftigt beim aktuellen Arbeitgeber seit. |
| is_in_probation_period | string | "True", "False" | Probezeit aktiv. |
| current_job_contract_is_limited_till | string | YYYY.MM.DD | Ende eines befristeten Vertrags. Leer lassen bei unbefristetem Vertrag. |
| tax_class | string | "1" – "6" | Steuerklasse. Muss als String übergeben werden. |
| net_income | integer | > 0 | Monatliches Nettoeinkommen in EUR. |
Finanzen
| Parameter | Typ | Bereich | Beschreibung |
| monthly_income_alimony | integer | 0 – 10.000 EUR | Monatliche Unterhaltszahlungen (Einnahmen). |
| monthly_income_child_or_care_allowance | integer | 0 – 10.000 EUR | Monatliches Kindergeld / Pflegegeld. |
| monthly_income_other | integer | 0 – 10.000 EUR | Sonstiges monatliches Einkommen. |
| monthly_income_pension | integer | 0 – 10.000 EUR | Monatliche Rente. |
| pension_start_date | string | YYYY.MM.DD | Rentenbeginn. |
| monthly_income_verifiable_additional | integer | 0 – 10.000 EUR | Nachweisbares Zusatzeinkommen monatlich. |
| date_since_income_verifiable_additional | string | YYYY.MM.DD | Beginn des nachweisbaren Zusatzeinkommens. |
| monthly_rent | integer | 0 – 2.500 EUR | Monatliche Miete inkl. Nebenkosten. 0 bei Eigentum. |
| monthly_expense_alimony | integer | 0 – 10.000 EUR | Monatliche Unterhaltszahlungen (Ausgaben). |
| monthly_expense_health_insurance | integer | 0 – 10.000 EUR | Monatliche Krankenversicherungskosten. |
| schufa_entry | string | "True", "False" | "True" bei negativem SCHUFA-Eintrag, sonst "False". Bei Unbekannt: "False" übergeben. |
Kreditdaten
| Parameter | Typ | Format / Werte | Beschreibung |
| preferred_loan_amount | integer | 1.000 – 10.000 EUR | Gewünschter Kreditbetrag. |
| preferred_loan_duration | integer | 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 84, 96, 108, 120 | Gewünschte Laufzeit in Monaten. |
| loan_purpose | string | "Autokredit (Gebrauchtwagen bis 3 Jahre)", "Autokredit (Gebrauchtwagen über 3 Jahre)", "Autokredit (Neuwagen)", "Dispo-Umschuldung", "Elektronik", "Immobilienkredit", "Kredit", "ohne SCHUFA", "Kreditumschuldung", "Möbel", "Privatkredit", "Ratenkredit", "Renovierung", "Umzug", "Urlaub", "zur freien Verfügung" | Verwendungszweck des Kredits. |
Schulden
| Parameter | Typ | Beschreibung |
| total_debt | integer | Gesamte ausstehende Schulden in EUR. |
| total_monthly_debt_payment | integer | Gesamte monatliche Schuldentilgung in EUR. |
| total_number_of_loans | integer | Anzahl aktiver Kredite. |
Kleinkredit (Florin+ Kleinkredit)
| Parameter | Typ | Werte | Beschreibung |
| small_loan_amount | integer | 100, 200, 400, 600, 800, 1.000, 1.250, 1.500 | Gewünschter Kleinkreditbetrag in EUR. |
| small_loan_duration | integer | 30, 60 | Gewünschte Laufzeit in Tagen. |
Response
Erfolgreiche Antwort
{
"status": "success",
"response": {
"valid_steps": [
"first name", "last name", "gender",
"birthday and place of birth", "family status",
"job type", "address", "phone number", "schufa entry"
],
"errors": [],
"request_id": "1715353616817x...",
"token": "bus|1715353616579x...|1715353616627x...",
"user_id": "1715353616579x...",
"expires": 86400
}
}
Response bei registration_mode: realtime
Enthält zusätzlich das Feld link — einen Einmal-Link für den Nutzer, der direkt angezeigt oder weitergeleitet werden kann.
{
"status": "success",
"response": {
"valid_steps": [...],
"errors": [],
"request_id": "XXX",
"link": "ONE_TIME_LINK_FOR_CUSTOMER", // Button/Link für den Nutzer
"token": "bus|XXX|XXX",
"user_id": "XXX",
"expires": 86400
}
}
Response-Felder
| Feld | Typ | Beschreibung |
| status | string | "success" wenn der Request verarbeitet wurde. |
| valid_steps | array | Liste der valide übermittelten Datenfelder. |
| errors | array | Liste der Felder mit ungültigem Format. Leer bei fehlerfreier Übermittlung. |
| request_id | string | Eindeutige ID dieser Anfrage. |
| token | string | Session-Token des erstellten Nutzers. Gültig für expires Sekunden. |
| user_id | string | ID des neu angelegten Nutzers. |
| expires | integer | Token-Gültigkeit in Sekunden (typisch 86400 = 24 Std.). |
| link | string | Nur bei realtime mode: Einmal-Direktlink für den Nutzer. |
Beispiele
Minimaler Request
curl -X POST https://app.mywage.de/api/1.1/wf/transfer_user \
-H "Content-Type: application/json" \
-d '{
"email": "nutzer@example.com",
"token": "ihr_partner_token"
}'
Vollständiger Request
POST https://app.mywage.de/api/1.1/wf/transfer_user
{
"token": "TOKEN",
"partner_id": "abc123",
"channel": "website",
"registration_mode": "direct",
"first_name": "Max",
"last_name": "Mustermann",
"gender": "Männlich",
"birthday": "1995.04.05",
"place_of_birth": "Berlin",
"nationality": "DE",
"family_status": "Ledig",
"number_of_children": 1,
"iban": "DE89370400440532013000",
"street": "Koppenplatz",
"house_number": "88",
"postcode": "10115",
"city": "Berlin",
"living_situation": "Miete",
"adults_in_household": "1",
"children_in_household": 1,
"phone_number": "+4917666390000",
"email": "max@example.com",
"job_type": "Angestellter Privatwirtschaft",
"employer_name": "Beispiel GmbH",
"tax_class": "1",
"net_income": 3500,
"schufa_entry": "False",
"preferred_loan_amount": 5000,
"preferred_loan_duration": 36,
"loan_purpose": "Privatkredit"
}
Fehlercodes
Achtung: Es gibt Fälle, in denen HTTP 200 zurückgegeben wird, der Request aber trotzdem nicht valide ist — z.B. bei ungültigem Token (200: "Not allowed").
200 "Not allowed"Ungültiger Token — beim Account Manager prüfen.
400 Bad RequestFehler in den übergebenen Daten. Details im Feld reason.
404 Not FoundDie angeforderte Ressource wurde nicht gefunden.
500 Internal Server ErrorUnerwarteter Serverfehler.