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 payout options. To obtain a suitable list of payout options, merchants must filter the request by country.
The API will return a list of payment options:
[{
"id": "ng_bank_w",
"name": "Bank Transfer",
"available": true,
"logo_url": "https://ubiqpay-static.s3.eu-west-1.amazonaws.com/images/bank.svg",
"country": "NG",
"currency": "NGN",
"payment_method": "BANK",
"payment_flow": "direct",
"min_amount": 100,
"max_amount": 1000000,
"supports_decimals": false,
"is_multiple_of": 1, // if not null, the amount must be a multiple of this value.
"required_fields": [
"email"
],
"extra_data": [
{
"bank_name": "AL-Barakah Microfinance Bank",
"bank_code": "090133"
},
{
"bank_name": "3Line Card Management Limited",
"bank_code": "110005"
}
]
}]
extra_data
gives you all available bank options.bank_name
andbank_code
must be used in the payout request.required_fields
indicates the required fields in the payout request. In this example,email
will be required in the payout request.available
: indicates the status of the payment option. Iffalse
the payment option should not be used. A technical issue prevents this option from working correctly.supports_decimals
: indicates if you can use decimals in the amount field.
Payout option activation
Merchants must have their payout options enabled by Ubiqpay before they can be used. In the near future, it will be possible to enable them directly through the dashboard.
Decimal support
Many payment methods in Africa don't accept decimal figures. If you provide an amount with decimals, we'll round it for you.
Payout 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 |
BANK | Pay by using the customer's bank account |
Payout flows
Each payout option has a specific payout flow which provides an overview of the payout validation process. There are three primary flows: direct
and redirect
.
- direct: In the direct flow, you need to include all payout details in the request, and the payout will be processed immediately without any additional steps required.
- redirect: Finally, in the redirect flow, the merchant will be directed to another page to complete the payout.
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 will round this amount to 250 XOF, based on the nearest multiple.
Rounding Mechanism
If the amount does not comply (i.e., it is not a multiple of the specified number), the system will automatically round the amount to the nearest value that is a multiple of the
is_multiple_of
value. This ensures compliance with the provider's requirements.
Payout option will look like this:
{
"id": "ci_momo_mtn_mobile_money_i",
"name": "MTN Mobile Money",
"available": true,
"logo_url": "https://ubiqpay-static.s3.eu-west-1.amazonaws.com/images/mtn.svg",
"country": "CI",
"currency": "XOF",
"payment_method": "MOBILE_MONEY",
"payment_flow": "direct",
"min_amount": 100,
"max_amount": 1000000,
"required_fields": [],
"supports_decimals": false,
"is_multiple_of": 5,
"supports_decimals": false,
"extra_data": []
}
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, we will do it for you, and you will be able to retrieve the original amount in the field.original_amount
.