Skip to content

Statement, payouts, invoices

All three need landlord:read:finance.

The same statement your portal shows and the agency prints as PDF: revenue per stay with the agency fee, running costs, payouts, open balance, and the facts behind the numbers (cancellations, complaints, own use).

Query parameterRequiredMeaning
from / toyesInclusive period, from ≤ to
Terminal window
curl "https://api.myrentalcalendar.com/partner/v1/landlord/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…", "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": [ { "unitName": "Marina Loft · 2BR", "bookings": 3, "nights": 19, "gross": 812000, "agencyFees": 146160, "ownerShare": 665840 } ]
},
"costs": {
"lines": [ { "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": [ { "bookingId": "0191a…", "amount": 258300, "paidOn": "2026-08-25", "reference": "AUG-1" } ],
"kpis": { "cancellations": 1, "cancelledLostShare": 41000, "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": []
}
}

How to read it:

  • revenue.lines — one row per guest stay that arrived in the period and inside your tenure. gross is what the guest paid, systemGross what the engine proposed, deviation the difference; adjustments explain every deviation by category (a loyalty discount, a campaign), never by internal note.
  • commissionPct is the fee that applied to that stay; ownerShare = gross − commissionAmount.
  • costs — rows charged to you reduce your rent; rows the agency covers are listed for transparency and never do. Your own entries carry source: "owner".
  • totals.netRent = ownerShare − ownerCosts, and openBalance = netRent − paidOut is the figure you are asking about.

The shape may gain fields; the ones shown are stable. 400 VALIDATION when from is after to.

Every transfer the agency recorded to you, newest first, with the stay it settles.

Query parameterMeaning
from / toPaid on or after / on or before
{
"payouts": [
{ "id": "01932…", "bookingId": "0191a…", "unitSlug": "marina-loft-2br", "unitName": "Marina Loft · 2BR", "arrival": "2026-08-10", "departure": "2026-08-17", "amount": 258300, "currency": "AED", "paidOn": "2026-08-25", "reference": "AUG-1" }
]
}

The guest invoices the agency issued for stays inside your tenure — number, date, total, status. The list carries no guest billing data; the document itself stays with the agency, which is the legal issuer.

{
"invoices": [
{ "id": "0192e…", "number": "INV-2026-000412", "kind": "tax_invoice", "status": "issued", "issuedOn": "2026-08-09", "total": 315000, "currency": "AED", "bookingId": "0191a…", "unitSlug": "marina-loft-2br", "unitName": "Marina Loft · 2BR", "arrival": "2026-08-10", "departure": "2026-08-17" }
]
}