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
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
This route is a web-session form (requires login and a CSRF token) — not a JSON bearer-token API call.
One-time charges are also accessible via the standard ExpenseCharge API endpoints.
Swagger / OpenAPI
Full API documentation available in Swagger UI: /api/v1/doc