Documentation

Révision des doublons

Trancher sur les factures à fort risque de doublon pour débloquer un export DATEV.


Une facture notée 0.85 ou plus par la détection de doublons bloque l'export CSV DATEV tant qu'une personne n'a pas tranché. La révision des doublons est la façon d'enregistrer cette décision — et c'est la seule chose qui lève le blocage.

La décision ne supprime, ne fusionne ni ne modifie aucune donnée de facture. Elle dit seulement ce qu'est la facture.

Pourquoi un export se bloque

Toute facture enregistrée sur une offre incluant les fonctionnalités d'intelligence porte un score de risque de doublon, calculé au moment de l'extraction par rapport à vos factures récentes. Une facture bloque un export DATEV lorsque ces deux conditions sont réunies :

  • son risque de doublon atteint 0.85 ou plus, et
  • aucune décision de révision n'a encore été prise — son statut de révision est absent ou vaut pending.

Une seule facture bloquante fait échouer tout l'export. Aucun CSV partiel n'est produit : comptabiliser un doublon dans DATEV le comptabilise deux fois, l'export échoue donc entièrement plutôt que d'écarter discrètement une ligne.

Le refus est un 409 :

{
  "error": {
    "code": "datev_export_blocked",
    "message": "L'export DATEV est bloqué car des factures potentiellement en double doivent être vérifiées. Résolvez ou classez-les explicitement avant l'export.",
    "blocking_invoice_count": 2,
    "blocking_invoice_ids": [
      "6f1c2b8e-0f2a-4a1d-9c47-7b4e1f2a3d55",
      "b3d9a1c4-52e7-4f08-8c3b-1a9d6e5f0c22"
    ]
  }
}

Seuls vos propres identifiants de facture sont renvoyés — jamais de noms de fournisseurs, de montants ou de numéros de facture.

La file de révision existe uniquement dans le tableau de bord

La file qui présente les factures bloquées face à leurs candidats de doublon ne fait pas partie de l'API publique. GET /v1/internal/user/invoices/duplicate-review-queue est une route interne : elle est exclue du schéma OpenAPI et s'authentifie avec les identifiants internes du tableau de bord, pas avec votre clé API.

Ouvrez-la dans le tableau de bord sous Paramètres → Sécurité, dans la section Export de données, où un export DATEV bloqué ouvre la boîte de dialogue de révision pour les factures qu'il a nommées.

L'endpoint de décision ci-dessous, lui, est public. Une intégration qui sait déjà quelles factures sont bloquées — les blocking_invoice_ids de l'export le lui disent — peut donc les traiter sans le tableau de bord. Ce qu'elle ne peut pas obtenir via l'API publique, c'est la comparaison côte à côte qu'affiche le tableau de bord.

Enregistrer une décision

PATCH /v1/invoices/{invoice_id}/duplicate-review enregistre la décision. Il s'authentifie avec votre clé API et n'est pas soumis à l'offre : l'export DATEV exige Pro ou Business, mais tout propriétaire authentifié peut lever un blocage.

curl -X PATCH "https://api.parsurai.com/v1/invoices/6f1c2b8e-0f2a-4a1d-9c47-7b4e1f2a3d55/duplicate-review" \
  -H "X-API-Key: $PARSURAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "confirmed_duplicate",
    "note": "Facture renvoyée par le fournisseur le 12 juin.",
    "duplicate_of_invoice_id": "b3d9a1c4-52e7-4f08-8c3b-1a9d6e5f0c22"
  }'
ChampTypeRequisDescription
statusstringOuiLa décision. pending est rejeté — ce n'est pas une décision
notestringNonTexte libre, 1000 caractères au maximum
duplicate_of_invoice_idUUIDConditionnelRequis pour confirmed_duplicate, rejeté pour tout autre statut
{
  "invoice_id": "6f1c2b8e-0f2a-4a1d-9c47-7b4e1f2a3d55",
  "duplicate_review_status": "confirmed_duplicate",
  "duplicate_reviewed_at": "2026-06-14T09:12:44Z",
  "duplicate_of_invoice_id": "b3d9a1c4-52e7-4f08-8c3b-1a9d6e5f0c22"
}

Les décisions et leurs effets

StatutSignificationEffet sur le prochain export DATEV
confirmed_duplicateCette facture double une autre de vos facturesLève le blocage ; cette facture ne produit aucune ligne d'écriture
confirmed_not_duplicateLa correspondance est un faux positifLève le blocage ; cette facture est exportée normalement
excluded_from_exportConserver la facture, mais ne jamais la comptabiliserLève le blocage ; cette facture ne produit aucune ligne d'écriture
pending—Rejeté : une facture ne peut pas revenir à l'état « pending »

Utilisez excluded_from_export lorsque la facture ne doit pas être comptabilisée mais que vous ne pouvez pas nommer la facture qu'elle double. confirmed_duplicate exige toujours cet identifiant.

Exclure une facture de l'export la laisse intacte dans votre workspace — elle est retirée du lot, pas supprimée.

Gestion des erreurs

StatutCodeCause typique
404—La facture n'est pas dans votre workspace
422invalid_duplicate_reviewstatus vaut pending
422invalid_duplicate_reviewconfirmed_duplicate sans duplicate_of_invoice_id
422invalid_duplicate_reviewduplicate_of_invoice_id envoyé avec un autre statut
422invalid_duplicate_reviewduplicate_of_invoice_id désigne la facture elle-même
422invalid_duplicate_reviewduplicate_of_invoice_id n'est pas une facture qui vous appartient

Une facture référencée qui ne vous appartient pas est signalée comme « introuvable » et non comme « pas la vôtre » : l'endpoint ne permet donc pas de sonder les identifiants de facture d'un autre workspace.

Traitez toute la liste blocking_invoice_ids avant de relancer l'export. Une seule facture non résolue fait de nouveau échouer le lot : les traiter une par une coûte un export refusé par facture.