Главная › Настройка объекта › Типы расходов

8 Типы расходов

Объявите, какие типы расходов существуют на объекте и как они рассчитываются

Что такое типы расходов?

Типы расходов — это декларация всех затрат, связанных с объектом: что нужно оплачивать и как рассчитывается каждый платёж. Это шаблон настройки, а не фактические начисления или оплаты. Типы расходов принадлежат самому объекту, независимо от того, сдан он в аренду или свободен.

Чем точнее настроены расходы, тем лучше будут ваши договоры аренды и тем яснее финансовые отношения между арендодателем и арендатором.

Рабочий процесс: как это работает

Шаг 1: Создание типов расходов (шаблонов)

Сначала вы определяете типы повторяющихся расходов (шаблоны), такие как «Электричество», «Вода», «Отопление». Это категории, которые будут использоваться из месяца в месяц.

Пример: Создайте тип расходов "Электроэнергия" с периодом расчета "Ежемесячно", типом потребления "По счетчикам", удельной ценой 2,50 EUR/кВтч.

↓

Шаг 2: Создание начислений (фактических счетов)

После настройки типов расходов вы можете создавать начисления за определенные периоды. Начисление отражает фактическое потребление за данный месяц.

Пример: Для типа расходов "Электроэнергия" создайте счет за январь 2026 года: потреблено 350 кВт·ч × 2,50 евро = 875 евро.

Почему произошло это расставание?

Типы расходов определяют, КАК рассчитываются платежи (цена, период, формула). Платежи — это РЕЗУЛЬТАТЫ — фактические счета, отправляемые арендаторам. Такое разделение позволяет повторно использовать настройки типов расходов каждый месяц без повторного ввода всех данных.

Типы потребления

Фиксированный

Известная фиксированная сумма за расчётный период. Цена не зависит от потребления или показаний счётчиков.

Пример: Интернет, ОСМД, охрана

По счётчикам

Рассчитывается по показаниям счётчиков: потребление (текущее минус предыдущее показание) умноженное на цену за единицу. Расход должен быть привязан к одному или нескольким счётчикам.

Пример: Электроэнергия, холодная вода, газ

По факту

Ежемесячная сумма заранее неизвестна. Вы вводите реальную сумму каждый период после получения счёта от поставщика услуг.

Пример: Отопление, обслуживание дома, вывоз мусора

Фиксированная абонплата

Фиксированная ежемесячная сумма, независимая от фактического потребления. Арендатор платит одинаковую сумму каждый месяц независимо от того, сколько услуг было использовано.

Пример: Интернет 15 €/мес, независимо от объёма трафика.

Связь со счётчиками

Расходы по счётчикам привязаны к конкретным счётчикам, установленным на объекте. При создании начисления система берёт текущие и предыдущие показания, вычисляет потребление и умножает на настроенную цену за единицу. Многозонные тарифы (день/ночь или пик/полупик/ночь) имеют отдельные цены по зонам, и система рассчитывает каждую зону отдельно.

Периоды расчёта

Каждый расход имеет период расчёта, который определяет, как часто создаются начисления. Система может автоматически генерировать начисления по настроенному расписанию.

Вручную Начисления создаются вручную пользователем
Ежемесячно Одно начисление каждый месяц в настроенный день
Ежеквартально Одно начисление каждые 3 месяца
Раз в полгода Одно начисление каждые 6 месяцев
Ежегодно Одно начисление в год
День начисления День месяца (1-28), когда создаётся начисление. По умолчанию: 15.
Дни на оплату Количество дней на оплату после создания начисления. По умолчанию: 3.
Дни напоминания Количество дней до дедлайна, когда отправляется напоминание. По умолчанию: 3.

Создание начислений вручную

Для расходов с типом потребления "По факту" или периодом расчета "Вручную" вы можете создавать начисления вручную через страницу Начисления.

