Documentation
Une API, trois produits
Encaissement, prépayé et cartes virtuelles partagent la même authentification, le même format de réponse et les mêmes webhooks.
Les APIs
Ressources
Authentification
Toutes les requêtes portent une clé API en en-tête. La clé est un secret côté serveur : elle n'est acceptée ni depuis un navigateur ni depuis une application mobile.
Authorization: Bearer mnz_sk_test_...
Le préfixe détermine l'environnement : mnz_sk_test_ n'engage aucun argent réel, mnz_sk_live_ opère sur ton wallet. Les clés se créent et se révoquent dans Paramètres → Développeur. Les clés live sont délivrées après validation de ton compte. Chaque clé peut être restreinte à une liste d'adresses IP.
URL de base
https://api.monniz.shop/v1. Chaque produit expose son préfixe : /payments, /prepaid, /issuing.Format des réponses
Toutes les réponses partagent la même enveloppe. En cas d'erreur, success passe à false et errors.code porte un code machine stable ; le message peut être reformulé sans préavis.
{
"success": true,
"message": "OK",
"data": { },
"meta": { "request_id": "req_01J8XKQ2M4N7P9R2S5T8V1W4X7" }
}Le request_id identifie l'appel auprès du support.
Idempotence
Toute écriture qui engage de l'argent accepte un en-tête Idempotency-Key — un UUID unique par tentative métier. Rejouer une requête avec la même clé n'exécute l'opération qu'une seule fois et renvoie la réponse d'origine.
curl -X POST https://api.monniz.shop/v1/payments \
-H "Authorization: Bearer mnz_sk_test_..." \
-H "Idempotency-Key: 8f4e2a10-77b3-4c1e-9b1a-2d6c58c01a42" \
-H "Content-Type: application/json" \
-d '{ ... }'Certains endpoints l'exigent — la réponse est alors 428 avec le code IDEMPOTENCY_KEY_REQUIRED si l'en-tête manque. Chaque page produit précise les endpoints concernés.
Webhooks
L'URL HTTPS de webhook se configure dans Paramètres → Développeur. Monniz y notifie chaque changement d'état : paiement réussi, transaction livrée, remboursement effectué. Chaque envoi est signé.
Monniz-Signature: t=1755600000,v1=3f5a1c9e...
v1 est le HMAC-SHA256 de la chaîne {t}.{corps brut} avec ton secret de signature. La fenêtre de validité de l'horodatage t est de 5 minutes. Les envois en échec sont retentés automatiquement pendant environ deux jours, et le journal des événements de ton espace développeur permet de rejouer n'importe quel envoi.
Exemples de vérification en PHP et Node sur la page Paiements.
Limites
Chaque clé est limitée à 60 requêtes par minute. L'état courant est renvoyé dans les en-têtes X-RateLimit-Limit et X-RateLimit-Remaining ; au-delà, la réponse est 429 avec Retry-After.