Catalogue des erreurs
Toutes les erreurs ont la même forme :
{ "error": { "code": "invalid_amount", "message": "..." } }
Testez le code, jamais le message. Le code est stable ; le message est rédigé pour un humain et peut être reformulé sans préavis.
Toute réponse porte LibrePay-Request-Id. Il apparaît à l'identique dans le Journal API de votre console : commencez toujours par là.
Les 65 codes que l'API peut rendre
Cette liste est dérivée de la spécification, et chacun de ces codes est provoqué contre la sandbox à chaque recette. Aucun n'est théorique.
| Code | Statut | Que faire |
|---|---|---|
amount_above_limit | 422 | — |
amount_too_large | 422 | Au-delà de la borne haute qui s’applique : celle du lien de paiement, ou celle que nous appliquons sur ce couple service/opérateur. GET /v1-operators les rend toutes les deux. |
amount_too_small | 422 | En deçà de la borne basse qui s’applique : celle du lien de paiement, ou celle que nous appliquons sur ce couple service/opérateur. GET /v1-operators les rend toutes les deux. |
authentication_required | 401 | Ajoutez l'en-tête Authorization: Bearer. |
batch_not_cancellable | 409 | — |
batch_not_executable | 409 | — |
batch_pending_approval | 409 | — |
bornes_illisibles | 500 | — |
checkout_cancel_failed | 500 | — |
checkout_creation_failed | 500 | — |
checkout_not_cancellable | 409 | — |
destination_introuvable | 404 | — |
destination_non_designee | 422 | Cette destination sert aux décaissements. La destination de vos règlements se désigne dans votre console, écran « Règlements » — une seule à la fois, par le propriétaire du compte. Rien à changer dans votre code. |
destination_trop_recente | 422 | Une destination fraîchement désignée attend un délai avant de servir. Le message indique la date. Ce délai vous laisse le temps de réagir si le changement ne venait pas de vous. |
duplicate_reference | 409 | Ce merchant_reference désigne déjà une autre transaction. |
endpoint_disabled | 409 | — |
iban_already_issued | 409 | — |
iban_emission_incertaine | 502 | — |
iban_service_inactive | 503 | — |
idempotency_in_progress | 409 | Une requête identique est en cours. Attendez, ne changez pas de clé. |
idempotency_key_required | 400 | Ajoutez Idempotency-Key, dérivée de votre commande. |
idempotency_key_reused | 422 | Même clé, corps différent. Utilisez une clé par commande, pas par tentative. |
insufficient_funds | 409 | — |
insufficient_scope | 403 | — |
invalid_amount | 422 | Entier strictement positif, en unité mineure. Ni chaîne, ni décimale. |
invalid_api_key | 401 | Clé inconnue, révoquée ou malformée. Vérifiez le préfixe et l’environnement. |
invalid_beneficiary | 422 | — |
invalid_body | 400 | Le corps n’est pas du JSON valide. |
invalid_currency | 422 | Code ISO à trois lettres. |
invalid_description | 422 | — |
invalid_enabled_events | 422 | — |
invalid_holder | 422 | — |
invalid_id | 422 | L’identifiant doit être un txn_…. |
invalid_lines | 422 | — |
invalid_msisdn | 422 | — |
invalid_operator | 422 | — |
invalid_period | 422 | — |
invalid_reference | 422 | — |
invalid_request | 400 | — |
invalid_return_url | 422 | — |
invalid_url | 422 | — |
lien_indisponible | 409 | — |
merchant_inactive | 403 | Votre dossier de vérification n’est pas validé. Rien à corriger côté code. |
merchant_incomplete | 503 | — |
merchant_limit_reached | 422 | — |
method_not_allowed | 405 | — |
montant_non_eligible | 422 | — |
monthly_limit_reached | 422 | — |
payment_creation_failed | 500 | — |
payment_failed | 500 | — |
payout_failed | 500 | — |
rate_limit_exceeded | 429 | — |
resource_not_found | 404 | Inconnu, ou appartenant à un autre marchand. Les deux rendent 404. |
server_error | 500 | — |
session_closed | 409 | — |
session_expired | 409 | — |
settlement_failed | 500 | — |
sous_le_plancher | 422 | — |
statement_failed | 500 | — |
temporarily_unavailable | 503 | — |
test_rate_limited | 429 | — |
too_many_attempts | 429 | — |
too_many_endpoints | 422 | — |
too_many_lines | 422 | — |
unknown_event_type | 422 | — |
Ce qui mérite une nouvelle tentative
| Situation | Rejouer ? |
|---|---|
| Erreur réseau, aucune réponse | Oui, avec la MÊME clé d'idempotence |
5xx | Oui, avec la même clé |
429 | Oui, après attente |
4xx | Non — la requête est en cause, le refus serait identique |
Rejouer avec la même clé est sans danger : c'est précisément ce pour quoi l'idempotence existe. Rejouer avec une clé neuve crée un second paiement.
Version d'API 2026-08-25 ·
changements ·
spécification OpenAPI