Home Library Calendar

Overview

The financial calendar shows aggregated daily summaries for all your properties. Instead of individual events, each day displays up to 4 compact indicators:

Income (Paid)

Green chip with an up chevron — total payments received on this day (rent and utilities together). Click the chip to see the individual payments.

Expenses (Charged)

Orange chip with a down chevron — total charges billed on this day: utilities, rent and penalties. Click the chip for a breakdown.

Events

Yellow chip with a round dot — count of non-financial events: counter readings, documents, contracts, violations. Click the chip to see the full list.

Cumulative Balance

Blue chip with a wallet icon — total outstanding debt as of end of day across all properties. Click the chip for a detailed breakdown by property, with separate utility and rental sections.

Balance Details

Clicking the balance chip (the blue one with a wallet icon) opens a detailed balance report for the selected date. The report is split into two sections:

Utility

Shows each property with: opening debt, charges added today, payments received today, and closing balance. Click the charges or payments amount to expand the individual documents with links.

Rental

Same structure as utilities but for rental charges. Rental payments are tracked separately based on payment-to-charge linking.

All amounts are automatically converted to your currency using current exchange rates.

Navigation

  • Use ‹ › arrows to navigate between months
  • Use month and year dropdowns for quick navigation
  • Switch between Month and List views
  • Click the filter icon to show/hide property filter for multi-property accounts

Mobile View

On narrow screens the month grid is replaced by a vertical list of days: every day of the month is listed with its full-width chips, and tapping a chip opens the day summary. The balance popup uses a compact card layout instead of a table.

API Endpoints

Calendar data is available through the REST API for integration with external systems.

GET /api/v1/calendar/events?start=2026-02-01&end=2026-03-01

Returns all calendar events for the authenticated user within a date range.

start — Start date (ISO 8601)
end — End date (ISO 8601)
property_id — Optional property filter
Response example
[
  {
    "id": "charge-42",
    "title": "14.27 €",
    "start": "2026-02-01",
    "allDay": true,
    "backgroundColor": "#e53935",
    "textColor": "#fff",
    "extendedProps": {
      "type": "charge_with_counter",
      "eventTypeName": "Expense Charge",
      "property": "My Apartment",
      "propertyId": 12,
      "amount": "14.27",
      "currency": "€",
      "expenseTypeName": "Electricity",
      "url": "/properties/12/charges/42"
    }
  },
  {
    "id": "payment-15",
    "title": "500.00 €",
    "start": "2026-02-05",
    "allDay": true,
    "backgroundColor": "#27ae60",
    "textColor": "#fff",
    "extendedProps": {
      "type": "payment",
      "eventTypeName": "Payment",
      "property": "My Apartment",
      "propertyId": 12,
      "amount": "500.00",
      "currency": "€",
      "url": "/properties/12/payments/15"
    }
  }
]
GET /api/v1/calendar/event-types

Returns available event types with colors and icons.

Response example
[
  {"type": "charge_with_counter", "color": "#e53935", "label": "Expense Charge"},
  {"type": "rental_charge", "color": "#9c27b0", "label": "Rental Charge"},
  {"type": "payment", "color": "#27ae60", "label": "Payment"},
  {"type": "counter_reading_due", "color": "#ffa726", "label": "Reading Due"},
  {"type": "document", "color": "#7f8c8d", "label": "Document"}
]
GET /api/v1/calendar/daily-balances?start=2026-02-01&end=2026-02-28

Returns starting balance + daily deltas for computing running cumulative balance. All amounts in user currency.

Response example
{
  "startBalance": -28159.58,
  "dailyDeltas": {"2026-02-01": -656.43, "2026-02-02": 2282.16},
  "dayCharges": {"2026-02-01": 688.63},
  "dayPaid": {"2026-02-01": 32.20},
  "rangeStart": "2026-02-01",
  "rangeEnd": "2026-02-28",
  "currency": "€"
}
GET /api/v1/calendar/balance?date=2026-02-01

Detailed balance per property on a date: utilities and rental separately, with drill-down items (individual documents).

Response example
{
  "properties": [{
    "propertyName": "My Apartment",
    "utilityDebtBefore": 1338.51,
    "utilityChargedDay": 14.27,
    "utilityPaidDay": 10.40,
    "utilityDebt": 1342.38,
    "utilityDayItems": [
      {"label": "Electricity", "desc": "Monthly", "amount": 14.27, "url": "/properties/12/charges/42"}
    ],
    "rentalDebt": 486.18,
    "totalDebt": 1828.56
  }],
  "currency": "€"
}
GET /api/v1/calendar/charges?date=2026-02-01

Returns only charges (expense, rental, penalties) for a specific date.

Response example
[
  {
    "id": "charge-42",
    "title": "14.27 €",
    "start": "2026-02-01",
    "allDay": true,
    "backgroundColor": "#e53935",
    "textColor": "#fff",
    "extendedProps": {
      "type": "charge_with_counter",
      "eventTypeName": "Начисление расходов",
      "property": "Квартира на Хрещатику",
      "propertyId": 12,
      "amount": "14.27",
      "currency": "€",
      "expenseTypeName": "Электричество",
      "url": "/properties/12/charges/42"
    }
  },
  {
    "id": "rental-7",
    "title": "486.18 €",
    "start": "2026-02-01",
    "allDay": true,
    "backgroundColor": "#9c27b0",
    "textColor": "#fff",
    "extendedProps": {
      "type": "rental_charge",
      "eventTypeName": "Начисление аренды",
      "property": "Квартира на Хрещатику",
      "propertyId": 12,
      "amount": "486.18",
      "currency": "€",
      "url": "/properties/12/rental-charges/7"
    }
  }
]
GET /api/v1/calendar/payments?date=2026-02-01

Returns only payments (income, refunds, compensations) for a specific date.

Response example
[
  {
    "id": "payment-15",
    "title": "500.00 €",
    "start": "2026-02-01",
    "allDay": true,
    "backgroundColor": "#27ae60",
    "textColor": "#fff",
    "extendedProps": {
      "type": "payment",
      "eventTypeName": "Платёж",
      "property": "Квартира на Хрещатику",
      "propertyId": 12,
      "amount": "500.00",
      "currency": "€",
      "url": "/properties/12/payments/15"
    }
  },
  {
    "id": "compensation-3",
    "title": "50.00 €",
    "start": "2026-02-01",
    "allDay": true,
    "backgroundColor": "#16a085",
    "textColor": "#fff",
    "extendedProps": {
      "type": "repair_compensation",
      "eventTypeName": "Компенсация за ремонт",
      "property": "Квартира на Хрещатику",
      "propertyId": 12,
      "amount": "50.00",
      "currency": "€",
      "url": "/properties/12/repair-compensations/3"
    }
  }
]
GET /api/v1/calendar/properties

Returns properties available for calendar filtering.

Response example
[
  {"id": 12, "name": "My Apartment", "address": "Kyiv, Khreschatyk 1"},
  {"id": 14, "name": "Beach House", "address": "Odessa, Deribasovska 5"}
]