Lister les abonnements et leur coût

Liste et analyse tous les abonnements SaaS de l'entreprise via le filtre payableType=subscription. Permet d'identifier les abonnements actifs, leur coût total et leur récurrence.

CFOFinance AnalystProcurement📆 MensuelIntermédiaireLecture seule

Demandez-le comme ça

Quels sont nos abonnements et leur coût mensuel ?

Quand l'utiliser

Quand vous voulez voir les dépenses payées par carte d'abonnement et ce qu'elles coûtent.

Ce que ça produit

Inventaire des abonnements SaaS avec fournisseur, montant mensuel ou annuel et statut.

Comment ça se déroule

  1. 1Liste les dépenses payées par carte d'abonnement
  2. 2Distingue le montant payé de la devise d'origine
  3. 3Rattache chaque abonnement à son fournisseur
  4. 4Totalise le coût par fournisseur sur la période
  5. 5Signale les abonnements sans paiement récent

Ce qui vous protège

  • Ce skill ne fait que lire : il ne modifie rien dans Spendesk
  • Il agit avec vos permissions et votre rôle, jamais au-delà
  • L'assistant ne peut ni approuver ni payer
▸Détail technique83/100 · 2 outils
CartesAnalyse des dépensesget_payableslist_cards

# Abonnements SaaS — payableType=subscription

## Requête de base

```json
{
  "companyId": "<companyId>",
  "filters": {
    "field": "payableType",
    "operator": "=",
    "value": ["subscription"]
  },
  "pageSize": 20
}
```

→ `hasNextPage: true` si plus de 20 résultats — paginer avec le curseur pour tout récupérer.

## ⚠️ spendingAmount ≠ montant de l'abonnement

C'est le piège principal sur les subscriptions. `spendingAmount` est décrit par le serveur comme le montant dans la devise de la carte ; sur les abonnements il a été observé très supérieur au montant facturé, donc ne pas le traiter comme le montant facturé :

| Description | amount (réel) | spendingAmount (plafond carte) |
|-------------|---------------|---------------------------------|
| Google Apps subscription | 32,26 EUR | 4 500 EUR |
| Auto-recharge on Twilio | 14,65 EUR | 50 EUR |
| MessageBird | 27,36 EUR | 5 000 EUR |
| CRM 5 utilisateurs | 276,25 USD → 257 EUR | 400 USD |

→ **Ne JAMAIS sommer `spendingAmount`** pour calculer le coût total des abonnements — le résultat serait 10 à 200× supérieur à la réalité.
→ Toujours utiliser `amount` (devise locale) ou `functionalAmount` (EUR) pour les montants réels.

```json
// Bonne pratique
const totalEUR = payables.reduce((sum, p) => sum + p.functionalAmount.amount / Math.pow(10, p.functionalAmount.precision), 0)

// À ne pas faire
const totalFaux = payables.reduce((sum, p) => sum + p.spendingAmount.amount / ..., 0)  // peut être 100× trop élevé
```

## Devises : majorité en USD (SaaS internationaux)

Les abonnements SaaS sont majoritairement facturés en USD. Utiliser `functionalAmount` pour le total EUR :

```json
{
  "currency": "USD",
  "functionalCurrency": "EUR",
  "functionalExchangeRate": 0.9315,
  "amount": { "amount": 27625, "currency": "USD", "precision": 2 },
  "functionalAmount": { "amount": 25722, "currency": "EUR", "precision": 2 }
}
```

→ Sommer `functionalAmount` pour obtenir le total EUR consolidé toutes devises.

## Filtrer par période

Pour les abonnements d'une période donnée :

```json
{
  "companyId": "<companyId>",
  "filters": { "operator": "and", "subfilters": [
    { "field": "payableType", "operator": "=", "value": ["subscription"] },
    { "field": "payableDate", "operator": "between", "value": { "from": "2026-01-01T00:00:00.000Z", "to": "2026-06-30T23:59:59.999Z" } }
  ] },
  "pageSize": 20
}
```

## Lier abonnement → fournisseur

Chaque payable expose `counterparty.supplierId` (pas de nom) :

```json
{ "counterparty": { "type": "supplier", "supplierId": "S1mrHIIp" } }
```

→ `get_supplier_by_id("S1mrHIIp")` pour obtenir le nom (`legalName`), l'IBAN, le numéro de TVA.

## Analyse agrégée avec spendesk_analyze_spend

Pour un total rapidement groupé par fournisseur :

```json
{
  "companyId": "<companyId>",
  "fromDate": "2026-01-01",
  "toDate": "2026-06-30",
  "groupBy": ["supplier"],
  "filters": { "payableTypes": ["subscription"] }
}
```

`groupBy=supplier` retourne le nom du fournisseur dans `key` et son ID dans `id`. Les IDs bruts n'apparaissent dans `key` que si le token n'a pas le scope de lecture fournisseurs : `summary.limitations` le signale alors (type `unresolved-names`).

## Champs utiles

| Champ | Description |
|-------|-------------|
| `description` | Libellé de l'abonnement |
| `amount` / `functionalAmount` | Montant réel en devise locale / EUR (coefficient entier / 10^precision) |
| `spendingAmount` | Plafond de la carte — ne pas utiliser pour les totaux |
| `counterparty.supplierId` | ID du fournisseur SaaS |
| `currency` | Devise de facturation (souvent USD) |
| `functionalExchangeRate` | Taux de change appliqué |
| `creationDate` | Date du payable |
| `bookkeepingStatus` | Statut comptable (`exported`, `toExport`, `toPrepare`) |

## Exemples de prompts

- "Quels sont nos abonnements SaaS et leur coût mensuel ?"
- "Montre-moi le total dépensé en abonnements au premier trimestre"
- "Quels abonnements sont encore actifs ?" (filtrer par `fromDate` récente)
- "Liste tous les abonnements facturés en USD"
- "Quel est le coût mensuel moyen de notre abonnement Google Apps ?"

Comment installer ce skill

/
  1. 1
    Télécharger le fichier s16-abonnements-subscriptions.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 s16-abonnements-subscriptions.md .claude/s16-abonnements-subscriptions.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_payables, 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?