2.3 Making a Pay-In
A comprehensive guide for building an effortless user experience to allow your customers in Africa to onramp using local fiat currencies.
Introduction
Allow your customers to deposit funds using their local currency and payment options, including bank transfer or mobile money, and have the funds automatically credited to your USD/USDT/USDC settlement wallet.
User Flow
Build out a simple UI in your app to allow your customers to seamlessly deposit using local fiat and payment options.
Collection steps & API overview
A guide of the user journey steps for making collections/deposits.
User journey step | What to show on the UX | What to ask the user for | API reference | What's returned from the API |
---|---|---|---|---|
1. Initiates on-ramp | Deposit capability | Request deposit | n/a | n/a |
2. Chooses a preferred payment channel | List of payment channels available to them eg: Bank Transfer, mobile money, P2P transfer | Their preference of payment method | Get Channels | A list of available payment options for the given country |
3. Choose the amount USD wanting to deposit. | A place for the user to nominate how much USD the customer wants to withdraw, and the limits thereof | The amount (USD) they are wanting to deposit | - Get Channel - Get Rates | - Limits for a given payment channel - Rate of local fiat/ US |
4. Enter my beneficiary details (mobile money only) | Input fields for customer to enter beneficiary details: - First name - Last name - mobile number (country code + string) - Select provider (mobile network) - Reason for sending | Please add mobile money details: | Mobile provider= Get Networks Reason for sending = Payment Reasons | Get Networks - A list of available networks Payment Reasons - Pre-defined list of reasons to select. |
5. Review deposit request. | 1. Transaction details including:- Payment Option- Payment channel- Payment Network- Account number/ Mobile number- Total USD - Rate (if req) -Total local fiat2. Ability to confirm or cancel. | To confirm or cancel the requested transaction. | Submit Collection Request | A quote to make the exchange |
6. Initiate deposit request. | Confirmation the transaction is being processed | n/a | Accept Collection request Deny Collection Request | Confirmation or rejection of the transaction |
7. Deposit successful | Confirmation that transaction was successful. | n/a | n/a | n/a |
8. Retrieve information about a specific payment | View of transaction details | View transaction details | Lookup Collection | Information about a specific payment |
To get started, open the recipe below:
UI Tutorial
This is a guide to showcase a proposed UI/UX framework that can be followed to best build out the required flows.
To begin, a customer will initiate a deposit.
For cross border collections or depositing from another person's account or mobile wallet, a country selector will be necessary for a customer to select between all supported countries where the recipient is based. If a customer can only deposit to their own saved account, then the country saved can be passed through to the api only.
The supported and enabled payment channel of the chosen country will be shown to the customer for them to select their preferred method of payment.
Once the preferred payment channel has been selected, the customer can now enter the amount they would like to deposit. The USD amount will be entered and the api will provide the rate conversion to the local fiat of the country selected. To show the local currency conversion on the same screen will require the calculations to be handled by partner. The same will go whether you would like to allow customers to enter the fiat amount opposed to the $ amount.
The api will also provide the any relevant min and max transaction limits relevant for the transaction which can also be displayed to alert customers upfront.
It's now time to add the relevant recipients details to which the customer wants to make the deposit via mobile money.
-
First name - A text field for the customer to enter the first name of the recipient
-
Last name - A text field for the customer to enter the last name of the recipient.
-
Mobile number - A text field that contains the dialling code and number of the recipient.
-
Select provider - A drop down field that will show all the supported networks passed through by the api.
-
Reason for Sending - A dropdown that will contain the relevant pre-defined reasons here. This is necessary if you are allowing customers across borders to deposit money on other beneficiary wallets on your platform.
This screen will show the customer all of the transactional details for their deposit request for them to review and confirm that it is correct. The details that you will get from the SubmitPaymentRequest endpoint will include:
6.1 P2P or Manual Bank Transfer
-
Payment channel - payment method
-
Payment Network - selected bank name
-
Total Amount in USD
-
USD/Fiat Rate
-
Total Amount in Fiat
-
Fee - this will need to be built in by partner if fee's or any other costs are passed on to customers for transactions.
-
Total Amount Received - this calculation will need to be built in on the partner's side.
6.2 Mobile Money
-
Payment channel - payment method
-
Payment Network - selected mobile network/ provider
-
Mobile number - mobile number to be in format of country code and number.
-
Total Amount in USD
-
USD/Fiat Rate
-
Total Amount in Fiat
-
Fee - this will need to be built in by partner if fee's or any other costs are passed on to customers for transactions.
-
Total Amount Received - this calculation will need to be built in on the partner's side.
If your customer has selected bank transfer as their payment method, then they will be shown the relevant bank account details that they are required to make the deposit into. This screen is shown once they have accepted the collection request. (transactional quote)
Remember!
Your customer will be required to make the deposit to the relevant bank account using the correct reference provided. Once they have made the payment and the funds reflect in the account, then only will the deposit be approved.
8.1 Manual Bank Transfer
When deposit funds are reflecting in the correct bank account, the deposit will be approved by the YC team. At this time, an api request will be sent to top up your customers wallet on your platform.
8.2 Mobile Money
Once your customer has accepted the deposit request, they will be notified to check their mobile money phone number to approve the request from their mobile money network provider. Once they have approved the request, an api request will be sent to top up your customers wallet on your platform.
Updated 1 day ago