> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lexio.rent/llms.txt
> Use this file to discover all available pages before exploring further.

# Montants et TVA

## Unités et devises

Un montant est un nombre JSON en **unités majeures** (euros, pas centimes) de la devise de sa ressource : `currency` d’une location, d’un devis ou d’un paiement, et pour le catalogue la devise de l’organisation (`currency` de `GET /organization`). Le nombre de décimales est l’exposant de la devise, `currencyExponent` de `GET /organization` :

| `currency` | Décimales (`currencyExponent`) | Plus petit montant |
| - | - | - |
| `EUR` | 2 | `0.01` |
| `XPF` | 0 | `1` |
| `CHF` | 2 | `0.01` |
| `CAD` | 2 | `0.01` |
| `GBP` | 2 | `0.01` |
| `USD` | 2 | `0.01` |
| `XOF` | 0 | `1` |

* Un montant envoyé hors de cette grille (`120.5` en `XOF`, `19.999` en `EUR`) répond `400` avec le code de champ `too_many_decimals`. Un montant saisi doit aussi être strictement positif, sauf mention contraire.
* Le serveur arrondit ses calculs à l’unité mineure la plus proche.
* Exception : un tarif unitaire (`overageRatePerKmHT`) a jusqu’à 4 décimales, hors de la grille de la devise.
* Calculez de votre côté en unités mineures entières (montant × 10^`currencyExponent`), pas en additionnant des nombres à virgule.

## Suffixes HT et TTC

| Nom du champ | Sens | Exemples |
| - | - | - |
| finit par `HT` | hors taxe | `totalHT`, `amountHT`, `unitPriceHT`, `overageRatePerKmHT` |
| finit par `TTC` | toutes taxes comprises | `totalTTC`, `amountTTC`, `expectedTotalTTC` |
| `vatAmount` | TVA de la ressource | |
| sans suffixe | somme hors du calcul de TVA : argent encaissé, caution, franchise | `amount` d’un paiement, `depositAmount`, `excessAmount`, `balance.dueAmount` |

Les prix du catalogue (tarifs journaliers, options, forfaits) sont hors taxe. `vatPercent` est le taux appliqué, en pourcentage (`20` pour 20 %).

## Totaux d’une location ou d’un devis

* `totalHT` + `vatAmount` = `totalTTC`, exactement.
* `lines` détaille le prix : la somme des `amountHT` vaut `totalHT`, celle des `amountTTC` vaut `totalTTC`. Une remise est une ligne négative ; `key` dit quelle règle a produit la ligne, `label` n’est qu’un libellé.
* La TVA est calculée sur l’ensemble puis répartie sur les lignes : lisez `amountTTC`, ne le recalculez pas ligne par ligne.
* Sur une ligne `OPTION`, `unitPriceHT` et `unitPriceTTC` sont le prix d’un exemplaire pour toute la période ; `quantity` multiplie.
* Les totaux font foi : sur de rares locations anciennes, la somme des lignes peut s’en écarter d’une unité mineure. Rapprochez sur `totalHT` et `totalTTC`.

## Reste à payer

`balance` compare le dû aux encaissements, en TTC :

| Champ | Sens |
| - | - |
| `balance.totalTTC` | montant exigible : `totalTTC`, ou `0` pour une location annulée |
| `balance.paidAmount` | net encaissé : paiements validés moins remboursements, caution exclue |
| `balance.dueAmount` | reste à payer |
| `balance.overpaidAmount` | trop-perçu |

Le `amount` d’un paiement est la somme réellement encaissée, dans la devise de la location. Un encaissement (`PAYMENT`) ne peut pas dépasser le reste à payer, prélèvement SEPA en cours déduit (`422 PAYMENT_EXCEEDS_DUE`).

## Caution, franchise et kilométrage

* **Caution** (`deposit.depositAmount`) : somme demandée en garantie, hors TVA, hors `totalTTC` et hors `balance`. Encaissement et restitution : voir [Cycle de vie d’une location](https://docs.lexio.rent/cycle-de-vie.md).
* **Franchise** (`deductible.excessAmount`) : reste à la charge du client en cas de sinistre. Ce montant n’est jamais facturé. Le prix de la franchise choisie (son rachat) est la ligne `DEDUCTIBLE` de `lines`, comprise dans le total.
* **Kilométrage** : `mileage.includedKm` est le nombre de kilomètres inclus pour toute la période, pas par jour ; `null` avec `isUnlimited` vrai. Au-delà, `overageRatePerKmHT` s’applique par kilomètre, hors taxe.

## Exonération et autoliquidation

* Un loueur exonéré de TVA (`isVatExempt` de `GET /organization`) facture à `vatPercent` `0`.
* Une location en autoliquidation (`isVatReverseCharge` vrai) est facturée sans TVA : `vatAmount` vaut `0` et `totalTTC` égale `totalHT`. La demande est refusée par `422 VAT_REVERSE_CHARGE_NOT_ALLOWED` quand le loueur ne la propose pas (`isVatReverseChargeAvailable` faux) ou quand le client n’a pas de numéro de TVA ; `reason` précise le cas. Elle est réservée aux clés internes, sur le devis comme sur la location (`400 not_applicable` pour une clé partenaire).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.