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

# Gestion des erreurs

> Exceptions typées du SDK Flutter GimPay et bonnes pratiques d'intégration.

## Exceptions typées

Toutes les méthodes de la façade `Gimpay` lèvent des exceptions typées dérivées de `GimPayApiException`.

| Exception                                                                             | Cas                                                                                               |
| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| `ValidationException`                                                                 | Donnée invalide, rejetée **avant** l'appel réseau (`statusCode` `null`) ou par le serveur (`422`) |
| `UnauthorizedException`                                                               | token/credentials invalides (`401`) ou échec du `tokenProvider`                                   |
| `NotFoundException`, `ConflictException`, `BadRequestException`, `ForbiddenException` | Erreurs `4xx` correspondantes                                                                     |
| `ServerException`                                                                     | Erreurs `5xx` (le SDK a déjà retenté automatiquement)                                             |
| `NetworkException`, `RequestTimeoutException`                                         | Connectivité / délai dépassé                                                                      |
| `GimpayNotInitializedException`                                                       | Méthode appelée avant l'initialisation du SDK                                                     |

```dart theme={null}
try {
  await Gimpay.getBalance(reference);
} on ValidationException catch (e) {
  log(e.message);
} on GimPayApiException catch (e) {
  log('${e.statusCode} ${e.message}', details: e.details);
}
```

<Note>
  Les énumérations renvoyées par l'API (`statutOperation`, `statutMmp`...) valent `null` si le serveur renvoie une valeur inconnue de votre version du SDK — prévoyez toujours le cas `null`.
</Note>

## Bonnes pratiques

<Steps>
  <Step title="Sécurité">
    Utilisez le mode `tokenProvider` en production ; appelez `Gimpay.logout()` à la déconnexion de l'utilisateur ; ne journalisez jamais PAN, CVV ou tokens côté application ; n'activez `enableLogs` qu'en debug.
  </Step>

  <Step title="Dates">
    Le SDK prend des `DateTime` et formate lui-même au format attendu par l'API (`yyyy-MM-dd`).
  </Step>

  <Step title="MSISDN">
    Le SDK expose `msisdn` partout et gère lui-même la conversion vers le nom de champ attendu par l'API.
  </Step>

  <Step title="Montants">
    Les montants sont des `double`, strictement positifs — validés côté SDK avant l'appel réseau.
  </Step>

  <Step title="Retries">
    Timeouts, erreurs réseau et `5xx` sont retentés automatiquement (2 tentatives). N'ajoutez pas votre propre logique de retry par-dessus.
  </Step>
</Steps>

## Étapes suivantes

<CardGroup cols={2}>
  <Card title="Démarrage rapide" icon="rocket" href="/sdks/quickstart">
    Revoir le parcours d'intégration type.
  </Card>

  <Card title="Couverture des APIs" icon="list-check" href="/sdks/api-coverage">
    La liste complète des endpoints disponibles.
  </Card>
</CardGroup>
