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.

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.

Relevante Parameter: first_name, last_name, gender, birthday, address, phone_number

💸 Debt Counseling

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

🏦 Loan Application

Registrierung + Kreditantrag. Daten werden im Antragsformular vorausgefüllt.

Zusätzlich: net_income, preferred_loan_amount, preferred_loan_duration, loan_purpose, iban, u.v.m.

💶 Small Loan (Kleinkredit)

Registrierung + Florin+ Kleinkredit-Antrag. Betrag bis 1.500 €, Laufzeit 30 oder 60 Tage.

Zusätzlich: small_loan_amount, small_loan_duration

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

ParameterTypStatusBeschreibung
tokenstringRequiredPartner-Zugriffstoken, vom MyWage Account Manager bereitgestellt.
emailstringRequiredE-Mail-Adresse des Nutzers.

Tracking & Flow-Steuerung

ParameterTypStatusBeschreibung
partner_idstringOptionalEindeutiger Bezeichner (z.B. Click-ID). Ermöglicht granulare Attribution erfolgreicher Anträge auf Traffic-Quellen.
channelstringOptionalFreitext-Feld zur Kennzeichnung der Traffic-Quelle (z.B. "website", "email", "test"). Nützlich bei mehreren Kanälen.
registration_modestringOptionalSteuert 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

ParameterTypFormat / WerteBeschreibung
academic_titlestring"Dr.", "Dr. Dr.", "Prof.", "Prof. Dr.", "Prof. Dr. Dr."Akademischer Titel.
first_namestring2–40 Zeichen, keine ZahlenVorname.
last_namestring2–40 Zeichen, keine ZahlenNachname.
genderstring"Männlich", "Weiblich", "Divers", "Keine Angabe"Geschlecht.
birthdaystringYYYY.MM.DDGeburtsdatum. Beispiel: "1985.03.15"
place_of_birthstring2–40 Zeichen, keine ZahlenGeburtsort.
nationalitystringISO 3166-1 alpha-2Staatsangehörigkeit. Beispiel: "DE"
family_statusstring"Ledig", "Verheiratet", "Geschieden", "Getrennt", "Verwitwet", "Eheähnliche Lebensgemeinschaft", "Eingetragene Lebenspartnerschaft"Familienstand.
number_of_childreninteger0 – 6Anzahl der abhängigen Kinder.
ibanstringGültiges IBAN-FormatIBAN des Nutzers. Beispiel: "DE89370400440532013000"

Adresse

ParameterTypFormat / WerteBeschreibung
streetstring2–40 Zeichen, erstes Zeichen darf keine Zahl seinStraßenname.
house_numberstringMax. 11 Zeichen, erstes Zeichen muss eine Zahl seinHausnummer.
postcodestring5 StellenPostleitzahl. Beispiel: "80331"
citystring2–40 Zeichen, keine ZahlenWohnort.
living_situationstring"Bei den Eltern", "Eigentum", "Miete", "Mietfrei", "Wohngemeinschaft"Wohnsituation.
living_at_current_address_sincestringYYYY.MM.DDDatum des Einzugs in die aktuelle Wohnung.
is_property_ownerstring"True", "False"Ob der Nutzer Eigentümer der Immobilie ist.
adults_in_householdstring"1", "2" (= 2 oder mehr)Anzahl Erwachsene im Haushalt. Muss als String übergeben werden.
children_in_householdstring0 – 6Anzahl Kinder im Haushalt.
phone_numberstringE.164, deutsches MobilnetzMobiltelefonnummer. Beispiel: "+4917634501234"

Beschäftigung

ParameterTypFormat / WerteBeschreibung
job_typestringArbeitslos, 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 DienstBeschäftigungsart.
employer_namestring2–40 ZeichenName des Arbeitgebers.
employer_streetstring2–40 Zeichen, kein Zahlen-AnfangStraße des Arbeitgebers.
employer_house_numberstringMax. 11 Zeichen, Zahlen-AnfangHausnummer des Arbeitgebers.
employer_postcodestring5 StellenPLZ des Arbeitgebers.
employer_citystring2–40 Zeichen, keine ZahlenStadt des Arbeitgebers.
working_at_current_job_sincestringYYYY.MM.DDBeschäftigt beim aktuellen Arbeitgeber seit.
is_in_probation_periodstring"True", "False"Probezeit aktiv.
current_job_contract_is_limited_tillstringYYYY.MM.DDEnde eines befristeten Vertrags. Leer lassen bei unbefristetem Vertrag.
tax_classstring"1" – "6"Steuerklasse. Muss als String übergeben werden.
net_incomeinteger> 0Monatliches Nettoeinkommen in EUR.

Finanzen

ParameterTypBereichBeschreibung
monthly_income_alimonyinteger0 – 10.000 EURMonatliche Unterhaltszahlungen (Einnahmen).
monthly_income_child_or_care_allowanceinteger0 – 10.000 EURMonatliches Kindergeld / Pflegegeld.
monthly_income_otherinteger0 – 10.000 EURSonstiges monatliches Einkommen.
monthly_income_pensioninteger0 – 10.000 EURMonatliche Rente.
pension_start_datestringYYYY.MM.DDRentenbeginn.
monthly_income_verifiable_additionalinteger0 – 10.000 EURNachweisbares Zusatzeinkommen monatlich.
date_since_income_verifiable_additionalstringYYYY.MM.DDBeginn des nachweisbaren Zusatzeinkommens.
monthly_rentinteger0 – 2.500 EURMonatliche Miete inkl. Nebenkosten. 0 bei Eigentum.
monthly_expense_alimonyinteger0 – 10.000 EURMonatliche Unterhaltszahlungen (Ausgaben).
monthly_expense_health_insuranceinteger0 – 10.000 EURMonatliche Krankenversicherungskosten.
schufa_entrystring"True", "False""True" bei negativem SCHUFA-Eintrag, sonst "False". Bei Unbekannt: "False" übergeben.

Kreditdaten

ParameterTypFormat / WerteBeschreibung
preferred_loan_amountinteger1.000 – 10.000 EURGewünschter Kreditbetrag.
preferred_loan_durationinteger12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 84, 96, 108, 120Gewünschte Laufzeit in Monaten.
loan_purposestring"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

ParameterTypBeschreibung
total_debtintegerGesamte ausstehende Schulden in EUR.
total_monthly_debt_paymentintegerGesamte monatliche Schuldentilgung in EUR.
total_number_of_loansintegerAnzahl aktiver Kredite.

Kleinkredit (Florin+ Kleinkredit)

ParameterTypWerteBeschreibung
small_loan_amountinteger100, 200, 400, 600, 800, 1.000, 1.250, 1.500Gewünschter Kleinkreditbetrag in EUR.
small_loan_durationinteger30, 60Gewü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

FeldTypBeschreibung
statusstring"success" wenn der Request verarbeitet wurde.
valid_stepsarrayListe der valide übermittelten Datenfelder.
errorsarrayListe der Felder mit ungültigem Format. Leer bei fehlerfreier Übermittlung.
request_idstringEindeutige ID dieser Anfrage.
tokenstringSession-Token des erstellten Nutzers. Gültig für expires Sekunden.
user_idstringID des neu angelegten Nutzers.
expiresintegerToken-Gültigkeit in Sekunden (typisch 86400 = 24 Std.).
linkstringNur 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.