Transactions
Tous les endpoints de cette page utilisent l’authentification publique :
X-API-Key: <cle_api_kadryza>L’environnement est déduit de la clé (kadryza_test_... ou kadryza_live_...). Ne passez pas de paramètre environment dans le SDK public.
Initier une transaction
POST /v1/transactionsPayload :
| Champ | Type | Requis | Description |
|---|---|---|---|
reference | string | Oui | Référence unique côté merchant |
amount | integer | Oui | Montant entier en XAF |
currency | string | Oui | XAF |
operator | string | Oui | AIRTEL ou MOOV |
phone_number | string | Oui | Numéro payeur |
description | string | Non | Description courte |
curl -X POST https://api.kadryza.app/v1/transactions \
-H "X-API-Key: $KADRYZA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reference": "order_2026_001",
"amount": 5000,
"currency": "XAF",
"operator": "AIRTEL",
"phone_number": "+23566000000",
"description": "Commande #2026-001"
}'Réponse 201 Created :
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"internal_ref": "KADRYZA-A1B2C3D4",
"status": "PENDING",
"is_test": false,
"environment": "live",
"expires_at": "2026-06-05T12:30:00Z"
}Récupérer une transaction
GET /v1/transactions/:idcurl https://api.kadryza.app/v1/transactions/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-H "X-API-Key: $KADRYZA_API_KEY"Réponse :
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"reference": "order_2026_001",
"internal_ref": "KADRYZA-A1B2C3D4",
"amount": 5000,
"currency": "XAF",
"operator": "AIRTEL",
"phone_number": "+23566000000",
"description": "Commande #2026-001",
"status": "SUCCESS",
"is_test": false,
"environment": "live",
"webhook_sent": true,
"initiated_at": "2026-06-05T12:00:00Z",
"confirmed_at": "2026-06-05T12:01:15Z",
"expires_at": "2026-06-05T12:30:00Z",
"created_at": "2026-06-05T12:00:00Z",
"updated_at": "2026-06-05T12:01:15Z"
}Lister les transactions
GET /v1/transactionsFiltres supportés :
| Paramètre | Type | Description |
|---|---|---|
limit | integer | Nombre de résultats, défaut 20, max serveur 1000 |
offset | integer | Décalage de pagination, défaut 0 |
status | string | PENDING, PROCESSING, WAITING_SMS, SUCCESS, FAILED, TIMEOUT, REFUNDED |
operator | string | AIRTEL ou MOOV |
date_from | string | Date de début, YYYY-MM-DD ou ISO 8601 |
date_to | string | Date de fin, YYYY-MM-DD ou ISO 8601 |
search | string | Recherche sur référence/champs pertinents |
curl "https://api.kadryza.app/v1/transactions?limit=50&offset=0&status=SUCCESS&operator=AIRTEL&date_from=2026-06-01&date_to=2026-06-30&search=order_" \
-H "X-API-Key: $KADRYZA_API_KEY"Réponse :
{
"transactions": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"reference": "order_2026_001",
"internal_ref": "KADRYZA-A1B2C3D4",
"amount": 5000,
"currency": "XAF",
"operator": "AIRTEL",
"phone_number": "+23566000000",
"status": "SUCCESS",
"is_test": false,
"environment": "live",
"webhook_sent": true,
"initiated_at": "2026-06-05T12:00:00Z",
"confirmed_at": "2026-06-05T12:01:15Z",
"expires_at": "2026-06-05T12:30:00Z",
"created_at": "2026-06-05T12:00:00Z",
"updated_at": "2026-06-05T12:01:15Z"
}
],
"total": 1,
"limit": 50,
"offset": 0
}SDK
const created = await kadryza.transactions.initiate({
reference: 'order_2026_001',
amount: 5000,
currency: 'XAF',
operator: 'AIRTEL',
phone_number: '+23566000000'
})
const tx = await kadryza.transactions.get(created.id)
const list = await kadryza.transactions.list({
limit: 20,
offset: 0,
status: 'SUCCESS',
search: 'order_'
})Erreurs fréquentes
| HTTP | Code | Cause |
|---|---|---|
400 | VALIDATION_ERROR | Payload ou filtre invalide |
401 | AUTH_REQUIRED | Clé API absente ou invalide |
403 | KYC_REQUIRED | Profil merchant incomplet |
403 | API_KEY_PERMISSION_DENIED | Scope de clé insuffisant |
409 | DUPLICATE_REFERENCE | Référence déjà utilisée dans le même environnement |
ℹ️
Les transactions test sont séparées des transactions live par la clé utilisée. Elles ne représentent pas de l’argent réel.