Когда использовать ручные начисления

  • Для расходов "По факту", где фактическая сумма меняется каждый период
  • Для расходов с периодом "Вручную", которые не должны автоматически генерироваться

Как создать

  1. Перейдите в Объекты → [Объект] → Начисления
  2. Нажмите синюю кнопку "Добавить начисление" (появляется только если у вас есть расходы, требующие ручных начислений)
  3. Выберите расход из модального окна (показывает тип расхода, поставщика и метод расчета)
  4. Заполните форму начисления: дата, период, сумма и примечания

Форма показывает информацию о расходе, включая поставщика и любые примечания из конфигурации расхода.

Мультивалютность

Каждый расход может использовать свою валюту. Например, один объект может иметь аренду в долларах, электроэнергию в местной валюте, а интернет в евро. Валюта устанавливается при настройке расхода и применяется ко всем начислениям, сгенерированным из него.

Поставщики услуг

Каждый расход может быть привязан к поставщику услуг — стороне, получающей оплату. Система поддерживает четыре типа поставщиков:

Поставщик услуг

Компании из глобального справочника — коммунальные предприятия, управляющие компании, интернет-провайдеры. Поиск по названию или коду ЕДРПОУ.

Собственный контрагент

Ваш личный справочник контрагентов с полными контактными и банковскими реквизитами — название, код ЕДРПОУ, IBAN, адрес.

Пользователь системы

Существующие пользователи платформы, которые могут получать оплаты — обслуживающий персонал, менеджеры недвижимости. Привязка по email.

Приглашение партнёра

Партнёры, приглашённые по электронной почте, которые ещё не зарегистрированы в системе. Автоматически отправляется приглашение на email.

Документы начислений

К каждому начислению можно прикрепить документы — счета, квитанции, подтверждения оплаты или любые другие файлы, связанные с начислением. Документы загружаются в защищённое S3 хранилище и доступны через HMAC-подписанные URL. Загрузка использует формат multipart/form-data.

file Бинарный файл для загрузки (PDF, JPG, PNG и т.д.). Обязательный.
document_type_id ID типа документа (напр. 1 = официальный документ, 2 = квитанция). Обязательный.
comment Необязательный текстовый комментарий с описанием документа.

Документы прикрепляются к конкретным начислениям (не к расходу). Сначала создайте или обновите начисление, затем загрузите к нему документы. Ограничения размера и типа файлов настраиваются для каждого типа документа.

Почему точная настройка важна

Настройка расходов — это основа всех финансовых операций. Точно объявленные расходы обеспечивают правильные договоры аренды, точные расчёты начислений, своевременные напоминания об оплате и прозрачные финансовые отчёты. Когда арендатор подписывает договор, он видит все расходы, связанные с объектом.

Что НЕ охватывает этот шаг
Этот шаг охватывает только настройку расходов — объявление, какие расходы существуют. Фактическое создание начислений, обработка платежей и генерация квитанций — это отдельные операции, которые происходят после настройки расходов и активации договора аренды.

Как добавить расходы

Расходы можно добавить через веб-интерфейс или через API. В веб-интерфейсе перейдите к любому объекту и откройте вкладку «Расходы».

Объект → Вкладка Расходы → Кнопка Добавить расход

Подробную документацию, включая API-эндпоинты и правила валидации, смотрите в разделе Расходы на недвижимость в Библиотеке.

Поля расхода

При создании расхода обязательны следующие поля:

expense_type_id Тип расхода (электроэнергия, газ, интернет и т.д.). Получите ID через GET /api/expense-types
calculation_period MANUAL, MONTHLY, QUARTERLY, SEMI_ANNUAL или ANNUAL
unit_price Цена за единицу строкой (например "4.3200"). Для фиксированных расходов — общая сумма
measurement_unit_id ID единицы измерения (кВт·ч, м3, шт и т.д.)
currency_id ID валюты для этого расхода
start_date Дата начала в формате YYYY-MM-DD

