You must be, or be working with, an account servicing entity (ASE). An ASE is an entity that provides and maintains payment accounts for its customers and is regulated in the jurisdictions it operates. Examples of ASEs include banks, digital wallet providers, and mobile money providers. The account servicing entity page provides examples of an ASE’s responsibilities and obligations.
For testing purposes, you can set up a mock account servicing entity that’s deployed Rafiki. However, Rafiki should not be used in production environments by non-regulated ASEs.
The Auth service hosts the Open Payments authorization server. Integration with this service is required if you don’t develop your own in-house service for authorization.
Required A tenant represents an isolated environment for an ASE. You must create a tenant even if you don’t intend to share your Rafiki instance across ASEs.
Required Each payment account in the ASE’s system must be linked to a wallet address. You must have at least one asset in Rafiki before creating wallet addresses.
Required You must expose a webhook endpoint that listens for events dispatched by Rafiki, then react accordingly by calling/interfacing with the Backend Admin API. For example, deposit or withdraw liquidity.
Use the Backend Admin API’s createQuote to create a quote resource on the sender’s wallet account. The quote shows how much it will cost the sender to deliver an amount to the receiver.
Use the Backend Admin API’s createOutgoingPayment to create an outgoing payment resource on the sender’s wallet account. This operations starts the payment. At this point, the sender’s ASE must fund/approve the payment before it sends.
As the payment flow progresses, the ASE is be notified about events that happen in the system. Some events are actionable, such as an outgoing_payment.created event. Review the webhook events page to learn more about handling each event.