Introduction
The Leasing API enables dealers and TSPs to manage leasing offers for their vehicle listings programmatically. Its first endpoint introduces automatic leasing rate calculation: instead of entering rates manually, dealers request automatic leasing rates for an ad and the configured bank calculates them based on the vehicle data and the provided pricing parameters.
| Currently, dealers must have registered their banking credentials via the Dealer Area UI before using automatic leasing through the API. API-based onboarding will be addressed in a future version. |
| Response times for the automatic leasing endpoint are significantly higher than typical API endpoints. Rate calculation takes approximately 650 ms on average (up to ~1 second end-to-end). Plan your integration accordingly. |
Leasing API offers the following endpoints:
Access and Testing
Authentication and Authorization
The API is available at this base URL:
The Leasing API uses the same credentials as the Seller API. Authenticate with your existing Seller-API username and password using HTTP Basic authentication.
If you do not yet have API credentials, please contact the Customer Support for further details about the activation process.
For detailed information on HTTP Basic authentication see
API Sandbox
For testing purposes, an API sandbox environment is available. Interactive Swagger documentation is also available for exploring and testing the API.
Getting a Test Account
The API test account can be requested by email to service@team.mobile.de. The email should state that you request an API User account for the API Sandbox environment, including your project and requirements.
Media Types
The API uses JSON for all request and response bodies.
| Media type | HTTP header |
|---|---|
JSON request |
Content-Type: |
JSON response |
Accept: |
HTTP Header Fields
| HTTP header field | Possible values | Description |
|---|---|---|
Content-Type |
|
|
Accept |
|
|
Authorization |
Basic (base64 encode username:password) |
HTTP Basic credentials. Combine username and password with a colon (e.g., |
Swagger documentation
Swagger Production documentation:
-
In the 'Servers' section, choose https://services.mobile.de/leasing-api
-
Click on 'Authorize' button and enter your credentials
-
Test all the APIs
Swagger Sandbox documentation:
-
Open https://services.sandbox.mobile.de/leasing-api/openapi-docs
-
In the 'Servers' section, choose https://services.sandbox.mobile.de/leasing-api
-
Click on 'Authorize' button and enter your credentials
-
Test all the APIs
Automatic Leasing
Automatic leasing allows dealers to have leasing rates calculated for a vehicle listing without entering them manually. The configured bank calculates a matrix of rate variants across configured durations and mileages based on the vehicle data and the pricing parameters provided in the request.
| Only vehicles from makes supported by the configured bank can use automatic leasing. Currently only BMW Financial Services is supported (BMW and MINI makes). |
Dealers must have registered their banking credentials via the Dealer Area UI before using this endpoint. The endpoint returns 403 Forbidden if no valid banking credentials are on file.
|
Request Automatic Leasing Rates
Triggers automatic leasing rate calculation for a given ad. The resulting leasing offer is stored and accessible via the existing Seller API leasing retrieval endpoint (GET /seller-api/sellers/{mobileSellerId}/ads/{mobileAdId}/leasing).
Calling this endpoint multiple times for the same ad overwrites the existing rates.
Request
| Resource Path | Method | Content-Type | Response |
|---|---|---|---|
https://services.mobile.de/leasing-api/automatic-leasing/sellers/{mobileSellerId}/ads/{mobileAdId} |
POST |
application/vnd.de.mobile.api+json |
Path Parameters
| Parameter | Type | Description |
|---|---|---|
mobileSellerId |
Integer |
The mobile.de seller ID. |
mobileAdId |
Integer |
The mobile.de ad ID. |
Example request
POST /leasing-api/automatic-leasing/sellers/12345/ads/67890 HTTP/1.1 Host: services.mobile.de Content-Type: application/vnd.de.mobile.api+json Accept: application/vnd.de.mobile.api+json Authorization: Basic dXNlcjpwYXNz
{
"type": "PRIVATE",
"automaticLeasingSettings": {
"bank": "BMW",
"grossListPrice": 45000,
"destinationCharges": "895.00",
"registrationFees": "150.00",
"grossDiscount": "2000.00",
"grossPriceExtras": "1500.00"
},
"specialConditions": {
"EV_BONUS": {
"customDealerText": "Funding possible if you meet the requirements and comply with the minimum duration/holding period according to the e-car funding guidelines. No legal entitlement.",
"discount": "6000.00"
}
}
}
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
type |
String |
No |
Customer type: PRIVATE or COMMERCIAL. If omitted, rates are calculated for both types. |
automaticLeasingSettings |
Object |
Yes |
Pricing parameters for rate calculation. See automaticLeasingSettings Fields. |
specialConditions |
Object |
No |
Map of special condition identifiers to condition details. Uses the same schema as the existing manual leasing endpoint. |
automaticLeasingSettings Fields
| Field | Type | Required | Description |
|---|---|---|---|
bank |
String |
Yes |
The bank to calculate rates with. Currently only |
grossListPrice |
Integer |
Conditional |
Gross list price in whole euros. Required when |
grossSalesPrice |
Integer |
Conditional |
Gross sales price in whole euros. Required for all other used cars. |
destinationCharges |
String |
No |
Transfer fees in euros. Maximum: |
registrationFees |
String |
No |
Registration fees in euros. Maximum: |
grossDiscount |
String |
No |
Gross discount in euros. |
grossPriceExtras |
String |
No |
Gross price of extras in euros. |
Decimal monetary values are represented as JSON strings (e.g. "895.00") to avoid floating-point rounding errors. grossListPrice and grossSalesPrice are whole-euro integers.
|
Response
On success, the endpoint returns 201 Created with the calculated leasing offer. The Location header points to the Seller API retrieval endpoint for the created offer.
{
"grossListPrice": 45000,
"vatRate": "19.00",
"lender": "BMW Bank GmbH, Lilienthalallee 26, 80939 München",
"rates": [
{
"type": "PRIVATE",
"downPayment": 0,
"termOfContract": 36,
"annualMileage": 15000,
"grossRate": "499.00",
"totalAmount": "17964.00",
"annualPercentageRate": "3.99",
"nominalInterestRate": "3.91",
"netLoanAmount": "43000.00",
"extraMileageCosts": "0.09",
"lowMileageCompensation": "0.06"
}
],
"automaticLeasingSettings": {
"bank": "BMW",
"grossListPrice": 45000,
"destinationCharges": "895.00",
"registrationFees": "150.00",
"grossDiscount": "2000.00",
"grossPriceExtras": "1500.00"
}
}
Response Body Fields
| Field | Type | Description |
|---|---|---|
grossListPrice |
Integer |
Gross list price in whole euros. |
vatRate |
String |
VAT rate applied (e.g. "19.00"). |
lender |
String |
Name of the lending bank (e.g. "BMW Bank GmbH"). |
rates |
Array |
List of calculated rate variants. Each entry covers a specific customer type, contract duration, and annual mileage combination. See Rate Object Fields. |
specialConditions |
Object |
Special conditions echoed back from the request, if provided. |
automaticLeasingSettings |
Object |
Pricing parameters echoed back from the request. |
Rate Object Fields
| Field | Type | Description |
|---|---|---|
type |
String |
Customer type: PRIVATE or COMMERCIAL. |
downPayment |
Integer |
Down payment in euros. Always 0 for automatically calculated rates. |
termOfContract |
Integer |
Contract duration in months. Possible values: 6, 12, 18, 24, 27, 30, 33, 36, 42, 48, 54, 60, 72. |
annualMileage |
Integer |
Annual mileage in km/year. Possible values: 3000, 5000, 6000, 10000, 12000, 15000, 20000, 25000, 30000, 40000. |
grossRate |
String |
Monthly gross rate including VAT. Provided for PRIVATE rates. |
netRate |
String |
Monthly net rate excluding VAT. Provided for COMMERCIAL rates. |
totalAmount |
String |
Total amount payable over the contract term. |
netLoanAmount |
String |
Net loan amount (Nettodarlehnbetrag). |
annualPercentageRate |
String |
Effective annual interest rate (Effektiver Jahreszins). |
nominalInterestRate |
String |
Nominal annual interest rate (Sollzins p.a.). |
destinationCharges |
String |
Transfer fees included in the calculation. |
registrationFees |
String |
Registration fees included in the calculation. |
extraMileageCosts |
String |
Cost per km over the contracted mileage limit. |
lowMileageCompensation |
String |
Compensation per km under the contracted mileage limit. |
Response Status Codes
| Status | Description |
|---|---|
201 Created |
Automatic leasing rates calculated and stored successfully. |
400 Bad Request (automatic_leasing_ad_has_no_vin) |
The ad lacks a VIN, which is required for rate calculation. |
400 Bad Request (automatic_leasing_unsupported_make_for_bank) |
The ad’s make is not supported by BMW Financial Services. Only BMW and MINI are supported. |
400 Bad Request (leasing_ad_has_no_vat) |
The ad has no VAT, which is required for leasing. |
400 Bad Request (invalid-value) |
A request field contains an invalid value. |
403 Forbidden |
The API user is not authorized to manage this seller’s ads, or the dealer has no valid banking credentials (not onboarded via the Dealer Area UI). |
409 Conflict (leasing_overwrite_protection) |
A manually created leasing offer already exists for this ad. Delete it first before requesting automatic leasing rates. |
422 Unprocessable Entity (automatic_leasing_no_rates_available) |
BMW Financial Services has no rates available for this vehicle (e.g. unsupported model or configuration). |
Error Response Format
{
"errors": [
{
"key": "automatic_leasing_ad_has_no_vin",
"args": []
}
]
}
References
Resources Reference
This section contains a summary of all endpoints provided by the Leasing API.
|
All endpoints are available at the following base URL: Please refer to the Introduction section for information on how to access the API. |
| Name | Method | Endpoint | Body |
|---|---|---|---|
|
|
Support
Customer Support Contact
Please contact the Customer Support team if you need further assistance.
| Country | Contact Details |
|---|---|
Germany |
Phone: +49 (0) 30 81097500 or Contact Form |