Financing Request
The resource represents financing requests. Consumers can leave contact information and terms of financing. Financing requests are forwarded to random mortgage providers (based on a sophisticated algorithm).
POST /financing/construction/v2/contact/financingrequest
Request
POST https://rest.immobilienscout24.de/restapi/api/financing/construction/v2/contact/financingrequest
POST https://rest.sandbox-immobilienscout24.de/restapi/api/financing/construction/v2/contact/financingrequest
XML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
|
JSON:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
|
Body parameters
PARAMETER | DESCRIPTION | MANDATORY |
---|---|---|
contactRequest.financingTerms .geoCode | Geo code of the search region (e.g. 1276003001046 = Berlin-Mitte). When geo code is provided no postal code is needed | yes |
contactRequest.financingTerms .postalCode | Postal code of the search region. When postal code is provided no geo code is needed | yes |
contactRequest.financingTerms .amortizationRate | Tilgung p.a. in % | yes |
contactRequest.financingTerms .employment | CIVIL_SERVANT, EMPLOYED, FREELANCER, PENSIONER, SELFEMPLOYED, UNEMPLOYED, WORKER, HOUSEWIFE German translation (same order as above): Beamter, Angestellt, Freiberufler, Rentner, Selbstständig, Arbeitssuchend, Arbeiter/in, Hausfrau/mann |
yes |
contactRequest.financingTerms .employmentSector | MEDICAL | no |
contactRequest.financingTerms .fixedNominalInterestRate | FIVE_YEARS, TEN_YEARS, FIFTEEN_YEARS, TWENTY_YEARS, THIRTY_YEARS, FORTY_YEARS | yes |
contactRequest.financingTerms .financing | This object covers the details of the financing | no |
contactRequest.financingTerms .financing.type | BuildingFinancing (Finanzierung eines Neubaus), PurchaseFinancing (Finanzierung eines Kaufs), FollowupFinancing (Anschlussfinanzierung) for further information on FinancingType. | yes |
contactrequest.useType | OWNER_OCCUPATION, PARTIALLY_RENTING, RENTING, UNKNOWN | yes |
contactRequest.salutation | MR, MRS, UNKNOWN | no |
contactRequest.surname | Second name of the requester | yes |
contactRequest.forename | First name of the requester | yes |
contactRequest.email | Email address of the requester | yes |
contactRequest.phoneNumber | Phonenumber of the requester | yes |
contactRequest.message | Message of the requester | no |
contactRequest.contactChannel | TELEPHONE, MEETING_AT_PROVIDERS_PLACE, MEETING_AT_REQUESTERS_PLACE, EMAIL, UNKNOWN | yes |
contactRequest.availability | ALL_DAY, EIGHT_TO_TWELVE, TWELVE_TO_SIXTEEN, SIXTEEN_TO_NINETEEN, UNKNOWN, TEN_UNTIL_ELEVEN, ELEVEN_UNTIL_TWELVE, TWELVE_UNTIL_THIRTEEN, THIRTEEN_UNTIL_FOURTEEN, FOURTEEN_UNTIL_FIFTEEN, FIFTEEN_UNTIL_SIXTEEN, SIXTEEN_UNTIL_SEVENTEEN, SEVENTEEN_UNTIL_EIGHTEEN, EIGHTEEN_UNTIL_NINETEEN, NINETEEN_UNTIL_TWENTY, TWENTY_UNTIL_TWENTYONE | no |
contactRequest.bank | the main bank of the requester | no |
contactRequest.dateOfBirth | the date of birth of the requester | no |
contactRequest.numberOfBorrowers | number of borrowers exists | no |
contactRequest.currentCredits | sum of running credits of the requester | no |
contactRequest.kfwPromotion | requester is interested in KfW consulting | no |
**Address of the requester:** | ||
contactRequest.contactAddress .street | Street of the requester | no |
contactRequest.contactAddress .streetNumber | Street number of the requester | no |
contactRequest.contactAddress .postalCode | PostalCode of the requester | no |
contactRequest.contactAddress .location | Location of the requester | no |
**Expose Related fields:** | ||
contactRequest.exposeId | If contact request is related to an expose | no |
contactRequest.objectId | If contact request is related to an expose; it is the field realEstate.externalId returned by the ExposeAPI | no |
contactRequest.partnerTracking | If the contact request comes from a partner, this field should contain the id of the contact request on the partner's side | no |
contactRequest.netIncome | Net income of the requester | no |
contactRequest.netIncomeRange | BELOW_500, OVER_500_UPTO_1000, OVER_1000_UPTO_1500, OVER_1500_UPTO_2000, OVER_2000_UPTO_3000, OVER_2000_UPTO_2500, OVER_2500_UPTO_3000, OVER_3000_UPTO_4000, OVER_3000_UPTO_3500, OVER_3500_UPTO_4000, OVER_4000_UPTO_5000, OVER_5000 | no |
contactRequest.primaryAppointmentDate | First available date of the requester | no |
contactRequest.secondaryAppointmentDate | Second available date of the requester | no |
contactRequest.primaryAppointmentTime | ALL_DAY, EIGHT_TO_TWELVE, TWELVE_TO_SIXTEEN, SIXTEEN_TO_NINETEEN, UNKNOWN, TEN_UNTIL_ELEVEN, ELEVEN_UNTIL_TWELVE, TWELVE_UNTIL_THIRTEEN, THIRTEEN_UNTIL_FOURTEEN, FOURTEEN_UNTIL_FIFTEEN, FIFTEEN_UNTIL_SIXTEEN, SIXTEEN_UNTIL_SEVENTEEN, SEVENTEEN_UNTIL_EIGHTEEN, EIGHTEEN_UNTIL_NINETEEN, NINETEEN_UNTIL_TWENTY, TWENTY_UNTIL_TWENTYONE | no |
contactRequest.secondaryAppointmentTime | ALL_DAY, EIGHT_TO_TWELVE, TWELVE_TO_SIXTEEN, SIXTEEN_TO_NINETEEN, UNKNOWN, TEN_UNTIL_ELEVEN, ELEVEN_UNTIL_TWELVE, TWELVE_UNTIL_THIRTEEN, THIRTEEN_UNTIL_FOURTEEN, FOURTEEN_UNTIL_FIFTEEN, FIFTEEN_UNTIL_SIXTEEN, SIXTEEN_UNTIL_SEVENTEEN, SEVENTEEN_UNTIL_EIGHTEEN, EIGHTEEN_UNTIL_NINETEEN, NINETEEN_UNTIL_TWENTY, TWENTY_UNTIL_TWENTYONE | no |
contactRequest.dpaAccepted | Accepted the Data Processing Agreement | no |
contactRequest.arvatoScoringPermitted | Agree with sending data to Arvato to generate score | no |
contactRequest.borrowerRelationship | MARRIED, LIVING_TOGETHER, OTHER | no |
contactRequest.nationality | Nationality of the requester | no |
contactRequest.workContractType | LIMITED, PERMANENT, PROBATION | no |
contactRequest.workContractEndDate | When the requester's work contract ends | no |
contactRequest.numberOfChildren | Number of children the requester has | no |
contactRequest.maritalStatus | SINGLE, MARRIED, SEPARATED, DIVORCED, WIDOWED, PARTNERSHIP | no |
contactRequest.title | NO_TITLE, DOCTOR, PROFESSOR, PROFESSOR_DOCTOR | no |
contactRequest.experiments | Experiments in contact request | no |
**Income Related fields:** | ||
contactRequest.income.salary | Salary of the requester | no |
contactRequest.income.numberOfSalaries | Number of salaries per year | no |
contactRequest.income.alimony | An allowance for support made under court order to a divorced person by the former spouse | no |
contactRequest.income.pension | Pension or retirement payments received by the requester | no |
contactRequest.income.rental | Income from renting and/or leasing | no |
contactRequest.income.childBenefits | Child benefits received by the requester | no |
contactRequest.income.other | Amount of income coming from other sources | no |
**Spending Related fields:** | ||
contactRequest.spending.livingCost | Fixed cost of living of the requester | no |
contactRequest.spending.rent | Cost of rent of the requester | no |
contactRequest.spending.buildingSaving | Monthly building saving contributions | no |
contactRequest.spending.saving | Other regular monthly savings benefits | no |
contactRequest.spending.alimony | An allowance for support made under court order to a divorced person by the former spouse | no |
contactRequest.spending.healthInsurance | Health insurance costs of the requester | no |
contactRequest.spending.pensionInsurance | Monthly amounts for a private life insurance and/or pension insurance | no |
contactRequest.spending.creditRate | Monthly rate for loans | no |
contactRequest.spending.numberOfVehicles | Number of vehicles owned by the requester | no |
contactRequest.spending.other | Other fixed expenses of the requester | no |
**Second Borrower Related fields:** | ||
contactRequest.secondBorrower.firstName | First name of the second requester | yes |
contactRequest.secondBorrower.lastName | Last name of the second requester | yes |
contactRequest.secondBorrower.dateOfBirth | Date of birth of the second requester | yes |
contactRequest.secondBorrower.nationality | Nationality of the second requester | yes |
contactRequest.secondBorrower.employment | CIVIL_SERVANT, EMPLOYED, FREELANCER, PENSIONER, SELFEMPLOYED, UNEMPLOYED, WORKER, HOUSEWIFE | yes |
contactRequest.secondBorrower.workContractType | LIMITED, PERMANENT, PROBATION | no |
contactRequest.secondBorrower.workContractEndDate | When the second requester's work contract ends | no |
contactRequest.secondBorrower.maritalStatus | SINGLE, MARRIED, SEPARATED, DIVORCED, WIDOWED, PARTNERSHIP | yes |
**Second Borrower Income Related fields:** | ||
contactRequest.secondBorrower.income.salary | Salary of the second requester | no |
contactRequest.secondBorrower.income.numberOfSalaries | Number of salaries per year | no |
contactRequest.secondBorrower.income.alimony | An allowance for support made under court order to a divorced person by the former spouse | no |
contactRequest.secondBorrower.income.pension | Pension or retirement payments received by the second requester | no |
contactRequest.secondBorrower.income.rental | Income from renting and/or leasing | no |
contactRequest.secondBorrower.income.childBenefits | Child benefits received by the second requester | no |
contactRequest.secondBorrower.income.other | Amount of income coming from other sources | no |
**Second Borrower Spending Related fields:** | ||
contactRequest.secondBorrower.spending.livingCost | Fixed cost of living of the second requester | no |
contactRequest.secondBorrower.spending.rent | Cost of rent of the second requester | no |
contactRequest.secondBorrower.spending.buildingSaving | Monthly building saving contributions | no |
contactRequest.secondBorrower.spending.saving | Other regular monthly savings benefits | no |
contactRequest.secondBorrower.spending.alimony | An allowance for support made under court order to a divorced person by the former spouse | no |
contactRequest.secondBorrower.spending.healthInsurance | Health insurance costs of the second requester | no |
contactRequest.secondBorrower.spending.pensionInsurance | Monthly amounts for a private life insurance and/or pension insurance | no |
contactRequest.secondBorrower.spending.creditRate | Monthly rate for loans | no |
contactRequest.secondBorrower.spending.numberOfVehicles | Number of vehicles owned by the second requester | no |
contactRequest.secondBorrower.spending.other | Other fixed expenses of the second requester | no |
**Financing Object Related fields:** | ||
contactRequest.financingObject.street | Street of the financing object | yes |
contactRequest.financingObject.streetNumber | Street number of the financing object | yes |
contactRequest.financingObject.postalCode | Postal code of the financing object | yes |
contactRequest.financingObject.city | City of the financing object | yes |
contactRequest.financingObject.type | APARTMENT_BUY, HOUSE_BUY, LIVING_BUY_SITE | yes |
contactRequest.financingObject.subType | SINGLE_FAMILY_HOUSE, SEMIDETACHED_HOUSE, TERRACE_HOUSE, MULTI_FAMILY_HOUSE, HALF_BASEMENT, GROUND_FLOOR, APARTMENT, ROOF_STOREY, MAISONETTE, LOFT | no |
contactRequest.financingObject.livingArea | Living area of financing object | no |
contactRequest.financingObject.siteArea | Site area of financing object | no |
contactRequest.financingObject.constructionYear | Construction year of financing object | no |
contactRequest.financingObject.rooms | Number of rooms in financing object | no |
contactRequest.financingObject.hasLift | Whether the financing object has a lift | no |
contactRequest.financingObject.hasParking | Whether the financing object has parking places | no |
contactRequest.financingObject.hasStorage | Whether the financing object has storage | no |
contactRequest.financingObject.hasOutdoorArea | Whether the financing object has an outdoor area | no |
contactRequest.financingObject.lastModified | Last time the financing object was modified | no |
Financing types
financing.type = BuildingFinancing:
PARAMETER | VALUE | MANDATORY |
---|---|---|
contactrequest.financingTerms .financing.purchasePrice | purchase price of the object | yes |
contactrequest.financingTerms .financing.ownFunds | equity capital | yes |
contactrequest.financingTerms .financing.additionalCosts | side costs | yes |
contactrequest.financingTerms .financing.financingStart | NA, IN_LESS_THAN_THREE_MONTH, IN_BETWEEN_THREE_AND_SIX_ MONTHS, IN_MORE_THAN_SIX_MONTH | yes |
contactrequest.financingTerms .financing.projectState | NA, NOT_YET_IN_PLANNING, LAND_PROPERTY_EXISTS, LAND_PROPERTY_AND_COMPANY_ EXIST, PROPERTY_FOUND, NOTARY_APPOINTMENT_PLANNED, ON_BUILDER_SEARCH | yes |
financing.type = PurchaseFinancing:
PARAMETER | VALUE | MANDATORY |
---|---|---|
contactrequest.financingTerms .financing.purchasePrice | purchase prise of the object | yes |
contactrequest.financingTerms .financing.ownFunds | equity capital | yes |
contactrequest.financingTerms .financing.additionalCosts | side costs | yes |
contactrequest.financingTerms .financing.financingStart | NA, IN_LESS_THAN_THREE_MONTH, IN_BETWEEN_THREE_AND_SIX_ MONTHS, IN_MORE_THAN_SIX_MONTH | yes |
contactrequest.financingTerms .financing.projectState | NA, REAL_ESTATE_VISITED, REAL_ESTATE_NOT_YET_VISITED, PURCHASING_NEGOTIATIONS, OBJECT_FOUND, NOTARY_APPOINTMENT_PLANNED, ON_OBJECT_SEARCH | yes |
financing.type=FollowupFinancing:
PARAMETER | VALUE | MANDATORY |
---|---|---|
contactrequest.financingTerms .financing.propertyValue | property value | yes |
contactrequest.financingTerms .financing.remainingDebt | remaining debts | yes |
contactrequest.financingTerms .financing.financingStart | NA, IN_LESS_THAN_ONE_YEAR, IN_ONE_YEAR, IN_TWO_YEARS, IN_THREE_YEARS, IN_FOUR_YEARS, IN_FIVE_YEARS | yes |
Validation
The resource returns a list of validation errors as shown below. Each message has messageCode and a message field. If the error is connected to a certain field in the request the message object has two additional fields: parameterName and reason.
- parameterName: the path to field e.g. contactRequest.postalCode
- reason: why is this field wrong
1 2 3 4 5 6 7 8
{ "message": [{ "messageCode": "ERROR_COMMON_SCHEMA_VALIDATION_FAILED", "message": "The request is not schema valid. [Invalid parameter: parameterName=contactAddress.postalCode reason=The request is not schema valid. [postal code does not exists]]", "parameterName": "contactAddress.postalCode", "reason": "Invalid parameter: parameterName=contactAddress.postalCode reason=The request is not schema valid. [postal code does not exists]" }] }
Basic validation All required fields described above are validated if they exist. Besides that all fields in the request body must have the correct type (date, string, number).
Enum validation The following fields are matched to enum values. If the value can not be matched, a validation error is thrown with one of the follwing parameterNames:
- contactRequest.contactChannel
- contactRequest.salutation
- contactRequest.useType
- contactRequest.availability
- contactRequest.financingTerms.employment
- contactRequest.financingTerms.employmentSector
- contactRequest.financingTerms.fixedNominalInterestRate
- contactRequest.financingTerms.financing.projectState
- contactRequest.financingTerms.financing.type
- contactRequest.financingTerms.financing.financingStart
- contactRequest.netIncomeRange
- contactRequest.primaryAppointmentTime
- contactRequest.secondaryAppointmentTime
- contactRequest.borrowerRelationship
- contactRequest.workContractType
- contactRequest.maritalStatus
- contactRequest.title
- contactRequest.secondBorrower.employment
- contactRequest.secondBorrower.workContractType
- contactRequest.secondBorrower.maritalStatus
- contactRequest.financingObject.type
- contactRequest.financingObject.subType
Location Validation In the financingTerms object you need to provide either a valid geoCode or postalCode:
- If geoCode is not 13 digits long or if it does not exist: parameterName=contactRequest.financingTerms.geoCode
- If postalCode is no existing German postal code: parameterName=contactRequest.financingTerms.postalCode
- If both are missing: parameterName=location
Blacklisting We do some blacklist checks for most of the String fields. If a blacklist error occurs it is stated in the reason field of the message object. (e.g. " ... [SURNAME is blacklisted]"). The parameterName contains the path of the field, as described above.
Address Validation If you provide an address, it is validated the following way:
- all fields are required
- the postalCode must be an existing German postalCode
Phonenumber parameterName=contactRequest.phoneNumber
The phone number must be a digit. Besides that we use some advanced phonenumber parsing. But if the phone number really exists, you should not worry.
How to avoid the 15 min timeout
When the API user does not use the arvato/extended flow, there is a maximum 15 minute waiting time, until the requests get picked up by a task and are processed. This however can be avoided. When the POST request is made, the API returns an ID and a Token. These can be used to make a second request.
PUT /financing/construction/v2/contact/${ID}?token=${TOKEN}
with the body
1 2 3 |
|
This will make the financing request be processed immediately.