Solde wallet et allocations cartes

Compare le solde du wallet aux allocations des cartes virtuelles et physiques. Permet une réconciliation partielle des fonds distribués entre les différentes cartes.

↓ Télécharger le skill (.md)
81/100·📅 Hebdo·IntermédiaireCFOController
CartesRéconciliationget_wallet_summarylist_cards

🎯 But du skill

Compare le solde du wallet aux allocations des cartes virtuelles et physiques. Permet une réconciliation partielle des fonds distribués entre les différentes cartes.

📊 Ce que ça produit

Résumé du solde wallet, montants alloués aux cartes et écart de réconciliation par devise.

⚡ Bénéfice

Avant

Vérification manuelle dans plusieurs écrans Spendesk pour comparer le solde et les allocations.

Après

Vue consolidée wallet vs cartes en quelques secondes, sans navigation entre écrans.



# Instructions — Solde wallet et allocations cartes

## Format des montants : list_cards.availableBalance

Tous les tools MCP utilisent la convention `{ amount: int, precision }` où la valeur = `amount / 10^precision`.

**`list_cards` suit la même convention** — `availableBalance.amount` est un coefficient entier, avec `formatted` prêt à afficher :
```json
// list_cards — coefficient entier standard :
"availableBalance": { "amount": 9138, "currency": "EUR", "precision": 2, "formatted": "EUR 91.38" }
→ balance = 9 138 / 100 = 91,38 EUR

// get_wallet_summary — coefficient entier standard :
"totalAmount": { "amount": 33224769, "currency": "EUR", "precision": 2 }
→ balance = 33 224 769 / 100 = 332 247,69 EUR
```

→ Pour les balances de cartes, afficher `availableBalance.formatted` (ou calculer `amount / 10^precision`).

## ⚠️ Wallet disponible peut être négatif

`totalAvailableAmount` peut être **négatif** sur les comptes démo ou en cas de dépassement de virements programmés. C'est un état valide — interpréter comme "les allocations dépassent le solde actuel".

## ⚠️ allocatedOnCards ≠ somme des availableBalance des cartes actives

Ces deux métriques mesurent des choses différentes :
- `allocatedOnCards.totalAllocatedAmount` = montant réservé dans le wallet pour les cartes (limites de dépense réservées)
- `sum(card.availableBalance)` = montant résiduel que les titulaires peuvent encore dépenser

La différence = montant déjà consommé sur les cartes. Ce n'est **pas** une incohérence — c'est attendu.

## Étape 1 — Wallet snapshot (get_wallet_summary)

```json
{ "companyId": "..." }
```

Champs clés (tous en devise fonctionnelle) :
- `totalAmount` → solde brut du wallet (coefficient entier)
- `totalAvailableAmount` → disponible après toutes allocations (peut être négatif)
- `totalAllocatedAmount` = `allocatedOnCards.totalAllocatedAmount` + `scheduledTransfersAmount.totalScheduledTransferAmount`
- `allocatedOnCards.subscriptionAmount` → réservé sur cartes subscription
- `allocatedOnCards.physicalAmount` → réservé sur cartes physiques
- `allocatedOnCards.singlePurchaseAmount` → réservé sur cartes single-purchase
- `scheduledTransfersAmount.scheduledInvoicesAmount` → virements fournisseurs programmés

## Étape 2 — Cartes actives (list_cards)

```json
{ "companyId": "...", "status": "ACT", "pageSize": 100 }
```

Pour chaque carte active :
- `availableBalance` → solde disponible au format monétaire standard (afficher `formatted`, ou `amount / 10^precision`)
- `spendingLimit` → limite de dépense (peut être null pour les subscriptions sans limite fixe)
- `type` : libellé lisible ("Subscription card", "Physical card", "Single purchase card", "Multi-use card") ; les slugs `subscription | physical | single_purchase | multi_use` ne servent qu'au filtre d'entrée `type`
- `currency` → devise de la carte, toujours celle de l'entreprise ; seuls `request.amount` et `subscriptionBudget` peuvent être dans une autre devise (celle déclarée à la demande)

⚠️ Ne pas sommer des cartes en devises différentes.

## Étape 3 — Interpréter les résultats

Présenter comme suit :

```
Wallet SPENDESK (EUR) au 2026-07-06 :
  Solde total      : 332 247,69 EUR
  Disponible       : -511 590,51 EUR  ⚠️ (allocations > solde)
  Alloué cartes    : 491 808,95 EUR
    dont subscription : 402 288,42 EUR
    dont physiques    :  28 872,30 EUR
    dont single-use   :   4 601,63 EUR
  Virements programmés : 352 029,25 EUR

Cartes actives (ACT) : 2 cartes
  Subscription #7071 : 91,38 EUR disponible
  Subscription #5947 :  9,49 EUR disponible
```

## Exemple live (données réelles)

| Métrique | Valeur |
|----------|--------|
| Solde total | 332 247,69 EUR |
| Disponible | **-511 590,51 EUR** (négatif — test) |
| Alloué cartes | 491 808,95 EUR |
| Virements programmés | 352 029,25 EUR |
| Cartes ACT | 2 (subscriptions uniquement, ~101 EUR disponible) |

## Exemple de prompt

- "Quel est l'état du wallet ?" → get_wallet_summary uniquement
- "Combien reste-t-il sur les cartes actives ?" → list_cards status=ACT + sum availableBalance
- "Y a-t-il des virements programmés en attente ?" → wallet_summary.scheduledTransfersAmount

Comment installer ce skill

/
  1. 1
    Télécharger le fichier s03-wallet-summary-vs-cards.md via le bouton ci-dessus.
  2. 2
    Placer le fichier dans le répertoire .claude/ de votre projet (ou ~/.claude/ pour une installation globale).
    cp s03-wallet-summary-vs-cards.md .claude/s03-wallet-summary-vs-cards.md
  3. 3
    Utiliser dans Claude Code — le skill est automatiquement découvert. Décrivez votre besoin en langage naturel et Claude appliquera les instructions du skill.
💡 Assurez-vous que le MCP Spendesk est configuré dans votre .claude/settings.json avec les outils get_wallet_summary, list_cards.

Skills similaires

★ Top
95/100·🔍 Ponctuel·Expert

Auditer la couverture du MCP

Sonde tous les outils MCP disponibles, re-évalue la couverture des 50 cas d'usages persona, détecte les nouveaux champs ou outils, et régénère le rapport d'analyse des gaps.

CFOControllerAP Manager
90/100·📅 Hebdo·Débutant

Demandes de carte via get_requests

Explique comment utiliser get_requests pour les demandes de carte et pourquoi les remboursements de frais n'y apparaissent pas. Évite une source de confusion fréquente entre deux workflows distincts.

ControllerFinance Analyst
90/100·🔍 Ponctuel·Intermédiaire

Cost centers actifs vs archivés

Distingue les centres de coût actifs des archivés via le bon usage de get_cost_centers. Évite le piège de la convention de nommage isArchived vs isActive qui est contre-intuitive.

ControllerFinance Analyst

Interested in AI Agent services or Custom Integrations?