Liste les cartes actives (status=ACT) avec leur solde disponible et résout les noms des propriétaires via list_cards + get_users

Liste les cartes actives avec leur solde disponible et le nom de leur propriétaire. Permet un suivi précis des cartes et des budgets alloués.

↓ Télécharger le skill (.md)
83/100·📅 Hebdo·DébutantCFOController
Carteslist_cards

🎯 But du skill

Liste les cartes actives avec leur solde disponible et le nom de leur propriétaire. Permet un suivi précis des cartes et des budgets alloués.

📊 Ce que ça produit

Inventaire des cartes actives avec nom du propriétaire en clair, solde disponible et plafond.

⚡ Bénéfice

Avant

Liste de cartes avec IDs utilisateurs non résolus — impossible à interpréter sans référentiel.

Après

Inventaire cartes complet avec noms, soldes et plafonds en clair, immédiatement exploitable.



# Instructions

## Use case

Lister les cartes actives avec leur solde disponible et identifier le propriétaire pour chaque carte.

## Appel de base

```json
{
  "companyId": "<COMPANY_ID>",
  "status": "ACT",
  "pageSize": 50
}
```

Note : contrairement à `get_purchase_orders.status` qui prend un **tableau**, `list_cards.status` prend une **string simple** (un seul statut à la fois).

## Lifecycle des cartes

```
PRE (pre-active) → ACT (active)
ACT → BLO (blocked)
BLO → REA (reactivated) → ACT
```

États terminaux (ne peuvent pas revenir actifs) : Lost, Stolen, Damaged, Expired, Cancelled, Aborted (codes `LOS`, `STO`, `DAM`, `EXP`, `CAN`, `ABO`). `list_cards` ne renvoie jamais les cartes Lost, Stolen, Damaged, Expired ou Cancelled : les récupérer par ID avec `get_card`.

Pour lister les cartes actives au sens large, cibler `ACT` et `REA` :
- `status: "ACT"` — actives
- `status: "REA"` — réactivées (après blocage)

## Montants — availableBalance suit le format monétaire standard (coefficient entier)

**Toutes les autres réponses Spendesk** retournent `amount` comme un coefficient entier :
`{ amount: 9138, precision: 2 }` → 91.38 EUR

**`list_cards.availableBalance` (et `spendingLimit`) suivent le même format `{ amount, currency, precision, formatted }` — afficher `formatted` tel quel :**
`{ amount: 9138, currency: "EUR", precision: 2, formatted: "EUR 91.38" }` → 91.38 EUR

→ Ne jamais afficher `availableBalance.amount` brut : utiliser `formatted`, ou `amount / 10^precision` pour calculer — le montant brut serait 100× trop grand.

```javascript
// CORRECT pour list_cards.availableBalance
const balance = card.availableBalance.amount / Math.pow(10, card.availableBalance.precision)  // 91.38 ; pour l'affichage : card.availableBalance.formatted

// CORRECT pour tous les autres tools (get_payables, etc.)
const amount = payable.amount.amount / Math.pow(10, payable.amount.precision)
```

## Structure de réponse

```json
{
  "id": "lfyzcn76rvd200",
  "type": "Subscription card",     // libellé : Single purchase card | Subscription card | Physical card | Multi-use card (les slugs ne servent qu'au filtre type)
  "status": "Active",              // libellé ; le filtre status accepte "Active" ou le code historique ACT
  "lastFourDigits": "7071",        // 4 chiffres, ou numéro masqué type "5577 * 9432" : lire le segment après le dernier espace ; null tant que la carte n'est pas émise ; le PAN complet n'est jamais retourné
  "expiryDate": "2030-04-30T23:59:59.000Z",
  "owner": { "id": "lywtbkp615b21t", "label": "Prénom Nom" },   // propriétaire : afficher label, utiliser id comme filtre userId
  "currency": "EUR",
  "availableBalance": { "amount": 9138, "currency": "EUR", "precision": 2, "formatted": "EUR 91.38" },
  "spendingLimit": null            // null sur les cartes subscription
}
```

## Piège — spendingLimit null sur les cartes subscription

`spendingLimit` est `null` pour les cartes `subscription` (confirmé S29 et S16). Le solde disponible se lit via `availableBalance` uniquement. `spendingLimit` est le budget mensuel de la carte (allocation rechargée chaque mois, pas un plafond à vie ni par transaction) ; il vaut `null` quand aucun budget mensuel n'est configuré, ce qui ne veut pas dire carte illimitée. Pour le budget d'une carte subscription, lire `subscriptionBudget`.

## Résoudre ownerId → nom de l'employé

`list_cards` retourne `owner` sous la forme `{ id, label }` : `label` est le nom du propriétaire, à afficher tel quel. `get_users` n'est utile que pour obtenir l'email (passer `owner.id` dans `ids`) :

```json
// get_users avec filtre par ID
{
  "companyId": "<COMPANY_ID>",
  "ids": ["lywtbkp615b21t", "autre_user_id"]
}
```

→ Retourne `{ firstName, lastName, email }` pour chaque userId. Construire un map userId → nom pour enrichir les cartes.

## Filtres disponibles

| Paramètre | Type | Description |
|-----------|------|-------------|
| `status` | string | Un seul statut : libellé exact sensible à la casse (ex. "Active", "Blocked") ou code historique (ACT, BLO, REA, PRE, NEW, CBL, CMD, ABO). EXP/CAN/LOS/STO/DAM renvoient une liste vide : `list_cards` ne retourne jamais ces cartes, passer par `get_card` |
| `type` | enum | single_purchase / subscription / physical / multi_use |
| `userId` | string | Filtrer par propriétaire |
| `createdAfter` | YYYY-MM-DD | Cartes créées après cette date |
| `createdBefore` | YYYY-MM-DD | Cartes créées avant cette date |

## Exemples de prompts utilisateurs

- "Quelles cartes virtuelles sont actives en ce moment avec leur solde disponible ?"
- "Y a-t-il des cartes avec un solde résiduel non utilisé ?"
- "Montre-moi les cartes actives de l'équipe Marketing"

Comment installer ce skill

/
  1. 1
    Télécharger le fichier s29-cartes-actives-solde.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 s29-cartes-actives-solde.md .claude/s29-cartes-actives-solde.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 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?