# not_found

> Le statut not_found est un résultat complet et non facturé, pas une erreur. Ce qu'il contient, comment il se distingue d'un 404 ou d'un 503, et ce que vous pouvez en faire.

`not_found` veut dire : **le moteur a répondu, et sa réponse est « personne »**. Aucune identité marchande exploitable n'a été reconnue dans le libellé. C'est une réponse normale et complète, rendue en `200`.

## À quoi il ressemble

```json
{
  "enrichment_id": "enr_9a1d4c2e-7b3f-4e8a-a6d5-0c1b2e3f4a5b",
  "merchant": null,
  "enrichment": {
    "status": "not_found",
    "reason": "no_usable_merchant_identity",
    "environment": "production",
    "source": "noryo",
    "customized": false
  },
  "usage": { "billable": false, "units": 0, "deduplicated": false, "deduplicated_by": null }
}
```

Cet exemple illustre la forme ; ses identifiants ne proviennent pas d'un appel réel.

| Élément | Valeur |
|---|---|
| Statut HTTP | `200` |
| `merchant` | `null` |
| `enrichment.reason` | `no_usable_merchant_identity` |
| Facturation | Aucune : `billable: false`, `units: 0`. En Sandbox, rien n'est décompté de la dotation. |
| `enrichment_id` | Oui : le résultat est enregistré et se relit. N'ayant pas de contenu à purger, il ne devient pas un `410` après 90 jours |

## Trois réponses à ne pas confondre

| Réponse | Ce qu'elle veut dire | Que faire |
|---|---|---|
| `200` et `status: not_found` | Le moteur a répondu : personne | Afficher le libellé brut ; ne pas reprendre |
| `404 enrichment_not_found` | L'`enrichment_id` demandé n'existe pas pour vous | Vérifier l'identifiant, la clé et l'environnement |
| `503 engine_error` | Le moteur n'a pas répondu ; rien n'est facturé ni mémorisé | Reprendre avec la même `Idempotency-Key` |

Reprendre un `not_found` à l'identique ne change rien : la même transaction renvoyée rend le même résultat, en déduplication si elle porte un `external_transaction_id`.

## Un `not_found` est mémorisé

Avec un `external_transaction_id`, le `not_found` devient le résultat courant de la transaction. Renvoyer la même transaction rend ce même `not_found`, avec `deduplicated: true`, sans facturation. Ce n'est pas une panne qui bloque la transaction : c'est le résultat qu'elle a.

## Et plus tard ?

La couverture du catalogue évolue. Pour retenter une transaction `not_found`, rafraîchissez-la avec la même entrée économique : voir [Rafraîchir](https://developer.noryo.app/fr-FR/merchant/refresh).

- Si le recalcul aboutit (`refresh_recalculated`), il devient le résultat courant et il est facturé.
- S'il rend encore `not_found` ou `partial`, il n'est pas facturé et ne remplace rien.

Le rafraîchissement exige que l'appel d'origine ait porté un `external_transaction_id`.

## Que faire d'un `not_found`

- Afficher le libellé brut tel que la banque l'a écrit, plutôt qu'un nom inventé.
- Le compter à part dans vos mesures : c'est une limite de couverture, pas une erreur d'intégration.
- Ne pas le traiter comme une erreur dans vos alertes : réservez celles-ci aux `5xx` et aux `4xx` inattendus.

---

Page canonique : https://developer.noryo.app/fr-FR/merchant/results/not-found
