# Rent Regulation

Understand how FairePlace handles French rent control (encadrement des loyers) and rent evolution decrees.

## Overview

In designated zones (**zones tendues**), French law restricts how much landlords can charge for rent. FairePlace automates these checks when creating or updating leases.

Two mechanisms apply:

| Mechanism | Law | Scope |
|-----------|-----|-------|
| **Encadrement des loyers** (rent cap) | Loi Alur / Loi Elan | Paris, Lyon, Lille, Montpellier, Bordeaux, and other designated cities |
| **Decret d'evolution des loyers** (rent evolution decree) | Annual decree | All zones tendues (~1,149 municipalities) |

## How rent caps work

In cities with rent caps, every rental unit has a reference rent per m² that depends on:
- **Location** (postal code / neighborhood)
- **Property type** (apartment, house)
- **Number of rooms**
- **Construction period**
- **Furnished vs unfurnished**

Three reference values are published annually:

| Value | Description | Lease field |
|-------|-------------|-------------|
| Loyer de reference | Median reference rent | `reference_rent_per_m2` |
| Loyer de reference majore | Maximum rent (+20%) | `reference_rent_increased_per_m2` |
| Loyer de reference minore | Minimum rent (-30%) | `reference_rent_decreased_per_m2` |

The rent must not exceed `reference_rent_increased_per_m2 × area` unless a **complement de loyer** (rent supplement) is justified.

## Check rent regulation for a location

Use the rent regulation check endpoint to determine which regulations apply:

```bash
curl -X POST https://api.faireplace.com/api/legislative-zones/rent-regulation/check \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"postal_code": "75011"}'
```

```json
{
  "data": [
    {
      "id": "zone-1122aabb-3344-5566-7788-99aabbccddee",
      "name": "Paris - Zone 1",
      "postal_codes": ["75001", "75002", "75003", "75004"],
      "is_zone_tendue": true,
      "has_rent_cap": true,
      "reference_rent_per_m2": 25.50,
      "reference_rent_increased_per_m2": 30.60,
      "reference_rent_decreased_per_m2": 17.85,
      "rent_evolution_decree": true,
      "irl_index": 145.47,
      "last_updated": "2026-01-15"
    }
  ]
}
```

## Lease validation

When creating a lease, FairePlace validates the rent against the zone's reference values:

```bash
curl -X POST https://api.faireplace.com/api/leases \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "estate_id": "<estate_uuid>",
    "lease_type_id": "<lease_type_uuid>",
    "rent_amount": 1500.00,
    "is_subject_to_reference_rent_cap": true,
    "reference_rent_per_m2": 25.50,
    "reference_rent_increased_per_m2": 30.60
  }'
```

### Validation error example

If the rent exceeds the cap:

```json
{
  "error": {
    "code": 422,
    "type": "RENT_CAP_EXCEEDED",
    "message": "Rent exceeds the maximum reference rent for this zone",
    "details": {
      "rent_amount": 1500.00,
      "max_allowed": 1377.00,
      "reference_rent_increased_per_m2": 30.60,
      "area": 45.0,
      "zone": "Paris - Zone 1"
    }
  }
}
```

## Rent evolution decree

In zones tendues, the rent for a new tenant cannot exceed the previous tenant's last rent, adjusted by the IRL index. This applies even in areas without rent caps.

FairePlace tracks:
- `base_rent_amount` — The previous rent (or initial rent for first lease)
- `revision_index_type` — `IRL` for residential leases
- `next_revision_date` — When the next annual revision is due

## IRL rent revision

Annual rent revisions use the IRL (Indice de Reference des Loyers) published by INSEE:

```
New rent = Previous rent × (New IRL / Previous IRL)
```

FairePlace calculates this automatically:

```bash
curl -X POST https://api.faireplace.com/api/leases/{lease_id}/revision \
  -H "Authorization: Bearer $API_KEY"
```

```json
{
  "previous_rent": 950.00,
  "previous_irl": 142.06,
  "new_irl": 145.47,
  "new_rent": 972.82,
  "revision_date": "2027-04-01",
  "next_revision_date": "2028-04-01"
}
```

## Legal references

FairePlace implements the following French regulations:

| Rule | Legal basis | What FairePlace does |
|------|------------|---------------------|
| **Encadrement des loyers** | Loi ALUR (Art. 17), Loi Elan (Art. 140) | Validates rent against reference rent per m² by zone |
| **IRL revision cap** | Art. 17-1 Loi 89-462 | Calculates maximum rent increase using INSEE IRL index |
| **Deposit limit** | Art. 22 Loi 89-462 | Enforces 1 month (unfurnished) or 2 months (furnished) maximum |
| **Zone tendue rules** | Décret n°2023-822 | Checks if postal code falls in a tight housing market zone |
| **Rent evolution decree** | Annual decree (zones tendues) | Limits re-rental rent to previous tenant's rent + IRL |
| **Notice period** | Art. 15 Loi 89-462 | 1 month in zone tendue, 3 months otherwise |
| **Recoverable charges** | Décret n°87-713 | Validates charge categories against the legal list |

### Key legal articles

- **Loi n°89-462 du 6 juillet 1989** — Fundamental law governing residential leases
- **Loi ALUR (2014)** — Introduced rent caps (encadrement des loyers) and standardized lease contracts
- **Loi Elan (2018)** — Extended rent caps experimentally to additional cities
- **Décret n°2023-822** — Updated list of municipalities in zone tendue
- **Décret n°87-713** — Exhaustive list of recoverable charges from tenants

> **Disclaimer:** FairePlace implements regulatory calculations based on published legal texts and official data sources (INSEE, prefectoral decrees). These automated checks assist in compliance but do not constitute legal advice. For specific situations, consult a qualified legal professional or your local ADIL (Agence Départementale d'Information sur le Logement).

## Complement de loyer (rent supplement)

If the property has exceptional characteristics (terrace, exceptional view, premium equipment), the rent can exceed the reference cap with a documented justification:

```bash
curl -X PATCH https://api.faireplace.com/api/leases/{lease_id} \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "rent_supplement": 200.00,
    "rent_supplement_justification": "Terrasse de 25m2 avec vue panoramique sur la Seine"
  }'
```

The supplement must be explicitly justified and appears as a separate line in the lease document.

---

## Related

- **[Rent Regulation & Rent Control](/compliance/legislative-zones)** — Full endpoint reference
- **[Lease Overview](/leases/overview)** — Lease lifecycle and compliance
- **[Energy Diagnosis](/compliance/energy-diagnosis)** — DPE requirements
- **[Leases API](/leases/leases)** — Full endpoint reference