Необязательные поля

fixed_consumption Фиксированный объём потребления для расходов фиксированного типа (например "1.0000" для услуги с фиксированной ставкой)
end_date Дата окончания (необязательная). После этой даты начисления не создаются
counter_ids Массив ID счётчиков для привязки (для расходов по счётчикам). Счётчики должны принадлежать тому же объекту
zone_prices Объект зонных цен для многозонных тарифов: {"PEAK": "4.32", "HALF_PEAK": "3.24", "NIGHT": "2.16"}
service_provider_id ID поставщика услуг (из endpoint expense-providers)
account_number Номер лицевого счёта у поставщика услуг
charge_day День месяца (1-28) создания начисления. По умолчанию: 15
payment_days Дни на оплату после начисления. По умолчанию: 3
reminder_days Дни до дедлайна для отправки напоминания. По умолчанию: 3
notes Свободный комментарий (только текст, HTML очищается)

Для разработчиков: REST API

Все операции с расходами доступны через REST API. Требуется аутентификация через Bearer-токен.

GET Список расходов

▶

Возвращает все расходы объекта. Используйте active_only=true для фильтрации только активных расходов.

GET /api/v1/properties/{propertyId}/expenses

Фильтр только активных:

GET /api/v1/properties/{propertyId}/expenses?active_only=true

Ответ (200 OK):

{ "expenses": [ { "id": 1, "expense_type": {"id": 3, "code": "ELECTRICITY", "name_key": "expense_type.electricity"}, "calculation_period": "MONTHLY", "unit_price": "4.3200", "measurement_unit": {"id": 1, "symbol": "kWh", "name_key": "unit.kwh"}, "fixed_consumption": null, "currency": {"id": 1, "code": "UAH", "symbol": "\u20b4"}, "start_date": "2026-01-01", "end_date": null, "service_provider": {"id": 5, "name": "Energozbut"}, "account_number": "0123456789", "is_active": true, "has_charges": true, "can_delete": false, "notes": null, "charge_day": 15, "payment_days": 3, "reminder_days": 3, "counters": [ {"id": 4, "serial_number": "NIK-2281-073915", "tariff_type": "THREE_ZONE"} ], "zone_prices": {"PEAK": "4.32", "HALF_PEAK": "3.24", "NIGHT": "2.16"}, "created_at": "2026-01-01T00:00:00+00:00", "updated_at": "2026-02-15T10:30:00+00:00" }, { "id": 2, "expense_type": {"id": 15, "code": "INTERNET", "name_key": "expense_type.internet"}, "calculation_period": "MONTHLY", "unit_price": "500.0000", "measurement_unit": {"id": 5, "symbol": "unit", "name_key": "unit.unit"}, "fixed_consumption": "1.0000", "currency": {"id": 1, "code": "UAH", "symbol": "\u20b4"}, "start_date": "2026-01-01", "end_date": null, "service_provider": null, "account_number": null, "is_active": true, "has_charges": false, "can_delete": true, "notes": null, "charge_day": 1, "payment_days": 5, "reminder_days": 2, "created_at": "2026-01-01T00:00:00+00:00", "updated_at": "2026-01-01T00:00:00+00:00" } ], "total": 2 }

POST Создать расход

▶

Создаёт новый расход для объекта. Допускается только один расход каждого типа на объект.

POST /api/v1/properties/{propertyId}/expenses

Заголовки:

Authorization: Bearer {token} Content-Type: application/json

Фиксированный расход (например, Интернет):

{ "expense_type_id": 15, "calculation_period": "MONTHLY", "unit_price": "500.0000", "measurement_unit_id": 5, "fixed_consumption": "1.0000", "currency_id": 1, "start_date": "2026-01-01", "charge_day": 1, "payment_days": 5, "reminder_days": 2, "notes": "Fiber 100 Mbps" }

Расход по счётчику с зонными ценами (например, Электроэнергия):

