---
name: s15-depenses-carte-seuil-montant
description: Filtrer les dépenses carte (achats physiques et virtuels) au-dessus d'un seuil de montant
tags: [payables, get_payables, carte, montant, seuil, singleCardPurchase, physicalCardPurchase, filtre-composé]
when_to_use: Quand l'utilisateur veut identifier les grosses dépenses carte, détecter des anomalies de montant, ou filtrer les achats significatifs au-dessus d'un seuil
---

# Dépenses carte au-dessus d'un seuil de montant

## Pattern : filtre composé AND [payableType + grossAmount]

Ce filtre composé **fonctionne correctement** dans `get_payables` (contrairement au filtre [payableType + bookkeepingStatus] — voir skill S11 pour le bug).

```json
{
  "companyId": "<companyId>",
  "filters": {
    "operator": "and",
    "subfilters": [
      {
        "field": "payableType",
        "operator": "=",
        "value": ["singleCardPurchase", "physicalCardPurchase"]
      },
      {
        "field": "grossAmount",
        "operator": ">",
        "value": 500
      }
    ]
  },
  "pageSize": 20
}
```

## ⚠️ Format du filtre grossAmount : valeur DÉCIMALE en EUR

- `value: 500` = 500 EUR — format décimal
- **Pas** `50000` (coefficient entier comme dans les champs `amount` de la réponse)
- Le filtre s'applique sur le `functionalAmount` (EUR) — les dépenses USD sont converties avant comparaison

| Filtre souhaité | Valeur correcte | Valeur incorrecte |
|-----------------|-----------------|-------------------|
| > 500 EUR | `value: 500` | `value: 50000` |
| > 1 000 EUR | `value: 1000` | `value: 100000` |
| > 2 500 EUR | `value: 2500` | `value: 250000` |

Rappel : dans la réponse, `amount.amount = 50000` avec `precision: 2` = 500 EUR.

## Types de payables cartes

| Type | Description |
|------|-------------|
| `singleCardPurchase` | Achat sur carte virtuelle à usage unique |
| `physicalCardPurchase` | Achat sur carte physique (paiement en magasin / terminal) |
| `subscriptionPurchase` | Achat récurrent sur carte de souscription |

→ Pour capturer TOUS les achats carte : inclure les 3 types dans `value`.

## Opérateurs disponibles sur grossAmount

| Opérateur | Signification |
|-----------|---------------|
| `>` | Strictement supérieur |
| `>=` | Supérieur ou égal |
| `<` | Strictement inférieur |
| `<=` | Inférieur ou égal |
| `=` | Égal exactement |

## spendingAmount ≠ amount (piège)

Sur les dépenses carte, `spendingAmount` est le **plafond de la carte**, pas le montant réellement dépensé :

```json
{
  "amount": { "amount": 329700, "currency": "EUR", "precision": 2 },        // 3 297 EUR réels
  "spendingAmount": { "amount": 450000, "currency": "EUR", "precision": 2 } // 4 500 EUR = plafond carte
}
```

→ Toujours utiliser `amount` (ou `functionalAmount` pour les multi-devises) pour analyser les montants dépensés.
→ `spendingAmount` = plafond autorisé — utile uniquement pour analyser l'utilisation des limites.

## Cas multi-devises

Les dépenses carte peuvent être en USD (ex : SaaS, abonnements étrangers) :

```json
{
  "currency": "USD",
  "functionalCurrency": "EUR",
  "functionalExchangeRate": 0.9295,
  "amount": { "amount": 98692, "currency": "USD", "precision": 2 },
  "functionalAmount": { "amount": 91827, "currency": "EUR", "precision": 2 }
}
```

→ Le filtre `grossAmount > 500` filtre sur `functionalAmount` (EUR) — une dépense de 900 USD = 837 EUR est donc incluse dans `grossAmount > 500`.

## Champs utiles pour analyser les résultats

| Champ | Utilisation |
|-------|-------------|
| `description` | Libellé de la dépense |
| `amount` / `functionalAmount` | Montant (devise locale / EUR) — coefficient / 10^precision |
| `counterparty.supplierId` | ID du fournisseur — résoudre avec `get_suppliers(ids=[...])` |
| `memberId` | ID de l'employé ayant fait la dépense |
| `creationDate` | Date de la dépense |
| `payableType` | Type de carte utilisée |
| `itemLines[].analyticalFieldAssociations` | Cost center, champs analytiques |

## Ajouter un filtre de période

```json
{
  "companyId": "<companyId>",
  "filters": {
    "operator": "and",
    "subfilters": [
      { "field": "payableType", "operator": "=", "value": ["singleCardPurchase", "physicalCardPurchase"] },
      { "field": "grossAmount", "operator": ">", "value": 1000 }
    ]
  },
  "fromDate": "2026-01-01",
  "toDate": "2026-06-30",
  "pageSize": 20
}
```

## Exemples de prompts

- "Liste les achats carte supérieurs à 1 000 EUR ce trimestre"
- "Quelles sont les dépenses carte physique au-dessus de 200 EUR en juin ?"
- "Identifie les achats exceptionnels (> 2 000 EUR) sur les 3 derniers mois"
- "Affiche toutes les dépenses carte virtuelle > 500 EUR du mois de mars"
