> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hub2.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Gestion des erreurs

## Format des erreurs

Le format d'erreur de l'API HUB2 est en cours de standardisation.
Ci-dessous les champs dans la réponse standardisée ainsi qu'un exemple:

| Nom du champ | Description                                                                   |
| :----------- | :---------------------------------------------------------------------------- |
| `status`     | Le statut HTTP                                                                |
| `code`       | Un code d'erreur métier interne à l'API HUB2 (voir liste complète ci-dessous) |
| `message`    | Une description lisible du code d'erreur                                      |
| `request_id` | Identifiant unique de la requête                                              |

<Tip>
  A l'heure actuelle, il est nécessaire de positionner le header 'x-use-standardized-error' === true afin d'obtenir ce format standardisé.
</Tip>

<Warning>
  À partir du 1er Octobre 2024, ce format d'erreur sera le seul renvoyé par l'API HUB2.
  Les marchands doivent donc mettre à jour leur intégration avant cette date.
</Warning>

## Exemple : Erreur 404

```json theme={null}
{
    "status": 404,
    "code": "Not Found",
    "message": "Country not found",
    "request_id": "req_RRg_xtA55q32PLIWYVLFL"
}
```

**Note**: `request_id` est un identifiant unique de requête permettant au support de HUB2 d'intervenir plus rapidement en cas de demande d'aide.

## Codes d'erreur

### Codes de statut HTTP

<Tip>
  Les codes de statut HTTP n'indiquent pas des erreurs applicatives.
</Tip>

Codes de statut HTTP standards pouvant être retournés par l'API HUB2 :

| Code d'état                | Texte d'état             | Description                                                                                                                                        |
| :------------------------- | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |
| `200`                      | `OK`                     | La requête s'est exécutée comme prévu.                                                                                                             |
| `400`                      | `Requête incorrecte`     | La requête était inacceptable, souvent en raison d'un paramètre requis manquant ou mal formaté.                                                    |
| `401`                      | `Non autorisé`           | Aucune clé API valide n'a été fournie.                                                                                                             |
| `402`                      | `Requête échouée`        | Les paramètres étaient valides mais la requête a échoué.                                                                                           |
| `403`                      | `Interdit`               | La clé API n'a pas les permissions nécessaires pour effectuer la requête.                                                                          |
| `404`                      | `Non trouvé`             | La ressource demandée n'existe pas.                                                                                                                |
| `409`                      | `Conflit`                | La requête du client est en conflit direct avec une autre action déjà en cours ou déjà terminée.                                                   |
| `429`                      | `Trop de requêtes`       | Des requêtes excessives ont été faites à l'API en peu de temps. La requête n'a pas été acceptée pour préserver les performances globales de l'API. |
| `500`, `502`, `503`, `504` | Erreurs liées au serveur | Quelque chose s'est mal passé du côté de HUB2.                                                                                                     |

### Codes métier

Codes d'erreur applicatifs susceptibles d'être retournés por l'API HUB2 :

| Code                        | Reason                                                                                                                     |
| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------- |
| `account-already-exists`    | Un compte 'accountType' (en mode live ou sandbox) existe déjà pour le marchand merchantId.                                 |
| `cancellation-already-done` | La transaction id a déjà été annulée.                                                                                      |
| `insufficient-funds`        | Le compte ne dispose pas de suffisamment de fonds pour effectuer le transfert.                                             |
| `invalid-currency`          | Devise invalide.                                                                                                           |
| `locked-account`            | Le compte est verrouillé.                                                                                                  |
| `transaction-not-found`     | La transaction transactionId pour le compte accountId est introuvable.                                                     |
| `currency-not-found`        | Devise introuvable.                                                                                                        |
| `withdrawal-unavailable`    | Les retraits sont indisponibles sur le compte accountId. Le compte peut être bloqué ou ne dispose pas de fonds suffisants. |
| `missing-funds-reservation` | Les fonds réservés sont insuffisants.                                                                                      |
| `merchant-not-found`        | Le marchand est introuvable.                                                                                               |
| `unsupported-command`       | Commande non supportée                                                                                                     |
| `no_auth_required`          | La transaction id ne requiert pas d'authentification.                                                                      |
| `transaction_canceled`      | La transaction (paiement) a été annulé. Aucun paiement ne peut être traité.                                                |
| `transaction_missing`       | La transaction (transfert ou paiement) est introuvable.                                                                    |
| `transaction_in_progress`   | La transaction (transfert ou paiement) est déjà en cours.                                                                  |
| `transaction_done`          | La transaction (transfert ou paiement) a déjà été effectué.                                                                |
