---
name: s39-settlements-vs-gl-export
scenario: S39
description: Distinguer les mouvements de trésorerie clearés (settlements) du workflow d'export GL (bookkeepingStatus sur payables) — deux pipelines indépendants
tags: [settlements, GL-export, bank-reconciliation, bookkeeping, finance]
when_to_use: Quand un comptable veut soit réconcilier les mouvements bancaires (→ settlements), soit préparer l'export ERP (→ payables bookkeepingStatus)
risk: P0 — Confondre settlement.state=exported avec payable.bookkeepingStatus=exported aboutit à des conclusions erronées sur l'état comptable réel
---

# Instructions — Settlements vs Export GL : deux workflows distincts

## ⚠️ Règle fondamentale

Il existe **deux workflows d'export indépendants** dans Spendesk :

| Workflow | Objet | Outil | Quand l'utiliser |
|----------|-------|-------|-----------------|
| **Cash clearance** | Movements de trésorerie (transactions carte + virements) | `get_settlements` | Réconciliation bancaire |
| **Export GL** | Factures/dépenses à enregistrer en comptabilité | `get_payables` + `bookkeepingStatus` | Export ERP |

Un settlement `state=exported` = ce mouvement cash a été exporté vers un système comptable.
Un payable `bookkeepingStatus=exported` = cette facture/dépense a été exportée vers l'ERP.
**Ces deux exports sont indépendants** — un settlement peut être exporté sans que la payable liée le soit, et vice versa.

## Cas d'usage 1 — Réconciliation bancaire (use settlements)

### Étape 1

Appelle `get_settlements` avec :
```json
{
  "companyId": "...",
  "clearedFrom": "YYYY-MM-DDT00:00:00.000Z",
  "clearedTo": "YYYY-MM-DDT23:59:59.999Z",
  "state": ["created"]
}
```
`state=created` = clearé dans Spendesk, pas encore exporté → ce qui reste à réconcilier.

### Étape 2 — Gestion des devises (CRITIQUE)

Chaque settlement est dans la devise de la transaction (`currency`), pas en devise fonctionnelle.
- Utiliser `billingAmount` (en `billingCurrency`, typiquement la devise fonctionnelle) pour les totaux
- **Ne jamais sommer `amount` cross-devises**

Exemple observé :
- Settlement carte USD : `amount=94.80 USD`, `billingAmount=81.57 EUR`
- Settlement virement GBP : `amount=34 530,67 GBP`, `billingAmount=40 089,14 EUR`
→ Sommer 94.80 + 34530.67 = sans sens. Sommer 81.57 + 40089.14 = 40 170,71 EUR ✅

### Étape 3

Pour chaque settlement, le champ `allocations[].payableId` permet de retrouver la payable liée via `get_payable_by_id`.

## Cas d'usage 2 — Export ERP / GL (use payables)

Pour préparer un export comptable, **ne pas utiliser les settlements** :

Appelle `get_payables` avec `bookkeepingStatus=["toExport"]`.

→ Voir skill `s10-factures-a-exporter-comptabilite`.

## États des settlements

| State | Signification |
|-------|---------------|
| `created` | Clearé dans Spendesk, pas encore exporté vers ERP |
| `exported` | Envoyé vers ERP (settlement record) |
| `failedToExport` | Tentative d'export échouée → à investiguer |

## Exemple de prompt

- "Quels mouvements bancaires ont été clearés en juin mais pas encore exportés ?" → `state=created`
- "Réconcilie les transactions carte de cette semaine" → `get_settlements` + `clearedFrom/To`
- "Prépare l'export comptable mensuel" → `get_payables` + `bookkeepingStatus=toExport`
