---
name: s19-payables-exportes-depuis-date
description: Récupérer les payables exportés vers l'ERP depuis une date donnée (firstExportedAt) — synchronisation incrémentale ERP
tags: [payables, get_payables, firstExportedAt, ERP, export, synchronisation]
when_to_use: Quand l'utilisateur veut synchroniser l'ERP avec les nouvelles exports Spendesk, ou suivre ce qui a été exporté depuis le dernier export
---

# Payables exportés vers l'ERP depuis une date (firstExportedAt)

## Pattern de synchronisation ERP incrémentale

`firstExportedAt` enregistre la date du **premier export vers l'ERP** de chaque payable. C'est la base d'une stratégie de synchronisation incrémentale fiable.

```json
{
  "companyId": "<companyId>",
  "filters": {
    "field": "firstExportedAt",
    "operator": "after",
    "value": "<timestamp-dernier-export>"
  },
  "pageSize": 100
}
```

→ Retourne uniquement les payables qui n'étaient pas encore exportés lors du dernier batch.
→ `hasNextPage: true` si plus de résultats — paginer jusqu'à épuisement pour ne rien manquer.
→ Seuls les payables avec `state=exported` ont un `firstExportedAt` — les `toPrepare`/`toExport` sont exclus automatiquement.

## Valeurs pratiques pour la synchronisation

```json
// Depuis hier soir
{ "field": "firstExportedAt", "operator": "after", "value": "yesterday" }

// Depuis le 1er du mois courant
{ "field": "firstExportedAt", "operator": "after", "value": "thisMonth" }

// Fenêtre précise (timestamp du dernier run)
{ "field": "firstExportedAt", "operator": "after", "value": "2026-06-01T00:00:00.000Z" }

// Dernier mois
{ "field": "firstExportedAt", "operator": "between", "value": { "from": "lastMonth", "to": "thisMonth" } }
```

(Voir skill S17 pour la liste complète des opérateurs de date.)

## ⚠️ payableDate ≠ firstExportedAt — factures backdatées fréquentes

`firstExportedAt` peut être très postérieur à `payableDate` — une facture de 2023 peut être exportée en 2026 :

| Description | payableDate | firstCreatedAt | firstExportedAt |
|-------------|-------------|----------------|-----------------|
| "MALT" (facture consultance) | 2023-09-13 | 2026-06-02 | 2026-06-02 |
| "Regnology CONSO" | 2025-12-08 | 2026-06-12 | 2026-06-25 |
| "ABM platform tool" | 2025-10-27 | 2026-06-16 | 2026-06-25 |

→ Un filtre par `payableDate >= 2026-06-01` **manquerait** toutes ces factures.
→ Un filtre par `firstExportedAt >= 2026-06-01` les **capture toutes** — c'est ce qui compte pour l'ERP.

## firstCreatedAt ≠ firstExportedAt

Il peut s'écouler plusieurs jours entre la saisie dans Spendesk et l'export vers l'ERP :

| Payable | firstCreatedAt | firstExportedAt | Délai |
|---------|----------------|-----------------|-------|
| "Accompagnement partenaire" | 2026-06-11 | 2026-06-25 | 14 jours |
| "REGNOLOGY CONSO 2026" | 2026-06-15 | 2026-06-25 | 10 jours |
| "MALT" | 2026-06-02 | 2026-06-02 | 0 jours (export immédiat) |

→ Pour un suivi ERP précis, toujours utiliser `firstExportedAt`, pas `firstCreatedAt`.

## Déduplication — éviter le double-posting

Si votre ERP est déjà à jour jusqu'au `<timestamp>`, utiliser :
```json
{ "field": "firstExportedAt", "operator": "after", "value": "<timestamp>" }
```

Cela garantit qu'un payable déjà exporté n'est jamais renvoyé dans le batch suivant (`firstExportedAt` ne change jamais après le premier export).

## Combiner avec d'autres filtres

Pour n'exporter que certains types :
```json
{
  "companyId": "<companyId>",
  "filters": {
    "operator": "and",
    "subfilters": [
      { "field": "firstExportedAt", "operator": "after", "value": "2026-06-01T00:00:00.000Z" },
      { "field": "payableType", "operator": "=", "value": ["invoicePurchase", "creditNote"] }
    ]
  },
  "pageSize": 100
}
```

Note: vérifier les combinaisons de filtres AND — certaines peuvent échouer (voir skill S11 pour le bug connu).

## Exemples de prompts

- "Quelles factures ont été exportées vers la compta depuis hier ?"
- "Donne-moi toutes les payables exportées ce mois pour ma réconciliation ERP"
- "Y a-t-il de nouvelles factures à importer depuis notre dernier batch du 1er juin ?"
