Kadryza Pay est en preview privée au Tchad. Demander un accès anticipé →
Référence APITransactions

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/transactions

Payload :

ChampTypeRequisDescription
referencestringOuiRéférence unique côté merchant
amountintegerOuiMontant entier en XAF
currencystringOuiXAF
operatorstringOuiAIRTEL ou MOOV
phone_numberstringOuiNuméro payeur
descriptionstringNonDescription 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/:id
curl 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/transactions

Filtres supportés :

ParamètreTypeDescription
limitintegerNombre de résultats, défaut 20, max serveur 1000
offsetintegerDécalage de pagination, défaut 0
statusstringPENDING, PROCESSING, WAITING_SMS, SUCCESS, FAILED, TIMEOUT, REFUNDED
operatorstringAIRTEL ou MOOV
date_fromstringDate de début, YYYY-MM-DD ou ISO 8601
date_tostringDate de fin, YYYY-MM-DD ou ISO 8601
searchstringRecherche 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

HTTPCodeCause
400VALIDATION_ERRORPayload ou filtre invalide
401AUTH_REQUIREDClé API absente ou invalide
403KYC_REQUIREDProfil merchant incomplet
403API_KEY_PERMISSION_DENIEDScope de clé insuffisant
409DUPLICATE_REFERENCERé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.