---
title: "Bulk end-of-lease charge regularization"
method: POST
path: "/leases/{lease_id}/charges/finalize"
tags: ["Leases"]
---

# Bulk end-of-lease charge regularization

`POST /leases/{lease_id}/charges/finalize`

## Request

- Base URL: `https://api.faireplace.com/api`
- URL: `https://api.faireplace.com/api/leases/{lease_id}/charges/finalize`
- Auth: HTTP bearer

Perform bulk regularization for all charges at lease end.

This is an atomic operation that creates a review and updates all charge amounts
in a single transaction. It compares provisional charges against actual expenses
and settles the difference for each charge.

## Path parameters

- `lease_id` string, uuid, required

## Request body

- object
  - `regularization_date` string, date, required: Date of the regularization, usually the lease end date.
  - `actual_amounts` object[], required: Actual amount per PROVISION charge. Note the field name: it is `actual_amounts`, not `charges`.
    - `charge_id` string, uuid, required
    - `actual_amount` number, required
  - `statement_sent_date` string, date, nullable: Date the charge statement was sent to the tenant. Article 23 gives them 30 days' notice, counted from this date.
  - `supporting_documents` object, nullable: Free-form JSON holding references to the supporting documents. The API stores it as-is and does not inspect it.
  - `notes` string, nullable: Notes about the bulk regularization.

## Response `200`

Bulk regularization performed successfully

- LeaseCharge[]
  - `id` string, uuid, required: Unique identifier of the charge
  - `lease_id` string, uuid, required: Lease ID
  - `service_place_id` string, uuid, nullable: Place service ID
  - `category_id` string, uuid, nullable: Charge category ID
  - `calculation_method` 'FORFAIT' | 'PROVISION' | 'DEPENSE_REELLE' | 'RELEVE_DIRECT', required: Charge billing mode to the tenant (provision/fixed/actual expense). **Compatibility rules:** - `CONSOMMATION_MESUREE` (distribution) requires `RELEVE_DIRECT` or `PROVISION` - `FORFAIT` requires `FORFAIT` as calculation basis - `DEPENSE_REELLE` requires `DEPENSE_REELLE` or a staff basis as calculation basis - `PROVISION` can be used with all calculation bases - The mode must be allowed for the lease type (`allow_provisional`, `allow_fixed`)
  - `calculation_basis` 'DEPENSE_REELLE' | 'FORFAIT' | 'PERSONNEL_75_POURCENT' | 'PERSONNEL_40_POURCENT' | 'PERSONNEL_100_POURCENT', required: Base de calcul d'une charge récupérable (art. 23-1). Les trois valeurs `PERSONNEL_…` s'écrivent avec un underscore après `PERSONNEL`, exactement comme en base: c'est la même orthographe partout.
  - `amount` number, required: Charge amount
  - `billing_period_start` string, date, nullable: Billing period start date
  - `billing_period_end` string, date, nullable: Billing period end date
  - `last_regularization_date` string, date, nullable: Last regularization date
  - `distribution_key_id` string, uuid, nullable: Distribution key ID
  - `notes` string, nullable: Notes about the charge
  - `created_at` string, date-time, required: Creation date
  - `updated_at` string, date-time, required: Last modification date
  - `energy_efficiency` EnergyEfficiencyContribution: Contribution for sharing energy savings (Energy Transition Act)
    - `id` string, uuid, required: Unique identifier
    - `lease_charge_id` string, uuid, required: Associated charge ID
    - `baseline_consumption` number, required: Consumption before works
    - `target_savings_percentage` number, required: Targeted savings percentage
    - `monthly_contribution_amount` number, required: Monthly contribution amount
    - `remaining_months` integer, required: Remaining duration in months
    - `work_description` string, required: Description of the completed works
    - `work_cost` number, nullable: Cost of works
    - `energy_audit_reference` string, nullable: Energy audit reference
    - `start_date` string, date, required: Contribution start date
    - `end_date` string, date, required: Contribution end date
    - `notes` string, nullable: Notes
    - `created_at` string, date-time, required: Creation date
    - `updated_at` string, date-time, required: Last modification date
  - `insurance` ColocatationInsurance: Insurance taken out by the landlord on behalf of co-tenants
    - `id` string, uuid, required: Unique identifier
    - `lease_charge_id` string, uuid, required: Associated charge ID
    - `contract_number` string, required: Insurance contract number
    - `insurance_company` string, required: Insurance company
    - `annual_premium` number, required: Annual premium
    - `recoverable_amount` number, required: Amount recoverable from tenants
    - `coverage_details` string, required: Coverage details
    - `policy_start_date` string, date, required: Policy start date
    - `policy_end_date` string, date, required: Policy end date
    - `deductible_amount` number, nullable: Deductible amount
    - `coverage_limits` object, nullable: Coverage limits (JSON)
    - `exclusions` string, nullable: Coverage exclusions
    - `notes` string, nullable: Notes
    - `created_at` string, date-time, required: Creation date
    - `updated_at` string, date-time, required: Last modification date

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `500`: Internal Server Error

---

[API](https://skmtc.dev/faireplace/apis/faireplace-property-management-api.md) · [All operations](https://skmtc.dev/faireplace/apis/faireplace-property-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/faireplace/apis/faireplace-property-management-api/revisions/69de39762919?raw)
