Description
The endpoint accepts user details as JSON in the request body and transfers them to the MyWage database. On success, it returns a user ID and session token. Errors in the provided data or system errors are returned with appropriate status codes and error messages.
Maximum flexibility: All parameters except token and email are optional. Fields not submitted will be collected from the user during the onboarding flow — fields already submitted will not be requested again.
Onboarding Targets
The endpoint supports four onboarding targets, configured via the partner token. Contact your account manager to request separate tokens for multiple targets.
👤 User Registration
Simple account creation. The user sets a password and gains access to the MyWage platform.
💸 Debt Counseling
Extends registration with an optional debt counseling application step.
🏦 Loan Application
Registration + loan application. Data is pre-filled in the application form if passed via API.
💶 Small Loan (Florin+ Kleinkredit)
Registration + small loan application. Amount up to €1,500, term 30 or 60 days.
Base URL
https://app.mywage.de/api/1.1/wf
Endpoint
POST https://app.mywage.de/api/1.1/wf/transfer_user
All parameters are sent as JSON in the request body.
Required Parameters
| Parameter | Type | Status | Description |
| token | string | Required | Your partner access token, provided by your MyWage account manager. |
| email | string | Required | The user's email address. |
Tracking & Flow Control
| Parameter | Type | Status | Description |
| partner_id | string | Optional | Unique identifier (e.g. a click ID) for granular attribution of successful applications to traffic sources. |
| channel | string | Optional | Free-text field to identify the traffic source (e.g. "website", "email", "test"). Useful when operating multiple channels. |
| registration_mode | string | Optional | Controls the post-registration flow:
default — Sends a link to account setup (password creation) to the user via email. Application is sent after.
direct — Sends a direct link to the application via email. Account setup after.
realtime — Like direct, plus: the link is also returned in the API response (for direct referral flows).
|
Personal Information
| Parameter | Type | Format / Values | Description |
| academic_title | string | "Dr.", "Dr. Dr.", "Prof.", "Prof. Dr.", "Prof. Dr. Dr." | Academic title. |
| first_name | string | 2–40 chars, no numbers | First name. |
| last_name | string | 2–40 chars, no numbers | Last name. |
| gender | string | "Männlich", "Weiblich", "Divers", "Keine Angabe" | Gender. |
| birthday | string | YYYY.MM.DD | Date of birth. Example: "1985.03.15" |
| place_of_birth | string | 2–40 chars, no numbers | City of birth. |
| nationality | string | ISO 3166-1 alpha-2 | User's nationality. Example: "DE" |
| family_status | string | "Ledig", "Verheiratet", "Geschieden", "Getrennt", "Verwitwet", "Eheähnliche Lebensgemeinschaft", "Eingetragene Lebenspartnerschaft" | Marital status. |
| number_of_children | integer | 0 – 6 | Number of dependent children. |
| iban | string | Valid IBAN format | User's IBAN. Example: "DE89370400440532013000" |
Address
| Parameter | Type | Format / Values | Description |
| street | string | 2–40 chars, first char not a number | Street name. |
| house_number | string | Max 11 chars, first char must be a number | House number. |
| postcode | string | 5 digits | Postal code. Example: "80331" |
| city | string | 2–40 chars, no numbers | City of residence. |
| living_situation | string | "Bei den Eltern", "Eigentum", "Miete", "Mietfrei", "Wohngemeinschaft" | Living situation. |
| living_at_current_address_since | string | YYYY.MM.DD | Date since living at current address. |
| is_property_owner | string | "True", "False" | Whether the user owns their home. |
| adults_in_household | string | "1", "2" (= 2 or more) | Number of adults in household. Must be passed as a string. |
| children_in_household | string | 0 – 6 | Number of children in household. |
| phone_number | string | E.164, German mobile | Mobile phone number. Example: "+4917634501234" |
Employment
| Parameter | Type | Format / Values | Description |
| 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 | Type of employment. |
| employer_name | string | 2–40 chars | Name of the employer. |
| employer_street | string | 2–40 chars | Street of the employer's address. |
| employer_house_number | string | Max 11 chars | House number of the employer. |
| employer_postcode | string | 5 digits | Postal code of the employer. |
| employer_city | string | 2–40 chars, no numbers | City of the employer. |
| working_at_current_job_since | string | YYYY.MM.DD | Start date at current employer. |
| is_in_probation_period | string | "True", "False" | Whether the user is in a probation period. |
| current_job_contract_is_limited_till | string | YYYY.MM.DD | End date of a fixed-term contract. Leave empty if permanent. |
| tax_class | string | "1" – "6" | German tax class. Must be passed as a string. |
| net_income | integer | > 0 | Monthly net income in EUR. |
Finances
| Parameter | Type | Range | Description |
| monthly_income_alimony | integer | 0 – 10,000 EUR | Monthly alimony income. |
| monthly_income_child_or_care_allowance | integer | 0 – 10,000 EUR | Monthly child or care allowance. |
| monthly_income_other | integer | 0 – 10,000 EUR | Other monthly income. |
| monthly_income_pension | integer | 0 – 10,000 EUR | Monthly pension income. |
| pension_start_date | string | YYYY.MM.DD | Start date of pension. |
| monthly_income_verifiable_additional | integer | 0 – 10,000 EUR | Verifiable additional monthly income. |
| date_since_income_verifiable_additional | string | YYYY.MM.DD | Start date of verifiable additional income. |
| monthly_rent | integer | 0 – 2,500 EUR | Monthly rent incl. utilities. 0 if owner-occupied. |
| monthly_expense_alimony | integer | 0 – 10,000 EUR | Monthly alimony expenses. |
| monthly_expense_health_insurance | integer | 0 – 10,000 EUR | Monthly health insurance expenses. |
| schufa_entry | string | "True", "False" | "True" if the user has a negative SCHUFA entry. Submit "False" if unknown. |
Loan Information
| Parameter | Type | Format / Values | Description |
| preferred_loan_amount | integer | 1,000 – 10,000 EUR | Desired loan amount. |
| preferred_loan_duration | integer | 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 84, 96, 108, 120 | Desired repayment duration in months. |
| loan_purpose | string | "Autokredit (Gebrauchtwagen bis 3 Jahre)", "Autokredit (Neuwagen)", "Dispo-Umschuldung", "Elektronik", "Immobilienkredit", "Kredit", "ohne SCHUFA", "Kreditumschuldung", "Möbel", "Privatkredit", "Ratenkredit", "Renovierung", "Umzug", "Urlaub", "zur freien Verfügung" | Purpose of the loan. |
Debt Information
| Parameter | Type | Description |
| total_debt | integer | Total outstanding debt in EUR. |
| total_monthly_debt_payment | integer | Total monthly debt repayment in EUR. |
| total_number_of_loans | integer | Total number of active loans. |
Small Loan (Florin+ Kleinkredit)
| Parameter | Type | Values | Description |
| small_loan_amount | integer | 100, 200, 400, 600, 800, 1,000, 1,250, 1,500 | Desired small loan amount in EUR. |
| small_loan_duration | integer | 30, 60 | Desired loan duration in days. |
Response
Success Response
{
"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 for registration_mode: realtime
Additionally contains a link field — a one-time direct link to the application that can be shown or forwarded to the user immediately.
{
"status": "success",
"response": {
"valid_steps": [...],
"errors": [],
"request_id": "XXX",
"link": "ONE_TIME_LINK_FOR_CUSTOMER",
"token": "bus|XXX|XXX",
"user_id": "XXX",
"expires": 86400
}
}
Response Fields
| Field | Type | Description |
| status | string | "success" if the request was processed. |
| valid_steps | array | List of data fields successfully validated and accepted. |
| errors | array | Fields with invalid format. Empty if all data was valid. |
| request_id | string | Unique identifier for this request. |
| token | string | Session token for the created user. Valid for expires seconds. |
| user_id | string | ID of the newly created user. |
| expires | integer | Token validity in seconds (typically 86400 = 24 hours). |
| link | string | Only with realtime mode: one-time direct link for the user. |
Examples
Minimal Request
curl -X POST https://app.mywage.de/api/1.1/wf/transfer_user \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "token": "your_partner_token"}'
Full 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,
"street": "Koppenplatz",
"house_number": "88",
"postcode": "10115",
"city": "Berlin",
"phone_number": "+4917666390000",
"email": "max@example.com",
"job_type": "Angestellter Privatwirtschaft",
"tax_class": "1",
"net_income": 3500,
"schufa_entry": "False",
"preferred_loan_amount": 5000,
"preferred_loan_duration": 36,
"loan_purpose": "Privatkredit"
}
Error Codes
Note: HTTP 200 can be returned even when the request is invalid — e.g. with an invalid token (200: "Not allowed").
200 "Not allowed"Invalid token — check with your account manager.
400 Bad RequestInvalid data. See reason field for details.
404 Not FoundThe requested resource was not found.
500 Internal Server ErrorAn unexpected error occurred on the server.