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 Required

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 Required

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 Required

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 Required

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 Conditionally Optional

If you plan 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

Define your sending fees Optional

You have the option to 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

Peers Required

While you could use Rafiki solely for transfers between accounts on your ledger, you must add one or more peers if you intend to enable Interledger payments on your accounts. A peer is another ASE that you want to connect with via Interledger and is likely running their own Rafiki instance.

Set up peers in your Rafiki instance

Integrate with an identity provider (IdP) Conditionally Optional

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 use the authorization server provided through Rafiki’s auth service. The authorization server requires consent to be collected via an interactive grant before an outgoing payment request is issued. The purpose of the IdP is to handle the authentication and consent required to authorize the interactive 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