Skip to content

Landlords

The agency’s view of its landlords: master data, every tenure (which unit, which share, which commission, from when to when) and the statement builder that the landlord portal and the printed PDF use. Useful for an accounting export or a portfolio dashboard on the agency’s side.

A landlord who wants their own figures does not need the agency’s key: the Landlord API gives them a key bound to themselves.

Scope read:landlords.

{
"landlords": [
{
"id": "0188a…",
"name": "Hassan Al Mansoori",
"email": "hassan@example.com",
"phone": "+971 50 987 6543",
"locale": "en",
"commissionPct": null,
"units": [
{
"unitSlug": "marina-loft-2br",
"unitName": "Marina Loft · 2BR",
"sharePct": 100,
"commissionPct": 18,
"validFrom": "2024-03-01",
"validTo": null,
"current": true
},
{
"unitSlug": "jbr-studio-sea",
"unitName": "JBR Studio · Sea",
"sharePct": 100,
"commissionPct": null,
"validFrom": "2023-01-01",
"validTo": "2025-06-30",
"current": false
}
]
}
]
}
FieldNotes
commissionPct (landlord)Landlord-level agency fee override; null = the agency default applies
units[].commissionPctUnit-level override; null = inherit (landlord override → agency default). The fee that applies to a stay is resolved on the statement
units[].validFrom / validToThe tenure [validFrom, validTo); a sale closes one row and opens another for the buyer
units[].currentHeld today

Internal notes about a landlord are not returned.

Scope read:landlords. One landlord, same shape. 404 NOT_FOUND otherwise.

Scope read:landlords. The landlord’s statement for [from, to] — both dates inclusive, from ≤ to. Stays are attributed to the landlord whose tenure covers the arrival date.

Terminal window
curl "https://api.myrentalcalendar.com/partner/v1/landlords/0188a…/statement?from=2026-08-01&to=2026-08-31" \
-H "Authorization: Bearer $KEY"
{
"owner": { "id": "0188a…", "name": "Hassan Al Mansoori", "email": "hassan@example.com" },
"period": { "from": "2026-08-01", "to": "2026-08-31" },
"currency": "AED",
"units": [ { "id": "0190c…", "name": "Marina Loft · 2BR", "area": "Dubai Marina" } ],
"revenue": {
"lines": [
{
"bookingId": "0191a…", "unitId": "0190c…", "unitName": "Marina Loft · 2BR",
"arrival": "2026-08-10", "departure": "2026-08-17", "nights": 7, "source": "airbnb", "status": "closed",
"gross": 315000, "systemGross": 330000, "deviation": -15000,
"adjustments": [ { "kind": "discount", "label": "Returning guest", "amount": -15000, "reasonCategory": "loyalty", "promoId": null, "promoName": null } ],
"commissionPct": 18, "commissionAmount": 56700, "ownerShare": 258300
}
],
"byUnit": [ { "unitId": "0190c…", "unitName": "Marina Loft · 2BR", "bookings": 3, "nights": 19, "gross": 812000, "agencyFees": 146160, "ownerShare": 665840 } ]
},
"costs": {
"lines": [ { "costId": "…", "unitName": "Marina Loft · 2BR", "date": "2026-08-01", "category": "Electricity", "categoryGroup": "utilities", "label": "DEWA August", "recurrence": "monthly", "amount": 42000, "chargedTo": "owner", "origin": "unit", "source": "owner" } ],
"byCategory": [ { "category": "Electricity", "owner": 42000, "agency": 0 } ],
"ownerTotal": 42000,
"agencyCoveredTotal": 35000
},
"payouts": [ { "id": "…", "bookingId": "0191a…", "amount": 258300, "paidOn": "2026-08-25", "reference": "AUG-1" } ],
"kpis": { "cancellations": 1, "cancelledLostShare": 41000, "rejectedBookings": 0, "expiredHolds": 2, "requestsRejected": 1, "requestsUnanswered": 0, "complaints": 0, "ownerStays": 1, "ownerStayNights": 4 },
"totals": {
"gross": 812000, "agencyFees": 146160, "ownerShare": 665840,
"ownerCosts": 42000, "agencyCoveredCosts": 35000,
"netRent": 623840, "paidOut": 258300, "openBalance": 365540,
"deviationTotal": -15000, "discountsByCategory": { "loyalty": -15000 }, "campaigns": []
}
}

The shape is the statement engine’s own and may gain fields; the ones shown are stable. totals.openBalance = netRent − paidOut is the figure a landlord asks about. 400 VALIDATION when from is after to, 404 NOT_FOUND for an unknown landlord.