APIMobile Money

Payment

Trigger a direct payment from your backend.

POST https://business.novasend.app/v1/direct/payin

Initiates a Mobile Money payment request (push / STK / USSD) with supported operators (WAVE, Orange Money, MTN MoMo, Moov, etc.).

Request Headers

HeaderDescriptionRequired
AuthorizationUsed to authenticate the API, Basic base64(api_key:api_client)
X-Idempotency-KeyEnsures transaction uniqueness. The value must be a UUID
Content-Typeapplication/json
Accept-LanguageLanguage used for error messages. Supported values: en, fr

Request

FieldTypeDescriptionRequired
referencestringUnique transaction identifier.
customerNamestringName of the customer making the payment.
payinobjectInformation related to the incoming payment.
payin.amountnumberPayment amount.
payin.msisdnstringCustomer phone number (international format).
payin.providerstringPayment provider (WAVE, ORANGE, MOMO, MOOV).
payin.countrystringISO country code (CI, CM).
payin.otpstringOTP code for Orange Money (obtained via #144*82#).
action.successUrlurlRedirect URL after a successful action.
action.failureUrlurlRedirect URL after a failed action.

{
  "reference": "{{$randomUUID}}",
  "customerName": "John Do",
  "payin": {
    "amount": 300,
    "msisdn": "{{phone_number}}",
    "provider": "ORANGE",
    "country": "CI",
    "otp": "1234"
  },
  "action": {
    "successUrl": "{{Your Success URL}}",
    "failureUrl": "{{Your Failure URL}}"
  }
}

MTN & Moov Validation

For MTN and Moov operators, if the push confirmation notification does not automatically appear on the customer's phone, they must dial the following codes to validate the payment:

  • MTN CI: Dial *133# to access the validation menu.
  • Moov CI: Dial *155# to access the validation menu.

Response

{
  "id": "pr_bakvkozbmqcmte1d8izelffjlz",
  "type": "payin",
  "reference": "0f3fed58-0590-434e-8a00-5d6cd3560382",
  "status": "processing",
  "confirmationRequired": true,
  "confirmationStatus": "none",
  "paymentUrl": "https://business.novasend.app/link/QGRD4D",
  "customer": {
    "name": "Aziz",
    "phoneNumber": "+225xxxxxxxxx"
  },
  "mobileMoney": {
    "provider": {
      "name": "WAVE_CI"
    }
  },
  "isDirect": false,
  "payFee": false,
  "createdAt": "2026-01-19T09:11:25.832Z",
  "amount": 200,
  "fee": 7,
  "chargedAmount": 207,
  "currency": "XOF",
  "failure": null
}

Response Fields

FieldDescription
idUnique identifier of the payment session sent by novasend.
typeOperation type (payin).
referenceMerchant-provided reference identifying the payment.
statusCurrent payment status (processing, processed, expired, etc.).
confirmationRequiredIndicates whether customer confirmation is required before the payment is executed.
confirmationStatusCurrent confirmation state (none, pending, accepted, declined).
paymentUrlWeb/deep link allowing the customer to confirm the payment. For a Wave payment, this field will contain the redirect URL to Wave.
isDirectIndicates whether the payment was initiated as a direct flow.
payFeeIndicates whether fees are paid by the merchant.
createdAtPayment session creation timestamp.
amountInitial payment amount.
feeService fees applied to the payment.
chargedAmountTotal debited amount (amount + fees).
currencyTransaction currency (XOF, USD, etc.).
failureError details if the payment failed (null if successful).

customer

FieldDescription
nameName of the customer.
phoneNumberCustomer phone number (international format).

mobileMoney

FieldDescription
providerObject containing Mobile Money provider information.
provider.nameMobile Money provider identifier (e.g. WAVE_CI).

Payment Status

GET https://business.novasend.app/v1/payin/{reference}

This endpoint allows you to retrieve the current status of a payment at any time.

Response

{
  "id": "pr_bakvkozbmqcmte1d8izelffjlz",
  "type": "payin",
  "reference": "0f3fed58-0590-434e-8a00-5d6cd3560382",
  "status": "processing",
  "confirmationRequired": true,
  "confirmationStatus": "none",
  "paymentUrl": "https://business.novasend.app/link/QGRD4D",
  "customer": {
    "name": "Aziz",
    "phoneNumber": "+225xxxxxxxxx"
  },
  "mobileMoney": {
    "provider": {
      "name": "WAVE_CI"
    }
  },
  "isDirect": false,
  "payFee": false,
  "createdAt": "2026-01-19T09:11:25.832Z",
  "amount": 200,
  "fee": 7,
  "chargedAmount": 207,
  "currency": "XOF",
  "failure": null
}