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:
Name | Description |
---|---|
MOBILE_MONEY | Pay 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. |
BANK | Pay by using the customer's bank account |
EXTERNAL | Pay 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 totrue
. If so, you'll find customer instructions in thevoucher_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
.