{ "expense_type_id": 3, "calculation_period": "MONTHLY", "unit_price": "4.3200", "measurement_unit_id": 1, "currency_id": 1, "start_date": "2026-01-01", "counter_ids": [4], "zone_prices": { "PEAK": "4.32", "HALF_PEAK": "3.24", "NIGHT": "2.16" }, "service_provider_id": 5, "account_number": "0123456789" }

Расход по факту (например, Отопление):

{ "expense_type_id": 1, "calculation_period": "MONTHLY", "unit_price": "1.0000", "measurement_unit_id": 6, "currency_id": 1, "start_date": "2026-01-01", "charge_day": 20 }
Допускается только один расход каждого типа на объект. Попытка создать дубликат вернёт ошибку 400.

Ответ (201 Created):

{ "id": 3, "expense_type": {"id": 15, "code": "INTERNET", "name_key": "expense_type.internet"}, "calculation_period": "MONTHLY", "unit_price": "500.0000", "measurement_unit": {"id": 5, "symbol": "unit", "name_key": "unit.unit"}, "fixed_consumption": "1.0000", "currency": {"id": 1, "code": "UAH", "symbol": "\u20b4"}, "start_date": "2026-01-01", "end_date": null, "service_provider": null, "account_number": null, "is_active": true, "has_charges": false, "can_delete": true, "notes": "Fiber 100 Mbps", "charge_day": 1, "payment_days": 5, "reminder_days": 2, "created_at": "2026-02-22T10:00:00+00:00", "updated_at": "2026-02-22T10:00:00+00:00" }

GET Получить детали расхода

▶

Возвращает полные детали расхода, включая связанные счётчики, зонные цены и историю начислений.

GET /api/v1/properties/{propertyId}/expenses/{id}

Ответ (200 OK):

{ "id": 1, "expense_type": {"id": 3, "code": "ELECTRICITY", "name_key": "expense_type.electricity"}, "calculation_period": "MONTHLY", "unit_price": "4.3200", "measurement_unit": {"id": 1, "symbol": "kWh", "name_key": "unit.kwh"}, "fixed_consumption": null, "currency": {"id": 1, "code": "UAH", "symbol": "\u20b4"}, "start_date": "2026-01-01", "end_date": null, "service_provider": {"id": 5, "name": "Energozbut"}, "account_number": "0123456789", "is_active": true, "has_charges": true, "can_delete": false, "notes": null, "charge_day": 15, "payment_days": 3, "reminder_days": 3, "counters": [ {"id": 4, "serial_number": "NIK-2281-073915", "tariff_type": "THREE_ZONE"} ], "zone_prices": {"PEAK": "4.32", "HALF_PEAK": "3.24", "NIGHT": "2.16"}, "charges": [ { "id": 12, "charge_date": "2026-02-15", "period_start": "2026-02-01", "period_end": "2026-02-28", "quantity": "279.000", "amount": "1205.28", "source": "auto", "has_items": true } ], "total_charges": 1, "required_zones": ["PEAK", "HALF_PEAK", "NIGHT"], "created_at": "2026-01-01T00:00:00+00:00", "updated_at": "2026-02-15T10:30:00+00:00" }

PUT Обновить расход

▶

Частично обновляет расход. Включайте только поля, которые хотите изменить. Когда передаются counter_ids или zone_prices, они заменяют все существующие значения.

PUT /api/v1/properties/{propertyId}/expenses/{id}

Обновляемые поля (все необязательные):

unit_price string
calculation_period string
counter_ids array
zone_prices object
is_active boolean
charge_day integer (1-28)

Тело запроса:

{ "unit_price": "4.5600", "zone_prices": { "PEAK": "4.56", "HALF_PEAK": "3.42", "NIGHT": "2.28" }, "charge_day": 10 }

Ответ (200 OK):

