POST
/
api
/
v1
/
transaction
/
init
Initialiser une transaction
curl --request POST \
  --url https://api-m.dexchange.sn/api/v1/transaction/init \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "externalTransactionId": "<string>",
  "serviceCode": "<string>",
  "amount": 500100,
  "number": "<string>",
  "callBackURL": "<string>",
  "successUrl": "<string>",
  "failureUrl": "<string>"
}'
{
  "message": "<string>",
  "transaction": {
    "success": true,
    "transactionId": "<string>",
    "externalTransactionId": "<string>",
    "transactionType": "<string>",
    "amount": 123,
    "transactionFee": 123,
    "number": "<string>",
    "callBackURL": "<string>",
    "successUrl": "<string>",
    "failureUrl": "<string>",
    "status": "<string>",
    "cashout_url": "<string>",
    "webhook": "<string>"
  }
}

Initialize a Transaction

Initialize a new payment transaction.

Endpoint

POST /api/v1/transaction/init

Headers

NameTypeRequiredDescription
AuthorizationstringYesBearer YOUR_API_KEY
Content-TypestringYesapplication/json

Request Body

{
  "externalTransactionId": string,    // Your unique reference
  "serviceCode": string,              // Service code
  "amount": number,                   // Amount (200-1,000,000 FCFA)
  "number": string,                   // Phone number
  "callBackURL": string,              // Notification URL
  "successUrl": string,               // Success redirect URL
  "failureUrl": string               // Failure redirect URL
}

Parameters

ParameterTypeRequiredDescription
externalTransactionIdstringYesYour unique transaction identifier
serviceCodestringYesPayment service code
amountnumberYesAmount in FCFA (min: 200, max: 1,000,000)
numberstringYesPhone number format: ^[0-9]$
callBackURLstringYesURL for webhook notifications
successUrlstringYesRedirect URL after success
failureUrlstringYesRedirect URL after failure

Response

Successful Response

{
  "message": "Transaction initiated successfully",
  "success": true,
  "transaction": {
    "transactionId": "TID123456789",
    "serviceName": "Orange Money Senegal",
    "serviceCode": "OM_SN_CASHOUT",
    "ApiTransactionId": "OM789012345",
    "transactionType": "CASHOUT",
    "transactionAmount": 1000,
    "transactionFee": 20,
    "number": "771234567",
    "Status": "PENDING",
    "INITIATED_AT": "2024-03-20T10:30:00Z"
  }
}

Error Response

{
  "message": ["Error description"],
  "success": false
}

Error Codes

HTTP CodeDescription
400Invalid parameters or incorrect amount
401Invalid API key
403API under maintenance
409External transaction ID already used

Validations

  1. Amount
    • Minimum: 200 FCFA
    • Maximum: 1,000,000 FCFA
  2. Phone Number
    • Format: 9 digits
    • Without country code
    • Numeric characters only

Request Example

curl -X POST https://api-m.dexchange.sn/api/v1/transaction/init \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "externalTransactionId": "INV-001",
    "serviceCode": "OM_SN_CASHOUT",
    "amount": 1000,
    "number": "771234567",
    "callBackURL": "https://your-domain.com/callback",
    "successUrl": "https://your-domain.com/success",
    "failureUrl": "https://your-domain.com/failure"
  }'

Webhook Notification

When the transaction status changes, a webhook is sent to the URL specified in callBackURL:
{
  "id": "TID123456789",
  "externalTransactionId": "INV-001",
  "transactionType": "CASHOUT",
  "AMOUNT": 1000,
  "FEE": 20,
  "PHONE_NUMBER": "771234567",
  "STATUS": "SUCCESS",
  "CUSTOM_DATA": "{}",
  "COMPLETED_AT": "2024-03-20T10:35:00Z",
  "BALANCE": 50000,
  "PREVIOUS_BALANCE": 51020,
  "CURRENT_BALANCE": 50000
}

Authorizations

Authorization
string
header
required

Entrez votre clé API comme: Bearer <API_KEY>

Body

application/json

Détails de la transaction

The body is of type object.

Response

201
application/json

Transaction initiée avec succès

The response is of type object.