Skip to content
GitHub

Requirements overview and integration checklist

You must meet the following requirements before you deploy Rafiki to a production environment.

Be an account servicing entity

An account servicing entity (ASE) is an entity that provides and maintains payment accounts for its customers and is regulated within the jurisdictions it operates. Examples of ASEs include banks, digital wallet providers, and mobile money providers. The Introducing Rafiki page provides a few examples of an ASE’s responsibilities and obligations.

Rafiki should not be used in production by non-regulated entities.

Support at least one asset

You must set up Rafiki to support at least one asset. An asset in Rafiki represents an item of value that can be transferred via the Interledger Protocol. Since the Interledger Protocol aims to create an internet of value, it allows for the transfer of any asset, not just currency. In practice, however, assets are usually denominated in a currency (fiat or branded currencies).

Set up your assets

Associate each user-facing payment account with a wallet address

A wallet address is a publicly shareable standardized ID for a payment account. Each payment account belonging to your users (e.g., customers) must have at least one associated wallet address for the account to be able to send and/or receive payments via Open Payments and Interledger.

Set up your wallet addresses

Expose a webhook endpoint and react to events accordingly

The main communication channel between you and your Rafiki instance is composed of the Backend Admin API and a set of webhook events. Most of these events require you to interact with Rafiki. You must expose a webhook endpoint that listens for events dispatched by Rafiki, then react accordingly (for example, deposit or withdraw liquidity).

Specify your webhook endpoint and learn how to handle each event

Expose an exchange rate endpoint

To support cross-currency transactions, you must specify from where your Rafiki instance will fetch current exchange rates. Exchange rates are calculated as part of a payment’s quote, which estimates the full cost of transferring value over the network.

Specify your exchange rate endpoint

Charge a sending fee

You can charge a sending fee, on top of any estimated network fees, for facilitating transfers. Each asset you support can have a different fee structure.

Define your sending fees

Integrate with an identity provider (IdP)

An identity provider (IdP) is a system or service that stores and manages user identity information, authentication, and consent. Examples of IdPs include OpenID Connect and Okta.

Integration with an IdP is required if you plan to support Open Payments outgoing payments for your users. Open Payments requires that outgoing payment grant requests be interactive. In an interactive grant request, explicit interaction by an individual (e.g., an account holder) is required to approve the grant. Your IdP will handle the authentication and consent required to authorize a grant request.

Integrate Rafiki with your IdP

Integration checklist

Ensure you’ve completed the following tasks before you deploy Rafiki to a production environment and join the Interledger network.

  • You are a licensed financial account servicing entity within the jurisdiction(s) you operate in
  • You have added at least one asset, either through the Backend Admin API or the Rafiki Admin app
  • You have implemented a strategy for creating wallet addresses for your account holders
  • You have set up your webhook endpoint and understand how to handle each webhook event
  • You have set up your exchange rates endpoint
  • You have defined the sending fee you will charge, if any, for each asset, either through the Backend Admin API or the Rafiki Admin app
  • If supporting Open Payments outgoing payments, you have integrated with an IdP and configured the user consent screen and interaction flow
  • Your admin services are secured from external access