{ "id": 1, "expense_type": {"id": 3, "code": "ELECTRICITY", "name_key": "expense_type.electricity"}, "calculation_period": "MONTHLY", "unit_price": "4.5600", "charge_day": 10, "zone_prices": {"PEAK": "4.56", "HALF_PEAK": "3.42", "NIGHT": "2.28"}, ... }

DELETE Удалить расход

▶

Удаляет расход. Возвращает 204 No Content при успехе.

DELETE /api/v1/properties/{propertyId}/expenses/{id}

Ответ (204 No Content)

Невозможно удалить расход, у которого есть существующие начисления. Вместо этого деактивируйте его через toggle-active или установив is_active в false через обновление.

POST Переключение активности

▶

Активирует или деактивирует расход. Деактивированные расходы не используются для автоматического создания начислений.

POST /api/v1/properties/{propertyId}/expenses/{id}/toggle-active

Ответ (200 OK):

{"id": 1, "is_active": false}

POST Обновить начисления для расхода

▶

Генерирует начисление для одного расхода, если его расчётный период завершился и начисления за текущий период не существует.

POST /api/v1/properties/{propertyId}/expenses/{id}/refresh

Ответ (200 OK):

{ "success": true, "charge_id": 15, "message": "Charge created for period 2026-02-01 - 2026-02-28" }
Работает только для активных расходов с автоматическим периодом. Ручные расходы не поддерживают автоматическое обновление.

POST Обновить все автоматические начисления

▶

Генерирует начисления для всех активных автоматических (не MANUAL) расходов объекта. Возвращает количество созданных, пропущенных и ошибочных начислений.

POST /api/v1/properties/{propertyId}/expenses/refresh-all

Ответ (200 OK):

{ "created": 3, "skipped": 2, "errors": 0 }

Документы в модуле «Расходы»

В модуле учета расходов есть два уровня, на которых можно прикреплять документы:

Зачем прикреплять документы к отчетам о расходах?

Документы по расходам позволяют хранить важные справочные материалы, относящиеся к самой конфигурации регулярных расходов, а не к отдельным начислениям. К ним относятся:

  • Договоры на оказание услуг с поставщиками коммунальных услуг или подрядчиками.
  • Тарифные сетки и ценовые соглашения
  • Долгосрочные договоры на оказание услуг (отопление, интернет, техническое обслуживание)
  • Руководства по эксплуатации оборудования или сертификаты установки

Эти документы остаются привязанными к конфигурации расходов и доступны для всех начислений, созданных на основе этих расходов. Для отдельных счетов-фактур или квитанций, относящихся к конкретному расчетному периоду, используйте вместо этого документы по начислениям.

Заряжать Конкретная запись в счете за определенный период (например, электроэнергия за январь). Счета-фактуры, квитанции и подтверждения оплаты прикрепляются здесь через API. Путь: /api/properties/{id}/charges/{chargeId}/documents
Расходы Определение повторяющихся расходов (например, «Электроэнергия, ежемесячно»). К самим расходам можно прикрепить документы, такие как договоры или тарифные планы. В настоящее время это управляется через веб-интерфейс; в будущем планируется разработка специального API.
Не путать с контрдокументами.
При подсчете показаний счетчиков к документам прикрепляются собственные файлы, управление которыми осуществляется через модуль «Счетчики». Приведенные ниже конечные точки предназначены исключительно для документов, связанных с расходами.

API для обработки платежных документов

Базовый путь: /api/properties/{propertyId}/charges/{chargeId}/documents. Платеж создается на основе расходов и представляет собой конкретный расчетный период. Прикрепленные здесь документы служат подтверждением оплаты или счетами-фактурами по данному платежу.

GET Список документов начисления

▶

Возвращает все документы, прикреплённые к конкретному начислению. Каждый документ содержит безопасную ссылку для скачивания, метаданные файла и необязательный комментарий.

GET /api/v1/properties/{propertyId}/charges/{chargeId}/documents

