Landlord-Tenant Balance Adjustments
What are Landlord-Tenant Balance Adjustments?
Landlord-Tenant Balance Adjustments are a mechanism for settling financial matters between parties to a rental agreement. Adjustments can be either positive (additional charge) or negative (debt reduction or compensation for work done, discounts).
When is adjustment needed?
- Rent correction by agreement between parties
- Partial use of deposit to cover expenses
- Compensation for property damage
- Refund of overpayment to tenant
- Goodwill discount or inconvenience compensation
Adjustment Fields
Date on which the adjustment is made
Landlord for whom the adjustment is made
Tenant for whom the adjustment is made
Adjustment amount: negative for tenant debt reduction (compensation, discount), positive for additional charge
Currency of the adjustment amount
Description of the adjustment reason (optional field)
Link to contract (optional field)
Adjustment Confirmation
Adjustments can be confirmed by both landlord and tenant. Full confirmation is obtained only after both parties confirm.
Confirmation Statuses
Awaiting confirmation from both parties
Confirmed by landlord, awaiting tenant confirmation
Confirmed by tenant, awaiting landlord confirmation
Confirmed by both parties
REST API
The module provides REST API for working with landlord-tenant adjustments. All endpoints require authorization via Bearer token.
Service layer note
GET
/api/v1/properties/{id}/lt-adjustments
Get list of all adjustments for a property with pagination support
Query Parameters
page(optional) - <code>page</code> — Page number (default: 1)limit(optional) - <code>limit</code> — Items per page (default: 20, max: 100)
Example Request
curl -X GET "https://landlordkeeper.com/api/v1/properties/1/lt-adjustments?page=1&limit=20" \
-H "Authorization: Bearer YOUR_TOKEN"
Example Response
{
"items": [
{
"id": 1,
"adjustment_date": "2026-01-28",
"amount": -150.50,
"currency": {
"id": 1,
"code": "EUR",
"symbol": "€"
},
"landlord": {
"id": 5,
"name": "John Landlord"
},
"tenant": {
"id": 8,
"name": "Jane Tenant"
},
"notes": "Rent correction for repairs",
"status": "fully_confirmed",
"is_confirmed_by_landlord": true,
"is_confirmed_by_tenant": true,
"documents_count": 2,
"created_at": "2026-01-28T10:30:00+00:00",
"created_by": {
"id": 5,
"name": "John Landlord"
}
}
],
"total": 1,
"page": 1,
"limit": 20
}
POST
/api/v1/properties/{id}/lt-adjustments
Create new balance adjustment between landlord and tenant
Request Body
{
"adjustment_date": "2026-01-28",
"landlord_id": 5,
"tenant_id": 8,
"amount": -150.50,
"currency_id": 1,
"notes": "Rent correction for tenant-completed repairs",
"contract_id": 5
}
Example Response
{
"id": 1,
"message": "Adjustment created successfully"
}
GET
/api/v1/properties/{id}/lt-adjustments/{aid}
Get detailed adjustment information with all related data
Example Response
{
"id": 1,
"adjustment_date": "2026-01-28",
"amount": -150.50,
"currency": {
"id": 1,
"code": "EUR",
"symbol": "€"
},
"landlord": {
"id": 5,
"name": "John Landlord"
},
"tenant": {
"id": 8,
"name": "Jane Tenant"
},
"notes": "Rent correction for repairs",
"status": "fully_confirmed",
"is_confirmed_by_landlord": true,
"landlord_confirmed_by": {
"id": 5,
"name": "John Landlord"
},
"landlord_confirmed_at": "2026-01-28T11:00:00+00:00",
"is_confirmed_by_tenant": true,
"tenant_confirmed_by": {
"id": 8,
"name": "Jane Tenant"
},
"tenant_confirmed_at": "2026-01-28T12:00:00+00:00",
"contract": {
"id": 5,
"name": "Contract #5"
},
"documents": [
{
"id": 19,
"original_name": "repair_receipt.pdf",
"file_size": 245678,
"comment": "Repair invoice",
"created_at": "2026-01-28T10:35:00+00:00"
}
],
"created_at": "2026-01-28T10:30:00+00:00",
"created_by": {
"id": 5,
"name": "John Landlord"
}
}
PUT
/api/v1/properties/{id}/lt-adjustments/{aid}
Update existing adjustment (only possible before full confirmation)
Request Body
{
"adjustment_date": "2026-01-29",
"amount": -180.00,
"notes": "Updated correction amount"
}
Example Response
{
"message": "Adjustment updated successfully"
}
DELETE
/api/v1/properties/{id}/lt-adjustments/{aid}
Delete adjustment (only possible before confirmation by any party)
Example Response
{
"message": "Adjustment deleted successfully"
}
POST
/api/v1/properties/{id}/lt-adjustments/{aid}/documents
Attach document to adjustment (receipts, acts, contracts)
Request Body
{
"document_id": 42,
"comment": "Repair receipt"
}
Example Response
{
"message": "Document attached successfully"
}
DELETE
/api/v1/properties/{id}/lt-adjustments/{aid}/documents/{did}
Detach document from adjustment
Example Response
{
"message": "Document detached successfully"
}
POST
/api/v1/properties/{id}/lt-adjustments/{aid}/confirm-landlord
Confirm adjustment on behalf of landlord
Example Response
{
"message": "Confirmed by landlord",
"status": "confirmed_by_landlord"
}
POST
/api/v1/properties/{id}/lt-adjustments/{aid}/confirm-tenant
Confirm adjustment on behalf of tenant
Example Response
{
"message": "Confirmed by tenant",
"status": "fully_confirmed"
}
Usage Examples
Scenario 1: Compensation for repairs done by tenant
Tenant performed minor repairs in the apartment at own expense after agreement with landlord.
- Create adjustment for -150 EUR (negative, reduces tenant debt)
- Attach photos of receipts and bills for construction materials
- Landlord confirms adjustment
- Tenant confirms adjustment - amount is automatically credited to future payments
Scenario 2: Discount for inconvenience during repairs
Major roof repairs were being done in the building, creating noise and inconvenience for tenant.
- Landlord creates adjustment for -200 EUR as compensation for 2 weeks of inconvenience
- Both parties confirm the adjustment
- Discount is automatically applied to next rent payment calculation