POST /transfer_user_dispatch

Legt einen neuen Nutzer an und stellt in Echtzeit einen Kreditkartenantrag. Anders als /transfer_user verarbeitet dieser Endpunkt den Antrag synchron — der Partner erhält die initiale Bankentscheidung direkt in der API-Antwort. Unterstützt ausschließlich das Onboarding-Ziel Florin+ Kreditkarte.

Beschreibung

Der Endpunkt übermittelt Nutzerdaten und gibt eine initiale Kreditentscheidung (application_state) synchron in der API-Antwort zurück — ohne dass der Nutzer zunächst eigene Eingaben macht.

Pflicht: Explizite Nutzereinwilligung
Da Nutzerdaten direkt an Novum Bank weitergegeben werden, muss vor dem API-Call eine explizite Einwilligung eingeholt werden. Zeitstempel und IP-Adresse der Zustimmung sind Pflichtparameter.

Unterschiede zu /transfer_user

Merkmal/transfer_user/transfer_user_dispatch
Onboarding-ZielRegistrierung, Schuldenberatung, Kreditantrag, KleinkreditFlorin+ Kreditkarte — ausschließlich
VerarbeitungNutzer erhält Link zum Vervollständigen (via E-Mail und/oder direkter Link)Echtzeit — Bankentscheidung in API-Antwort
BankentscheidungWird später via Postback zurückgegebenapplication_state sofort in Response
NutzereinwilligungStandard-AGBExplizite Einwilligung zur Datenweitergabe

Base URL

https://app.mywage.de/api/1.1/wf

Endpoint

POST https://app.mywage.de/api/1.1/wf/transfer_user_dispatch

Alle Parameter werden als JSON im Request-Body übergeben. Der Realtime-Request an die Partnerbank wird nur gesendet, wenn ein vollständiger Datensatz vorliegt.

Pflichtparameter

Der Endpunkt akzeptiert auch Anfragen mit fehlenden Pflichtfeldern (außer email und token), aber der Echtzeit-Request wird nur ausgeführt, wenn alle relevanten Felder vollständig übermittelt wurden.
ParameterTypFormatBeschreibung
emailstringE-Mail-Adresse des Nutzers.
tokenstringPartner-Zugriffstoken, vom MyWage Account Manager bereitgestellt. Der Token ist mit dem Onboarding-Ziel Kreditkarte verknüpft.
accepted_terms_timestampstringISO 8601Zeitstempel der Einwilligungserteilung. Beispiel: "2024-04-22T08:56Z"
accepted_terms_ipstringIPv4/IPv6IP-Adresse des Nutzers zum Zeitpunkt der Einwilligung. Beispiel: "192.168.0.1"

Persönliche Daten

ParameterTypFormat / WerteBeschreibung
first_namestringVorname.
last_namestringNachname.
genderstring"Männlich", "Weiblich", "Divers"Geschlecht.
birthdaystringYYYY.MM.DDGeburtsdatum. Beispiel: "1985.03.15"
place_of_birthstringGeburtsort.
nationalitystringISO 3166-1 alpha-2Staatsangehörigkeit. Beispiel: "DE"
family_statusstring"Ledig", "Verheiratet", "Geschieden", "Verwitwet", "Getrennt lebend"Familienstand.
schufa_entrystring"True", "False""True" bei negativem SCHUFA-Eintrag. Bei Unbekannt: "False" übergeben.

Adresse & Wohnsituation

ParameterTypFormat / WerteBeschreibung
streetstringStraßenname.
house_numberstringHausnummer.
postcodestring5 StellenPostleitzahl. Beispiel: "80331"
citystringWohnort.
phone_numberstringE.164Mobiltelefonnummer. Beispiel: "+4917634501234"
living_situationstring"Bei den Eltern", "Eigentum", "Miete", "Mietfrei", "Wohngemeinschaft"Wohnsituation.
living_at_current_address_sincestringYYYY.MM.DDEinzugsdatum aktuelle Adresse.
is_property_ownerstring"True", "False"Eigentümer der Immobilie.
adults_in_householdstring"1", "2"Erwachsene im Haushalt. "2" = 2 oder mehr. Als String übergeben.
children_in_householdstring0 – 6Kinder im Haushalt.

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 ZeichenStraße des Arbeitgebers.
employer_house_numberstringMax. 11 ZeichenHausnummer des Arbeitgebers.
employer_postcodestring5 StellenPLZ des Arbeitgebers.
employer_citystring2–40 ZeichenStadt 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.
tax_classstring"1" – "6"Steuerklasse (als String).
net_incomeinteger> 0Monatliches Nettoeinkommen in EUR.

Finanzen