Ответ (200 OK):

{ "documents": [ { "id": 1, "document": { "id": 10, "original_name": "invoice_february.pdf", "file_url": "https://landlordkeeper.com/file/abc123hash", "mime_type": "application/pdf", "file_size": 245760, "document_type": { "id": 1, "code": "OFFICIAL_DOCUMENT", "name_key": "document_type.official_document" }, "created_at": "2026-02-15T10:30:00+00:00" }, "comment": "Electricity invoice for February 2026", "created_at": "2026-02-15T10:30:00+00:00" }, { "id": 2, "document": { "id": 11, "original_name": "receipt_scan.jpg", "file_url": "https://landlordkeeper.com/file/def456hash", "mime_type": "image/jpeg", "file_size": 128000, "document_type": { "id": 2, "code": "RECEIPT", "name_key": "document_type.receipt" }, "created_at": "2026-02-16T14:00:00+00:00" }, "comment": null, "created_at": "2026-02-16T14:00:00+00:00" } ], "total": 2 }

POST Загрузить документ начисления

▶

Загружает файл к начислению. Использует multipart/form-data (не JSON). Файл валидируется согласно ограничениям типа документа (допустимые расширения, максимальный размер) и сохраняется в S3.

POST /api/v1/properties/{propertyId}/charges/{chargeId}/documents

Заголовки:

Authorization: Bearer {token} Content-Type: multipart/form-data

Поля загрузки (multipart/form-data):

file Бинарный файл (PDF, JPG, PNG и т.д.). Обязательный. Валидируется по ограничениям типа документа.
document_type_id ID типа документа (целое число). Обязательный. Определяет допустимые расширения файлов и максимальный размер.
comment Необязательный текстовый комментарий (строка, nullable). Простой текст, HTML-теги удаляются.

Ответ (201 Created):

{ "id": 3, "document": { "id": 12, "original_name": "water_bill_march.pdf", "file_url": "https://landlordkeeper.com/file/ghi789hash", "mime_type": "application/pdf", "file_size": 184320, "document_type": { "id": 1, "code": "OFFICIAL_DOCUMENT", "name_key": "document_type.official_document" }, "created_at": "2026-02-22T12:00:00+00:00" }, "comment": "Water bill March 2026", "created_at": "2026-02-22T12:00:00+00:00" }

GET Детали документа

▶

Возвращает полные детали конкретного документа начисления, включая безопасную ссылку на файл, метаданные файла и комментарий.

GET /api/v1/properties/{propertyId}/charges/{chargeId}/documents/{id}

Ответ (200 OK):

{ "id": 1, "document": { "id": 10, "original_name": "invoice_february.pdf", "file_url": "https://landlordkeeper.com/file/abc123hash", "mime_type": "application/pdf", "file_size": 245760, "document_type": { "id": 1, "code": "OFFICIAL_DOCUMENT", "name_key": "document_type.official_document" }, "created_at": "2026-02-15T10:30:00+00:00" }, "comment": "Electricity invoice for February 2026", "created_at": "2026-02-15T10:30:00+00:00" }

PUT Обновить комментарий документа

▶

Обновляет комментарий документа начисления. Можно изменить только поле комментария. Отправьте JSON тело с новым значением комментария. Установите null чтобы удалить комментарий.

PUT /api/v1/properties/{propertyId}/charges/{chargeId}/documents/{id}

Тело запроса:

{ "comment": "Updated: electricity invoice Feb 2026 (paid)" }

Ответ (200 OK):

{ "id": 1, "document": { "id": 10, "original_name": "invoice_february.pdf", "file_url": "https://landlordkeeper.com/file/abc123hash", ... }, "comment": "Updated: electricity invoice Feb 2026 (paid)", "created_at": "2026-02-15T10:30:00+00:00" }

DELETE Удалить документ начисления

▶

