Service Provider Balance Adjustments
What are Service Provider Balance Adjustments?
Service Provider Balance Adjustments are a mechanism for correcting errors in settlements with utility service providers (electricity, gas, water, internet, etc.). Adjustments can be either positive (additional charge) or negative (debt reduction or compensation).
When is adjustment needed?
- Provider mistakenly charged more
- Underpayment discovered due to meter reading error
- Meter was malfunctioning and recalculation is needed
- Compensation provided for poor service quality
- Discount or bonus negotiated with provider
Adjustment Fields
Date on which the adjustment is made
Service provider for which the adjustment is made
Adjustment amount: negative for debt reduction (compensation), positive for additional charge
Currency of the adjustment amount
Description of the adjustment reason (optional field)
Link to specific expense (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
Fully confirmed by both parties
REST API
The API allows you to manage balance adjustments programmatically. Below are the available endpoints with request and response examples.
Service layer note
GET
/api/v1/properties/{id}/adjustments
Get list of all balance adjustments for property
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/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": "€"
},
"service_provider": {
"id": 3,
"name": "Electric Company"
},
"notes": "Overbilling correction",
"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}/adjustments
Create a new balance adjustment
Request Body
{
"adjustment_date": "2026-01-28",
"service_provider_id": 3,
"amount": -150.50,
"currency_id": 1,
"notes": "Overbilling correction for January",
"property_expense_id": 15,
"contract_id": 5
}
Example Response
{
"id": 1,
"message": "Adjustment created successfully"
}
GET
/api/v1/properties/{id}/adjustments/{aid}
Get detailed information about adjustment
Example Response
{
"id": 1,
"adjustment_date": "2026-01-28",
"amount": -150.50,
"currency": {
"id": 1,
"code": "EUR",
"symbol": "€"
},
"service_provider": {
"id": 3,
"name": "Electric Company"
},
"notes": "Overbilling correction",
"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",
"property_expense": {
"id": 15,
"name": "Electricity"
},
"contract": {
"id": 5,
"name": "Service Contract #5"
},
"documents": [
{
"id": 19,
"original_name": "invoice_correction.pdf",
"file_size": 245678,
"comment": "Corrected 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}/adjustments/{aid}
Update existing adjustment
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}/adjustments/{aid}
Delete adjustment
Example Response
{
"message": "Adjustment deleted successfully"
}
POST
/api/v1/properties/{id}/adjustments/{aid}/documents
Attach document to adjustment
Request Body
{
"document_id": 42,
"comment": "Invoice copy"
}
Example Response
{
"message": "Document attached successfully"
}
DELETE
/api/v1/properties/{id}/adjustments/{aid}/documents/{did}
Detach document from adjustment
Example Response
{
"message": "Document detached successfully"
}
POST
/api/v1/properties/{id}/adjustments/{aid}/confirm-landlord
Confirm adjustment as landlord
Example Response
{
"message": "Confirmed by landlord",
"status": "confirmed_by_landlord"
}
POST
/api/v1/properties/{id}/adjustments/{aid}/confirm-tenant
Confirm adjustment as tenant
Example Response
{
"message": "Confirmed by tenant",
"status": "fully_confirmed"
}
Usage Examples
Scenario 1: Electricity Overbilling
Electricity provider charged 200 EUR, but after verification it turned out it should be 150 EUR. Need to make adjustment for -50 EUR.
- Create adjustment with amount -50 EUR
- Specify provider "Electric Company" and attach supporting document
- Landlord confirms adjustment
- Tenant confirms adjustment - status becomes "Fully Confirmed"
Scenario 2: Compensation for Service Interruptions
Internet provider gave 30 EUR discount for network interruptions during the month.
- Create adjustment with amount -30 EUR
- Specify reason "Compensation for network interruptions"
- Confirm by both parties