---
name: s20-detail-complet-facture
description: Obtenir le détail complet d'une facture — codes comptables, fournisseur résolu, analytiques — via get_payable_by_id
tags: [payables, get_payable_by_id, détail, codes-comptables, fournisseur, analytiques]
when_to_use: Quand l'utilisateur veut les détails enrichis d'une facture spécifique : code compte de charge, code TVA, nom fournisseur, analytiques résolus, amortissement
---

# Détail complet d'une facture (get_payable_by_id)

## Flux : get_payables → ID → get_payable_by_id

Ne pas chercher par numéro de facture directement — résoudre d'abord l'ID via `get_payables` :

### Étape 1 — Trouver l'ID de la facture

```json
{
  "companyId": "<companyId>",
  "filters": {
    "field": "documentaryEvidenceNumber",
    "operator": "=",
    "value": "INV-2026-001"
  },
  "pageSize": 5
}
```

Ou via description :
```json
{ "field": "description", "operator": "contains", "value": "CBS Consultant" }
```

→ Extraire l'`id` de la payable retournée (ex : `5c902f76-c87e-59a6-8bb8-4e70fbd1dd39`)

### Étape 2 — Détail enrichi

```json
{
  "id": "5c902f76-c87e-59a6-8bb8-4e70fbd1dd39"
}
```

## Ce que get_payable_by_id ajoute vs get_payables

| Information | get_payables | get_payable_by_id |
|-------------|--------------|-------------------|
| Nom du fournisseur | ❌ (seulement supplierId) | ✅ `counterparty.name` |
| Code compte comptable | ❌ (seulement expenseAccountId) | ✅ `lineItems[].expenseAccount.code + description` |
| Code compte TVA | ❌ (seulement taxAccountId) | ✅ `lineItems[].vatAccount.code + description` |
| Nom des analytiques | ❌ (seulement fieldEntityValueId) | ✅ `analyticalProperties[].valueName` |
| Nom du cost center | ❌ (dans analyticalFieldAssociations) | ✅ `costCenterName` (à la racine) |
| Nom de l'équipe | ❌ | ✅ `teamName` |
| Amortissement | ❌ | ✅ `amortisation` (null si absent) |
| Code AP fournisseur | ❌ | ✅ `counterparty.accountPayable.generalAccountCode` |

Exemple de réponse enrichie :
```json
{
  "counterparty": {
    "id": "76r950em3qde5o",
    "type": "supplier",
    "name": "Think Software",                          // ← nom résolu
    "accountPayable": {
      "generalAccountCode": "Think Software",          // ← code AP
      "auxiliaryAccountCode": ""
    }
  },
  "lineItems": [{
    "expenseAccount": {
      "code": "622800",
      "description": "622800 - Autres honoraires et intermédiaires"  // ← compte résolu
    },
    "vatAccount": { "code": "445660", "rate": 20 },   // ← TVA résolue
    "analyticalProperties": [{
      "fieldName": "Analytic codes",
      "valueName": "Banking investments"               // ← analytique résolu
    }],
    "costCenterName": "X-old Banking"                  // ← cost center résolu
  }],
  "teamName": "Banking"
}
```

## ⚠️ Nommage différent entre get_payables et get_payable_by_id

Les deux endpoints utilisent des noms de champs différents pour les mêmes données :

| Concept | get_payables | get_payable_by_id |
|---------|--------------|-------------------|
| Statut comptable | `state` | `bookkeepingStatus` |
| Lignes de détail | `itemLines[]` | `lineItems[]` |
| Date d'entrée Spendesk | `firstCreatedAt` | `createdAt` |
| Date d'export ERP | `firstExportedAt` | `exportedAt` |
| ID utilisateur | `memberId` | `userId` |
| Date d'échéance | `dueDate` | `invoiceDueDate` |
| Date du document | `creationDate` (datetime) | `payableDate` (date) |

→ Si votre code traite les deux types de réponse, adapter les noms de champs selon l'endpoint appelé.

## Ce qui est ABSENT de get_payable_by_id

`get_payable_by_id` ne retourne pas :
- `spendingAmount` / `spendingCurrency` / `spendingExchangeRate` — pour la devise de dépense originale, utiliser `get_payables`
- `documentaryEvidence` complet (validité, compliances) — `invoiceNumber` est à la racine mais la structure de validation n'y est pas
- `kind` field (`expense` vs `reversal`)

## Quand utiliser lequel ?

| Besoin | Tool recommandé |
|--------|-----------------|
| Lister + filtrer les factures | `get_payables` |
| Noms résolus (fournisseur, comptes, analytiques) | `get_payable_by_id` |
| Devise de dépense originale (spendingAmount) | `get_payables` |
| Amortissement / codes GL complets | `get_payable_by_id` |

## Exemples de prompts

- "Montre-moi le détail complet de la facture CBS Consultant avec les codes comptables"
- "Quel est le code de charge de la facture Docusign ?"
- "Affiche les analytiques et le cost center de la facture INV-2026-001"
