At Flutterwave, our goal is to provide the infrastructure for a unified payment solution that connects Africa to the world.

Over the last two years, we have been focused on helping banks and businesses provide seamless and secure payment experiences while we continue to look for more opportunities to connect their businesses to the global world.

We have also identified partnerships as a major factor to achieve our mission and that is why we recently integrated to Ripple Blockchain Network.

Ripple is a global leader in enterprise blockchain with a growing network of over 100 customers around the world with xCurrent, xVia, and xRapid in their product suite.

Blockchain is a distributed ledger of records without a centralized system on which the older parts of the record cannot be altered.

Just like an accounting ledger receives transaction records from the Journal and shows the transaction history of each account, blockchain receives transaction records from transacting parties and updates them in each of the parties’ ledger so that everyone has a clear picture of the true state of the transaction at any time. Also, unlike regular databases whose records could be updated or deleted at anytime, blockchain transactions cannot be reversed or deleted.

These reasons have made blockchain one of the most attractive technologies to use for payments and financial transactions.

xCurrent is used by banks and payment providers to process global payment for their customers, enabling more efficient processing of payments with certainty and provides the foundation of technical connectivity for RippleNet. It is the core product for financial institutions with a real-time settlement and bi-directional messaging.

Ripple’s xCurrent Architecture

The major components are:

Bank A and B — stands for the entity (Bank/Payment provider) integrating into the Ripple network, in this case, Flutterwave.

ILP Ledger — private ledger installed at each bank or payment provider to enable funds settlement in milliseconds. It tracks the credits, debits, and liquidity across the transacting parties.

Validator — the validator acts as the middleman between transacting parties acting as the source of truth regarding the success or failure of settlement payments and validating that all conditions are met before broadcasting the validation to the ledgers involved in the settlement.

FxTicker — The FX Ticker facilitates the exchange rate between two ledgers.

Bank Ledger — The actual bank Account where the transferring Entity send in their funding in the agreed currency (usually USD), a reflection of this is what is shown on the ILP ledger.

Flutterwave Integration

Flutterwave is the only technology rail in Africa on the Ripple Network for payment processing across Africa.

We enable banks and payment providers on the Ripple Network to receive payment from their customers anywhere in the world seamlessly via the blockchain technology.

To achieve this integration, we set up the following configurations on RippleNet for Flutterwave:

Installation of xCurrent instance — To install xCurrent instance, we connected to Ripple’s private Yum repository where the xCurrent package is distributed, then configured it on a dedicated instance following Ripple’s hardware requirement.

Certificate and Key Creation — TLS certificates and keys for the new xCurrent instance were created using the script provided by Ripple.

Database Setup — Schema files were set up as provided in the installed xCurrent package which populates Flutterwave’s databases with the necessary tables. Also, the choice of dedicated database was based on Ripple’s database requirement.

Creation of Flutterwave’s Messenger — Flutterwave’s messenger was created and configured to provide a messaging layer that allows us to exchange information with other transacting parties on the Ripple Network.

Creation of Flutterwave’s InterLedgerProtocol(ILP)— All transacting currency ledgers were created, each ledger supporting only one type of currency.

How it works

Partner Entity Onboarding

In order to accept disbursement requests from a transacting party on Ripple’s Network, the party has to go through the onboarding process on Ripple.

Onboarding a transacting party on Ripple involves the following steps:

Creating a database schema for the new connector.

Creating a new security certificate for the new connector.

Creating a connector account.

Setting up a transacting party on Rave so they can track their payouts.

Updating Ripple’s FxTicker with the exchange rates on the new connector based on real-time rates from the regulated financial institutions.

Settlement Bank receiving transacting party’s funding in agreed currency (usually USD) and with the required credit to their Rave profile

Splitting the funds received into their disbursement ILP ledgers according to transacting party’s instructions. The same split is reflected on their Rave profile to always show the updated balance.

The Payment Flow

1. Get Quote

The transacting party issues a “Get Quote” request to Flutterwave’s FxTicker to receive the current exchange rate at the time.

The quote is returned to the partner with a quote expiry window.

2. Accept Quote

The transacting party must “Accept Quote” before the expiry window otherwise the Validator will reject the quote acceptance.

3. Confirm Quote

Once the quote has been successfully accepted, Flutterwave Core API service receives a notification that includes the details of both the sender and beneficiary.

Flutterwave Core API services confirm that the request conforms with the Ripple rulebook and runs a compliance check on the sender.

If all checks are successful, a confirmation is sent back to the transacting partner, otherwise a failure response is returned in Ripple’s standard response format, stating the reasons for the failure.

4. Initiate Payment

The transacting party receives the confirmation response and initiates payment if confirmation is successful, otherwise it checks for the reason(s) for the failure and makes changes accordingly.

The transacting party ILP ledger must be sufficiently funded for the transaction and must meet all other requirements, or else the request will be rejected by the Validator.

5. Process Payment

Flutterwave Core API receives the payment request and forwards the request to the disbursement channel.

6. Confirm Payment

Once payment is processed successfully, a successful response is sent to the Ripple Network and Validator takes care of the ILP ledger settlement immediately.