Payment Options

To obtain some of the required parameters before initiating any transaction requests, it is necessary to fetch the list of payment options.

Below is the API description illustrating the procedure for obtaining the list of payment options. To obtain a suitable list of payment options, merchants must filter the request by country.

📘

Payment option activation

Merchants must have their payment options enabled by Ubiqpay before they can be used. In the near future, it will be possible to enable them directly through the dashboard.

Payment methods

Below all available payment methods:

NameDescription
MOBILE_MONEYPay via a Mobile Money account like Orange Money, MTN Money, M-PESA or any other Mobile Money platform.

Msisdn must be in international format. ex: +2250123467890
CARD Pay by credit card or debit card. Local or USD international card.
BANKPay by using the customer's bank account
EXTERNALPay via an external application such as Mybux, Seerbit, or Arakapay, ...
Usually, these apps propose multiple payment methods.

Payment flows

Each payment option has a specific payment flow which provides an overview of the payment validation process. There are three primary payment flows: direct, instructions, and redirect.

  • direct: In the direct flow, you need to include all payment details in the request, and the payment will be processed immediately without any additional steps required from the customer.
  • instructions: In the instructions flow, you must provide instructions to the customer, which will be found in the payment response under the instructions field.
  • redirect: Finally, in the redirect flow, the customer will be directed to another page to complete the payment, and the payment response will include a redirect_url field.

Voucher

🚧

Certain payment methods necessitate the transmission of a voucher or an OTP code within the payment request. These particular methods can be identified when the voucher_required field in the payment option object is set to true. If so, you'll find customer instructions in the voucher_instructions field.

{
    "id": 78,
    "name": "Orange Money",
    "available": true,
    "logo_url": "https://ubiqpay-static.s3.eu-west-1.amazonaws.com/images/orangemoney.svg",
    "country_code": "CI",
    "currency_code": "XOF",
    "payment_method": "MOBILE_MONEY",
    "payment_flow": "instructions",
    "min_amount": 200,
    "max_amount": 1500000,
    "voucher_required": true,
    "is_multiple_of": 5,
    "supports_decimals": false,
    "required_fields": ["voucher","msisdn"],
    "voucher_instructions": "To generate a temporary code, open the Orange Money Afrique app and click on \"My Account\", or dial <a href=\"tel:#144*82#\" class=\"font-bold\">#144*82#</a>"
}

Base value

We accommodate specific requirements from various payment providers. One such requirement is the acceptance of payment amounts that are multiples of a specified number. To address this, we have introduced the is_multiple_of field.

Purpose

The is_multiple_of field ensures that all payment amounts comply with the requirements set by certain payment providers. This field specifies the base number that all transaction amounts must be a multiple of.

Example: If the is_multiple_of value is 5 and a user attempts a transaction of 248 XOF, the system thrown an error: invalid.amount.

Payment option will look like this:

 {
    "id": 78,
    "name": "Orange Money",
    "available": true,
    "logo_url": "https://ubiqpay-static.s3.eu-west-1.amazonaws.com/images/orangemoney.svg",
    "country_code": "CI",
    "currency_code": "XOF",
    "payment_method": "MOBILE_MONEY",
    "payment_flow": "instructions",
    "min_amount": 200,
    "max_amount": 1500000,
    "is_multiple_of": 5,
    "supports_decimals": false,
    "voucher_required": true,
    "required_fields": ["voucher","msisdn"],
    "voucher_instructions": "To generate a temporary code, open the Orange Money Afrique app and click on \"My Account\", or dial <a href=\"tel:#144*82#\" class=\"font-bold\">#144*82#</a>"
}

Decimal support

if the field supports_decimals is present and is false. Then, you must ensure that you round the transaction amount. If it's not rounded, you will get an error invalid.amount.

Language
Credentials
OAuth2
Click Try It! to start a request and see the response here!