mit einem Klick
qonto-invoices
// Analyse des factures clients Qonto par période de prestation (pas date d'émission) et compte de destination. Sortie HT/TTC, top clients, audit des cas ambigus.
// Analyse des factures clients Qonto par période de prestation (pas date d'émission) et compte de destination. Sortie HT/TTC, top clients, audit des cas ambigus.
Transcribe audio files using the local `transcribe` CLI (WhisperX large-v3 + diarisation + optional LLM correction).
Write and publish a blog article to Notion based on conversation context, a file, or a topic. Optionally cross-post to LinkedIn, Twitter, and Slack.
Process a "Tech My Breath Away" meeting: move the Fireflies-created Notion page to the Talks database, and upload the video to Google Drive.
Create a new Claude Code skill based on conversation context, a file, or a description of the skill's purpose.
Import CRAs from an Excel file into Billi, or export CRAs from Billi to Excel. Bidirectional sync of activity reports.
Dossier CII/CIR : accès Finalli, données de référence, extraction temps personnel pour les déclarations de crédit d'impôt innovation.
| name | qonto-invoices |
| description | Analyse des factures clients Qonto par période de prestation (pas date d'émission) et compte de destination. Sortie HT/TTC, top clients, audit des cas ambigus. |
| title | /qonto-invoices |
| parent | Skills |
| permalink | /skills/qonto-invoices/ |
| nav_order | 20 |
Bilan factures clients Qonto pour une année donnée, en raisonnant sur la période de prestation (et non la date d'émission), avec une vue par compte de destination (récupérés dynamiquement depuis l'organisation Qonto).
Le bilan annuel "factures émises en YYYY" donne un mauvais résultat car :
performance_date rempli — il faut parser le mois en français ("Prestations janvier 2025", "…mai 2026", etc.) dans le header ou les items.La skill applique une heuristique en cascade :
performance_date si renseignéheader / items[].title / items[].descriptionissue_date (signalé dans la section audit)aggregate.jq (dans ce dossier) — toute la logique de filtrage et d'agrégation. Reçoit year, window (nb de mois après le 31/12 à scanner) et accounts (mapping IBAN → nom de compte, construit dynamiquement depuis l'API pour ne rien hardcoder dans le repo).Quand l'utilisateur invoque /qonto-invoices [année] :
mcp__qonto__get_qonto_organization
→ Extrais bank_accounts[].iban + bank_accounts[].name. Construis un objet JSON { "<iban>": "<name>", ... }. Ne jamais hardcoder un IBAN ni un nom de compte spécifique dans le repo.
mcp__qonto__get_client_invoices per_page=500 current_page=1
⚠ Important : utiliser per_page=500 (ou un nombre ≥ total_count). Avec per_page=100, la pagination Qonto trie par DESC et la concaténation page 1 + page 2 peut produire des doublons / oublis (bug observé). Toujours vérifier meta.total_count vs client_invoices | length.
Le résultat dépasse 200k caractères → il sera sauvegardé dans un fichier temporaire (tool-results/.../mcp-qonto-get_client_invoices-*.txt). Récupère le chemin du fichier dans le message d'erreur, puis passe-le à jq directement.
jq -r \
--arg year "2025" \
--arg window "2" \
--argjson accounts "$(cat <<'EOF'
{"<iban1>":"<nom1>","<iban2>":"<nom2>"}
EOF
)" \
-f ~/dev/claude/.claude/skills/qonto-invoices/aggregate.jq \
<chemin-du-fichier-tool-result>
year = année en cours - 1 (cas le plus fréquent = bilan annuel).year correspondant.window=2 est le défaut raisonnable (couvre les factures émises jusqu'à fin février N+1).Affiche la sortie brute du script (déjà formatée), puis :
period_source = issue_date_fallback (headers vides, placeholders non remplis, etc.). Pour chacune, propose une période corrigée basée sur le contexte (cadence client, type de prestation) et demande confirmation à l'utilisateur avant d'ajuster.| Symptôme | Cause probable | Action |
|---|---|---|
| Header vide sur une facture début janvier | Facture pour le mois précédent (donc année précédente) | Proposer d'exclure |
Header avec %mois% / %année% littéraux | Template Qonto avec placeholder pas substitué | Signaler comme bug Qonto, déduire la période de la cadence |
| Un client apparaît avec 2 graphies (majuscules vs casse mixte) | Doublon côté Qonto | Suggérer un merge dans Qonto |
total_pages > 1 avec per_page=100 | Ne pas paginer manuellement | Augmenter per_page à ≥ total_count |
| map(select(.account == "<nom>")) dans le pipeline jq, ou faire un select en post.group_by(.period[0:7]) au lieu de group_by(.account).select(.period >= "YYYY-MM-01") etc.get_client_invoices). Pour les factures fournisseurs ou les notes de crédit, voir get_supplier_invoices / get_credit_notes.total_amount - vat_amount (plus simple et exact que de sommer les items[].subtotal).payment_methods[0].iban — vérifier qu'il n'y a pas de multi-IBAN par facture (à date, un seul moyen de paiement par facture).