API-Dokumentation für den User-Transfer-Endpunkt.
POST /transfer_user
Erstellt einen neuen Nutzer auf der MyWage-Plattform und startet den gewünschten Onboarding-Flow. Fast alle Parameter außer token und email sind optional. Je mehr Daten übergeben werden, desto mehr wird im Onboarding vorausgefüllt und desto höher ist die Conversion-Rate.
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.
token und email sind optional. Nicht übermittelte Felder werden dem Nutzer im Onboarding-Flow abgefragt — bereits übermittelte Felder werden nicht erneut abgefragt.
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.
Einfache Kontoerstellung. Nutzer legt ein Passwort fest und erhält Zugang zur MyWage-Plattform.
Relevante Parameter: first_name, last_name, gender, birthday, address, phone_number
Erweiterung der Registrierung um einen optionalen Schuldenberatungs-Antrag.
Zusätzlich: net_income, number_of_children, total_debt, total_monthly_debt_payment, total_number_of_loans
Registrierung + Kreditantrag. Daten werden im Antragsformular vorausgefüllt.
Zusätzlich: net_income, preferred_loan_amount, preferred_loan_duration, loan_purpose, iban, u.v.m.
Registrierung + Florin+ Kleinkredit-Antrag. Betrag bis 1.500 €, Laufzeit 30 oder 60 Tage.
Zusätzlich: small_loan_amount, small_loan_duration
POST https://app.mywage.de/api/1.1/wf/transfer_user
Alle Parameter werden als JSON im Request-Body übergeben.
| Parameter | Typ | Status | Beschreibung |
|---|---|---|---|
token | string | Required | Partner-Zugriffstoken, vom MyWage Account Manager bereitgestellt. |
email | string | Required | E-Mail-Adresse des Nutzers. |
| 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).
|
| 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" |
| 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" |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
{
"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
}
}
registration_mode: realtimeEnthä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
}
}
| 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. |
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"
}'
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"
}
200: "Not allowed").reason.