ParameterTypBereichBeschreibung
monthly_income_alimonyinteger0 – 10.000 EURMonatliche Unterhaltszahlungen (Einnahmen).
monthly_income_child_or_care_allowanceinteger0 – 10.000 EURKindergeld / Pflegegeld monatlich.
monthly_income_otherinteger0 – 10.000 EURSonstiges monatliches Einkommen.
monthly_income_pensioninteger0 – 10.000 EURMonatliche Rente.
monthly_income_verifiable_additionalinteger0 – 10.000 EURNachweisbares Zusatzeinkommen monatlich.
monthly_rentinteger0 – 2.500 EURMonatliche Miete inkl. Nebenkosten.
monthly_expense_alimonyinteger0 – 10.000 EURMonatliche Unterhaltsausgaben.
monthly_expense_health_insuranceinteger0 – 10.000 EURMonatliche Krankenversicherungskosten.
total_debtintegerGesamte ausstehende Schulden in EUR.
total_monthly_debt_paymentintegerGesamte monatliche Schuldentilgung in EUR.
total_number_of_loansintegerAnzahl aktiver Kredite.

Tracking & Flow-Steuerung

ParameterTypBeschreibung
partner_idstringClick-ID für granulare Attribution.
channelstringTraffic-Quelle (z.B. "website", "email").
registration_modestringSteuert den Post-Registrierungs-Flow:

default — Link zur Kontoeinrichtung (Passwort-Vergabe) per E-Mail. Kreditkartenantrag danach.
direct — Direktlink zum Kreditkartenantrag per E-Mail. Kontoeinrichtung danach.
realtime — Wie direct, plus: Link kommt zusätzlich in der API-Response..

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",
      "nationality", "schufa entry", "novumbank"
    ],
    "errors": [],
    "request_id": "1774620800403x...",
    "application_state": "PRELIMINARY_APPROVED",
    "token": "bus|1774620799939x...|1774620799987x...",
    "user_id": "1774620799939x...",
    "expires": 86400
  }
}

Response-Felder

FeldTypBeschreibung
statusstring"success" wenn der Request verarbeitet wurde.
valid_stepsarrayListe valide übermittelter Datenfelder. Bei vollständigem Datensatz enthält die Liste auch "novumbank".
errorsarrayFelder mit ungültigem Format. Leer bei Erfolg.
request_idstringEindeutige Anfrage-ID.
application_statestringInitiale Kreditentscheidung. Siehe unten.
tokenstringSession-Token des erstellten Nutzers.
user_idstringID des neu angelegten Nutzers.
expiresintegerToken-Gültigkeit in Sekunden (typisch 86400).

application_state — Bankentscheidungen

WertBedeutung
PRELIMINARY_APPROVEDDer Antrag hat eine initiale Genehmigung erhalten. Die finale Bestätigung erfolgt später durch die Bank (nach z.B. Identitätsprüfung).
REJECTEDDer Antrag wurde von der Bank abgelehnt.
application_state wird nur zurückgegeben, wenn ein vollständiger Datensatz übermittelt wurde und der Echtzeit-Request ausgeführt werden konnte.

Beispiele

Minimaler Request

curl -X POST https://app.mywage.de/api/1.1/wf/transfer_user_dispatch \
  -H "Content-Type: application/json" \
  -d '{
    "email": "nutzer@example.com",
    "token": "ihr_partner_token",
    "accepted_terms_timestamp": "2024-04-22T08:56Z",
    "accepted_terms_ip": "192.168.0.1"
  }'

Vollständiger Request

curl -X POST https://app.mywage.de/api/1.1/wf/transfer_user_dispatch \
  -H "Content-Type: application/json" \
  -d '{
    "email": "anna.beispiel@example.com",
    "token": "ihr_partner_token",
    "accepted_terms_timestamp": "2024-04-22T08:56Z",
    "accepted_terms_ip": "192.168.0.1",

    "partner_id": "click_abc123",
    "channel": "website",
    "registration_mode": "direct",

    "first_name": "Anna",
    "last_name": "Beispiel",
    "gender": "Weiblich",
    "birthday": "1985.03.15",
    "place_of_birth": "München",
    "family_status": "Verheiratet",
    "job_type": "Angestellter Privatwirtschaft",

    "street": "Musterstrasse",
    "house_number": "42",
    "postcode": "80331",
    "city": "München",
    "phone_number": "+4917634501234",
    "nationality": "DE",
    "schufa_entry": "False",
    "net_income": 3500
  }'

Fehlercodes

Achtung: HTTP 200 kann auch bei ungültigem Token zurückgegeben werden (200: "Not allowed").
200 "Not allowed"Ungültiger Token — beim Account Manager prüfen.
400 Bad RequestFehlerhafte Daten. Details im Feld reason.