One-time Charges
Ad-hoc charges for non-recurring expenses: repairs, emergency services, one-off fees.
Overview
One-time charges allow landlords to create ad-hoc expense charges without configuring a separate PropertyExpense. Each property has a hidden "one-time" expense type that is auto-created.
Quick creation
No need to create PropertyExpense — just set date, amount, and description.
Auto-created expense type
The system automatically creates and manages the hidden one-time expense type per property.
Multi-currency
Each charge can use any currency. Automatic conversion on display.
Grouped view
All one-time charges are visible in a dedicated page, separate from recurring charges.
How it works
OneTimeChargeControllerUI for creating/viewing
↓
OneTimeExpenseServiceAuto-creates hidden expense type
↓
ExpenseChargeStandard charge record
Form Fields
| Field | Type | Required | Description |
|---|---|---|---|
| charge_date | date | * | Date when expense was incurred |
| period_start | date | * | Billing period start |
| period_end | date | * | Billing period end |
| amount | decimal | * | Charge amount (positive number) |
| currency_id | integer | * | Currency ID |
| notes | text | Description visible to tenant |
Access Control
| Role | Create | View |
|---|---|---|
| PROPERTY_LANDLORD | ||
| PROPERTY_LANDLORD_AGENT | ||
| PROPERTY_TENANT | ||
| PROPERTY_TENANT_AGENT |
API Endpoints
Service layer note
GET /properties/{propertyId}/one-time-charges - List one-time charges
POST /properties/{propertyId}/one-time-charges/new - Create one-time charge
One-time charges are also accessible via the standard ExpenseCharge API endpoints.
Create Request Example
{
"charge_date": "2026-03-15",
"period_start": "2026-03-01",
"period_end": "2026-03-31",
"amount": "450.00",
"currency_id": 3,
"notes": "Заміна замка вхідних дверей"
}
Swagger / OpenAPI
Full API documentation available in Swagger UI: /api/v1/doc