Безвозвратно удаляет документ из начисления. Файл сначала удаляется из хранилища S3, затем удаляется запись из базы данных. Это действие нельзя отменить.

DELETE /api/v1/properties/{propertyId}/charges/{chargeId}/documents/{id}

Ответ (204 No Content)

Удаление документа безвозвратно удаляет файл из хранилища S3 и не может быть отменено. Убедитесь, что документ вам больше не нужен, прежде чем удалять.

Примеры cURL

▶

1. Фиксированный расход (например, Интернет)

curl -X POST https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/expenses \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{ "expense_type_id": 15, "calculation_period": "MONTHLY", "unit_price": "500.0000", "measurement_unit_id": 5, "fixed_consumption": "1.0000", "currency_id": 1, "start_date": "2026-01-01", "charge_day": 1 }'

2. Расход по счётчику с зонными ценами (например, Электроэнергия)

curl -X POST https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/expenses \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{ "expense_type_id": 3, "calculation_period": "MONTHLY", "unit_price": "4.3200", "measurement_unit_id": 1, "currency_id": 1, "start_date": "2026-01-01", "counter_ids": [4], "zone_prices": {"PEAK": "4.32", "HALF_PEAK": "3.24", "NIGHT": "2.16"}, "service_provider_id": 5, "account_number": "0123456789" }'

3. Список расходов

curl https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/expenses \ -H "Authorization: Bearer YOUR_TOKEN_HERE"

4. Обновить расход

curl -X PUT https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/expenses/1 \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{"unit_price": "4.5600", "charge_day": 10}'

5. Переключение активности

curl -X POST https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/expenses/1/toggle-active \ -H "Authorization: Bearer YOUR_TOKEN_HERE"

6. Обновить все автоматические начисления

curl -X POST https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/expenses/refresh-all \ -H "Authorization: Bearer YOUR_TOKEN_HERE"

7. Загрузить документ начисления

curl -X POST https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/charges/12/documents \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -F "file=@/path/to/invoice.pdf" \ -F "document_type_id=1" \ -F "comment=Electricity invoice February 2026"

8. Список документов начисления

curl https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/charges/12/documents \ -H "Authorization: Bearer YOUR_TOKEN_HERE"

9. Удалить документ начисления

curl -X DELETE https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/charges/12/documents/1 \ -H "Authorization: Bearer YOUR_TOKEN_HERE"
Замените YOUR_TOKEN_HERE на JWT-токен из шага аутентификации.

API документов типа затрат

Базовый путь: /api/properties/{propertyId}/expenses/{expenseId}/documents. Документы, прикреплённые к расходу (такие как соглашения с подрядчиками или тарифные расписания), управляются через эти конечные точки.

GET List Expense Documents

▶

GET /api/v1/properties/{propertyId}/expenses/{expenseId}/documents

Retrieve all documents attached to an expense.

Response (200 OK):

{ "documents": [...], "total": 2 }

POST Upload Expense Document

▶

POST /api/v1/properties/{propertyId}/expenses/{expenseId}/documents

Upload a new document to an expense (multipart/form-data).

Request Body (multipart/form-data):

file: (binary file) document_type_id: integer (required) comment: string (optional)

Response (201 Created):

{ "id": 3, "document": {...}, "comment": "..." }

GET Get Expense Document

▶

GET /api/v1/properties/{propertyId}/expenses/{expenseId}/documents/{id}

Retrieve details of a specific expense document.

PUT Update Expense Document

▶

PUT /api/v1/properties/{propertyId}/expenses/{expenseId}/documents/{id}

Update the comment of an expense document.

Request Body (application/json):

{ "comment": "Updated comment" }

DELETE Delete Expense Document

▶

DELETE /api/v1/properties/{propertyId}/expenses/{expenseId}/documents/{id}

Delete an expense document and its associated file from S3.

Response (204 No Content):

(empty)
Стартовые взаиморасчёты → Перейти к стартовым взаиморасчётам