# Generic Transaction Patterns
# Preface
This section contains information about how to use this document.
# Conventions Used in This Document
The following conventions are used in this document to identify the specified types of information
| Type of Information | Convention | Example |
|---|---|---|
| Elements of the API, such as resources | Boldface | /authorization |
| Variables | Italics within curly brackets | {ID} |
| Glossary terms | Italics on first occurrence; defined in Glossary | The purpose of the API is to enable interoperable financial transactions between a Payer (a payer of electronic funds in a payment transaction) located in one FSP (an entity that provides a digital financial service to an end user) and a Payee (a recipient of electronic funds in a payment transaction) located in another FSP. |
| Library documents | Italics | User information should, in general, not be used by API deployments; the security measures detailed in API Signature and API Encryption should be used instead. |
# Document Version Information
| Version | Date | Change Description |
|---|---|---|
| 1.0 | 2018-03-13 | Initial version |
# Introduction
This document introduces the four generic transaction patterns that are supported in a logical version of the Interoperability API. Additionally, all logical services that are part of the API are presented on a high-level.
# Open API for FSP Interoperability Specification
The Open API for FSP Interoperability Specification includes the following documents.
# Logical Documents
# Asynchronous REST Binding Documents
# Data Integrity, Confidentiality, and Non-Repudiation
# General Documents
# Logical API Services
The Interoperability API consists of a number of logical API resources. Each resource defines one or more services that clients can use to connect to a server that has implemented the API. This section introduces these services.
Note: API services identified in this section may not be relevant to (and therefore may not appear in) the generic transaction patterns identified in Generic Transaction Patterns.
For example, some services are used for provisioning of information, are part of error cases, or are for retrieving information that is not necessary in a generic transaction pattern.
# Common Functionality
This section introduces functionality that is used by more than one logical API resource or service.
# Party Addressing
A Party is an entity such as an individual, a business, an organization that has a financial account in one of the FSPs. A party is addressed by a combination of an ID type and an ID, and possibly also a subtype or sub ID. Some examples of ID type and ID combinations are:
ID type: MSISDN, ID: +123456789
ID type: Email, ID: john@doe.com
# Interledger
The API includes basic support for the Interledger Protocol (ILP) by defining a concrete implementation of the Interledger Payment Request protocol1 (opens new window)(ILP) in the logical API resources Quotes and Transfers. More details of the ILP protocol can be found on the Interledger project website2 (opens new window), in the Interledger Whitepaper3 (opens new window), and in the Interledger architecture specification4 (opens new window).
# API Resource Participants
In the API, a Participant is the same as an FSP that is participating in an Interoperability Scheme. The primary purpose of the logical API resource Participants is for FSPs to find out in which other FSP a counterparty in an interoperable financial transaction is located. There are also services defined for the FSPs to provision information to a common system.
# Requests
This section identifies the logical API service requests that can be sent from a client to a server.
# Lookup Participant Information
The logical API service request Lookup Participant Information is used from an FSP to request from another system, which could be another FSP or a common system, information regarding in which FSP a counterparty in an interoperable financial transaction is located.
Successful response: Return Participant Information
Error response: Return Participant Information Error
# Create Participant Information
The logical API service request Create Participant Information is used to provision information regarding in which FSP a party is located.
Successful response: Return Participant Information
Error response: Return Participant Information Error
# Create Bulk Participant Information
The logical API service request Create Bulk Participant Information is used to provision information regarding in which FSP one or more parties are located.
Successful response: Return Bulk Participant Information
Error response: Return Bulk Participant Information Error
# Delete Participant Information
The logical API service request Delete Participant Information is used to remove information regarding in which FSP a party is located.
Successful response: Return Participant Information
Error response: Return Participant Information Error
# Responses
This section identifies the logical API service responses that can be sent back to a client from a server.
# Return Participant Information
The logical API service response Return Participant Information is used to return information from the requests Lookup Participant Information, Create Participant Information and Delete Participant Information.
# Return Bulk Participant Information
The logical API service response Return Bulk Participant Information is used to return information from the request Create Bulk Participant Information.
# Error Responses
This section identifies the logical API service error responses that can be sent back to a client from a server.
# Return Participant Information Error
The logical API service error response Return Participant Information Error is used to return error information regarding the requests Lookup Participant Information, Create Participant Information and Delete Participant Information.
# Return Bulk Participant Information Error
The logical API service error response Return Bulk Participant Information Error is used to return information from the request Create Bulk Participant Information.
# API Resource Parties
In the API, a Party is an individual, a business, an organization, or a similar entity, that has a financial account in one of the FSPs. The primary purpose of the logical API resource Parties is for FSPs to ascertain information regarding a counterparty in an interoperable financial transaction, such as name and birth date of the Party.
# Requests
This section identifies the logical API service requests that can be sent from a client to a server.
# Lookup Party Information
The logical API service request Lookup Party Information is used by an FSP to request from another FSP information regarding a counterparty in an interoperable financial transaction.
Successful response: Return Party Information.
Error response: Return Party Information Error.
# Responses
This section identifies the logical API service responses that can be sent back to a client from a server.
# Return Party Information
The logical API service response Return Party Information is used to return information from the request Lookup Party Information.
# Error Responses
This section identifies the logical API service error responses that can be sent back to a client from a server.
# Return Party Information Error
The logical API service error response Return Party Information Error is used to return error information regarding the request Lookup Party Information.
# API Resource Transaction Requests
In the API, a Transaction Request is a request from a Payee to a Payer to transfer electronic funds to the Payee, which the Payer can accept or reject. The primary purpose of the logical API resource Transaction Requests is for a Payee FSP to send the request to transfer to the Payer FSP.
# Requests
This section identifies the logical API service requests that can be sent from a client to a server.
# Perform Transaction Request
The logical API service request Perform Transaction Request is used to send a Transaction Request from a Payee FSP to the Payer FSP; that is, to ask if a Payer will accept or reject a transaction from the Payer to the Payee.
Successful response: Return Transaction Request Information
Error response: Return Transaction Request Information Error
# Retrieve Transaction Request Information
The logical API service request Retrieve Transaction Request Information is used from a Payee FSP to a Payer FSP to request information regarding a previously-sent Transaction Request.
Successful response: Return Transaction Request Information
Error response: Return Transaction Request Information Error
# Responses
This section identifies the logical API service responses that can be sent back to a client from a server.
# Return Transaction Request Information
The logical API service response Return Transaction Request Information is used to return information from the requests Perform Transaction Request or Retrieve Transaction Request Information.
# Error Responses
This section identifies the logical API service error responses that can be sent back to a client from a server.
# Return Transaction Request Information Error
The logical API service error response Return Transaction Request Information Error is used to return error information regarding the requests Perform Transaction Request or Retrieve Transaction Request Information.
# API Resource Quotes
In the API, a Quote is the price for performing an interoperable financial transaction from the Payer FSP to the Payee FSP. The primary purpose of the logical API resource Quotes is for a Payer FSP to request a Payee FSP to calculate the Payee FSP's part of the quote.
# Requests
This section identifies the logical API service requests that can be sent from a client to a server.
# Calculate Quote
The logical API service request Calculate Quote is used from a Payer FSP to ask a Payee FSP to calculate the Payee FSP's part of the quote to perform an interoperable financial transaction. The Payee FSP should also create the ILP Packet and the condition (see Interledger section for links to more information) when receiving the request.
Successful response: Return Quote Information
Error response: Return Quote Information Error
# Retrieve Quote Information
The logical API service request Retrieve Quote Information is used by a Payer FSP to request that a Payee FSP ask for information regarding a previously-sent Calculate Quote request.
Successful response: Return Quote Information
Error response: Return Quote Information Error
# Responses
This section identifies the logical API service responses that can be sent back to a client from a server.
# Return Quote Information
The logical API service response Return Quote Information is used to return information from the requests Calculate Quote or Retrieve Quote Information.
# Error Responses
This section identifies the logical API service error responses that can be sent back to a client from a server.
# Return Quote Information Error
The logical API service error response Return Quote Information Error is used to return error information regarding the requests Calculate Quote or Retrieve Quote Information.
# API Resource Authorizations
In the API, an Authorization is an approval from a Payer to perform an interoperable financial transaction by entering the applicable credentials in a Payee FSP system. An example where this kind of approval is used, is when a Payer is using an ATM that is managed by another FSP. The primary purpose of the logical API resource Authorizations is for a Payer FSP to request a Payee FSP to ask the Payer to enter the credentials.
# Requests
This section identifies the logical API service requests that can be sent from a client to a server.
# Perform Authorization
The logical API service request Perform Authorization is used from a Payer FSP to ask a Payee FSP to enter the applicable credentials to approve an interoperable financial transaction.
Successful response: Return Authorization Result
Error response: Return Authorization Error
# Responses
This section identifies the logical API service responses that can be sent back to a client from a server.
# Return Authorization Result
The logical API service response Return Authorization Result is used to return information from the request Perform Authorization.
# Error Responses
This section identifies the logical API service error responses that can be sent back to a client from a server.
# Return Authorization Error
The logical API service error response Return Authorization Error is used to return error information regarding the request Perform Authorization.
# API Resource Transfers
In the API, a Transfer is hop-to-hop ILP (see Interledger section for links to more information) transfer of funds.
The transfer also contains information regarding the end-to-end interoperable financial transaction. The primary purpose of the logical API resource Transfers is for an FSP or Switch to request that the next entity in the chain of the ILP Payment perform the transfer involved in the interoperable financial transaction.
# Requests
This section identifies the logical API service requests that can be sent from a client to a server.
# Perform Transfer
The logical API service request Perform Transfer is used by an FSP or Switch to request the next entity in the chain of the ILP Payment to reserve the transfer involved in an interoperable financial transaction.
Successful response: Return Transfer Information
Error response: Return Transfer Information Error
# Retrieve Transfer Information
The logical API service request Retrieve Transfer Information is used by an FSP or Switch to request the next entity in the chain of the ILP Payment for information regarding the transfer involved in an interoperable financial transaction.
Successful response: Return Transfer Information
Error response: Return Transfer Information Error
# Responses
This section identifies the logical API service responses that can be sent back to a client from a server.
# Return Transfer Information
The logical API service response Return Transfer Information is used to return information from the requests Perform Transfer or Retrieve Transfer Information. On receiving the Return Transfer Information response, the FSP or Switch should validate the fulfilment (see Interledger section for links to more information) and commit the reserved transfer if the validation is successful.
# Error Responses
This section identifies the logical API service error responses that can be sent back to a client from a server.
# Return Transfer Information Error
The logical API service error response Return Transfer Information Error is used to return error information regarding the requests Perform Transfer or Retrieve Transfer Information.
# API Resource Transactions
In the API, a Transaction is an end-to-end interoperable financial transaction between the Payer FSP and Payee FSP. The primary purpose of the logical API resource Transactions is for a Payer FSP to request end-to-end information from the Payee FSP regarding an interoperable financial transaction; for example, in order to get a token or code that the Payer can use to redeem a service or product.
# Requests
This section identifies the logical API service requests that can be sent from a client to a server.
# Retrieve Transaction Information
The logical API service request Retrieve Transaction Information is used by a Payer FSP to request that a Payee FSP get information regarding a previously-performed interoperable financial transaction (by using the logical API resource Transfers, see API Resource Tarnsfers section).
Successful response: Return Transfer Information
Error response: Return Transfer Information Error
# Responses
This section identifies the logical API service responses that can be sent back to a client from a server.
# Return Transaction Information
The logical API service response*Return Transaction Information is used to return information from the request Retrieve Transfer Information.
# Error Responses
This section identifies the logical API service error responses that can be sent back to a client from a server.
# Return Transaction Information Error
The logical API service error response Return Transaction Information Error is used to return error information regarding the request Retrieve Transfer Information.
# API Resource Bulk Quotes
In the API, a Bulk Quote is a collection of individual quotes (see API Resource Quotes section for information regarding a single quote) for performing more than one interoperable financial transaction from the Payer FSP to the Payee FSP.
The primary purpose of the logical API resource Bulk Quotes is for a Payer FSP to request a Payee FSP to calculate the Payee FSP's part of the bulk quote.
# Requests
This section identifies the logical API service requests that can be sent from a client to a server.
# Calculate Bulk Quote
The logical API service request Calculate Bulk Quote is used by a Payer FSP to request that a Payee FSP calculate the Payee FSP's part of the quotes to perform more than one interoperable financial transaction.
The Payee FSP should also create the ILP Packet and the condition (see Interledger section for links to more information) per quote when receiving the request.
Successful response: Return Bulk Quote Information
Error response: Return Bulk Quote Information Error
# Retrieve Bulk Quote Information
The logical API service request Retrieve Bulk Quote Information is used by a Payer FSP to request that a Payee FSP ask for information regarding a previously-sent Calculate Bulk Quote request.
Successful response: Return Bulk Quote Information
Error response: Return Bulk Quote Information Error
# Responses
This section identifies the logical API service responses that can be sent back to a client from a server.
# Return Bulk Quote Information
The logical API service response Return Bulk Quote Information is used to return information from the requests Calculate Bulk Quote or Retrieve Bulk Quote Information.
# Error Responses
This section identifies the logical API service error responses that can be sent back to a client from a server.
# Return Bulk Quote Information Error
The logical API service error response Return Bulk Quote Information Error is used to return error information regarding the requests Calculate Bulk Quote or Retrieve Bulk Quote Information.
# API Resource Bulk Transfers
In the API, a Bulk Transfer is a collection of hop-to-hop ILP (see Interledger.section for links to more information) transfers of funds. The transfers also contain information regarding the end-to-end interoperable financial transactions.
The primary purpose of the logical API resource Bulk Transfers is to enable an FSP or Switch to request that the next entity in the chain of the ILP Payment perform the transfers involved in the interoperable financial transactions.
# Requests
This section identifies the logical API service requests that can be sent from a client to a server.
# Perform Bulk Transfer
The logical API service request Perform Bulk Transfer is used by an FSP or Switch to request that the next entity in the chain of the ILP Payment reserve the transfer involved in an interoperable financial transaction.
Successful response: Return Bulk Transfer Information
Error response: Return Bulk Transfer Information Error
# Retrieve Bulk Transfer Information
The logical API service request Retrieve Bulk Transfer Information is used from an FSP or Switch to request that the next entity in the chain of the ILP Payment for information regarding the transfer involved in an interoperable financial transaction.
Successful response: Return Bulk Transfer Information
Error response: Return Bulk Transfer Information Error
# Responses
This section identifies the logical API service responses that can be sent back to a client from a server.
# Return Bulk Transfer Information
The logical API service response Return Bulk Transfer Information is used to return information from the requests Perform Bulk Transfer or Retrieve Bulk Transfer Information.
On receiving the response Return Bulk Transfer Information, the FSP or Switch should validate the fulfilments (see Interledger section for links to more information) and commit the reserved transfers if the validations are successful.
# Error Responses
This section identifies the logical API service error responses that can be sent back to a client from a server.
# Return Bulk Transfer Information Error
The logical API service error response Return Bulk Transfer Information Error is used to return error information regarding the requests Perform Bulk Transfer or Retrieve Bulk Transfer Information.
# Generic Transaction Patterns
This section provides information about the three primary transaction patterns defined in the Interoperability API:
Each transaction pattern defines how funds can be transferred from a Payer located in one Financial Service Provider (FSP) to a Payee located in another FSP.
Both the Payer-Initiated Transaction and the Payee-Initiated Transaction patterns are intended for a single transfer of funds from one Payer to one Payee. The significant difference between the two patterns is in which of the participants in the transaction is responsible for the initiation of the transaction.
The Bulk Transaction pattern should be used when a single Payer would like to transfer funds to multiple Payees, possibly in different FSPs, in a single transaction.
This section also provides information about Payee-Initiated Transaction using OTP. which is an alternative to the Payee-Initiated Transaction.
Additionally, the section provides high-level information about all logical services that are part of the API.
# Payer-Initiated Transaction
In a Payer-Initiated Transaction, the Payer initiates the transaction.
# Business Process Pattern Description
The Payer-Initiated Transaction pattern should be used whenever a Payer would like to transfer funds to another party whose account is not located in the same FSP.
In most implementations, Payee involvement is limited to receiving a notification in the event of a successful transaction. Exceptions in which the Payee is more involved are:
In countries that require the
Payeeto confirm receipt of funds.Cases in which the
Payeeshould accept the terms of the transaction (for example, Agent-Initiated Cash-In).
# Participants and Roles
The actors in a Payer-Initiated Transaction are:
Payer -- The payer of funds in a financial transaction.
Payee -- The recipient of funds in a financial transaction.
The intermediary objects used in a Payer-Initiated Transaction to perform the transaction are:
Payer FSP -- The FSP in which the Payer's account is located.
Switch (optional) -- An optional entity used for routing of requests between different FSPs. This object can be removed if requests should be routed directly between a Payer and Payee FSP.
Account Lookup System -- An entity used for retrieving information regarding accounts or participants. Could be hosted in a separate server, in the Switch, or in the different FSPs.
Payee FSP -- The FSP in which the Payee's account is located.
# Business Process Sequence Diagram
Figure 1 shows the UML sequence diagram for a Payer-Initiated Transaction.
Figure 1 -- Payer-Initiated Transaction
# Internal Processing Steps
This section provides descriptions of and assumptions made for all steps in the sequence shown in Figure 1.
# Lookup Counterparty
Description
The
Payerinitiates the transaction by requesting to send funds to aPayee, using thePayer FSP's front-end API (outside the scope of this API).Assumptions
None.
Description
The
Payer FSPtries to find thePayeewithin the FSP system. Because thePayeecannot be found in thePayer FSPsystem, the request Lookup Party Information is sent by thePayer FSPto the optionalSwitchto get information regarding thePayee, including in which FSP thePayeeis located.Assumptions
The Payee is assumed to be in a different FSP than the
Payer. Also, aSwitchis assumed to be placed between thePayer FSPand thePayee FSPto route the messages between FSPs. TheSwitchis optional in the process, as the request Lookup Party Information could also be sent directly to thePayee FSPif there is noSwitchin-between. As thePayer FSPshould not know in which FSP thePayeeis located if there is noSwitchpresent, the request might need to be sent to more than one FSP.Description
The
Switchreceives the request Lookup Party Information. TheSwitchthen tries to find in which FSP thePayeeis located by sending the request Lookup Participant Information to theAccount Lookup System.Assumptions
An
Account Lookup Systemis assumed to exist in a different server than theSwitch. It is possible that theAccount Lookup Systemis in the same system as theSwitch.Description
The
Account Lookup Systemreceives the request Lookup Participant Information. It then performs an internal lookup to find in which FSP thePayeeis located. When the lookup is completed, the response Return Participant Information is sent to inform the Switch about which FSP thePayeeis located in.Assumptions
The
Payeecan be found by theAccount Lookup System.Description
The
Switchreceives the response Return Participant Information. As theSwitchnow knows in which FSP thePayeeis located, theSwitchsends the request Lookup Participant Information to thePayee FSPto get more information about thePayee.Assumptions
None.
Description
The
Payee FSPreceives the request Lookup Participant Information. ThePayee FSPthen does an internal lookup to find more information regarding thePayeeand sends the response Return Participant Information to theSwitch.Assumptions
None.
Description
The
Switchreceives the response Return Party Information. TheSwitchthen routes the Return Party Information response to thePayer FSPto send the information about thePayee.Assumptions
None.
Description
The
Payer FSPreceives the response Return Party Information containing information about thePayee.Assumptions
None.
# Calculate Quote
Description
Depending on the fee model used, the
Payer FSPrates the transaction internally and includes the quote information in the request Calculate Quote to aSwitchto retrieve the full quote for performing the interoperable financial transaction from thePayer FSPto thePayee FSP. The transaction details are sent in the parameters of the request to allow for thePayee FSPto correctly calculate the quote.Assumptions
In this sequence, a
Switchis placed between thePayer FSPand thePayee FSPto route the messages. TheSwitchis optional in the process, as the requestCalculate Quote could also be sent directly to thePayee FSPif there is noSwitchin-between.Description
The
Switchreceives the Calculate Quote request. TheSwitchthen routes the request to thePayee FSP, using the same parameters.Assumptions
None.
Description
The
Payee FSPreceives the Calculate Quote request. ThePayee FSPthen internally calculates the fees or FSP commission for performing the transaction. It then constructs the ILP Packet containing the ILP Address of thePayee, the amount that thePayeewill receive, and the transaction details. The fulfilment and the condition are then generated out of the ILP Packet combined with a local secret.Assumptions
None.
Optional procedure: Quote Confirmation by Payee
a. Description
Depending on the use case and the fee model used, the
Payeemight be informed of the quote in order to confirm the proposed financial transaction. The quote is in that case sent to thePayeeusing a front-end API (outside the scope of this API). ThePayeereceives the quote including information regarding the transaction including fees and optionallyPayername. ThePayeethen confirms the quote using a front-end API (outside the scope of this API), and thePayee FSPreceives the confirmation from thePayee.Assumptions
The
Payeeis assumed to accept and confirm the quote. If thePayeewould reject the quote, an error response would be sent from thePayeeFSP to thePayer FSPvia theSwitchto inform about the rejected quote.End of Optional procedure
Description
The
Payee FSPuses the response Return Quote Information to theSwitchto return information to thePayer FSPabout the quote, the ILP Packet, and the condition. The quote has an expiration time, to inform thePayer FSPuntil which point in time the quote is valid.Assumptions
None.
Description
The
Switchreceives the response Return Quote Information. TheSwitchwill then route the response to thePayer FSP.Assumptions
None.
Description
The
Payer FSPreceives the responseReturn Quote Information from theSwitch. ThePayer FSPthen informs thePayerusing a front-end API (outside the scope of this API) about the total fees to perform the transaction, along with thePayeename.Assumptions
The total quote can be calculated by the
Payer FSP. Also, thePayeename was allowed to be sent during the counterparty lookup (depending on regulation on privacy laws).Description
The
Payerreceives the transaction information including fees, taxes and optionallyPayeename. If thePayerrejects the transaction, the sequence ends here.Assumptions
The
Payeris assumed to approve the transaction in this sequence. If thePayerwould reject the transaction at this stage, no response regarding the rejection is sent to thePayee FSP. The created quote at thePayee FSPshould have an expiry time, at which time it is automatically deleted.
# Perform Transfer
Description
The
Payer FSPreceives an approval of the interoperable financial transaction using a front-end API (out of scope of this API). ThePayer FSPthen performs all applicable internal transaction validations (for example, limit checks, blacklist check, and so on). If the validations are successful, a transfer of funds is reserved from thePayer's account to either a combinedSwitchaccount or aPayee FSPaccount, depending on setup. After the transfer has been successfully reserved, the request Perform Transfer is sent to theSwitchto request theSwitchto transfer the funds from thePayer FSPaccount in the Switch to thePayee FSPaccount. The request Perform Transfer includes a reference to the earlier quote, an expiry of the transfer, the ILP Packet, and the condition that was received from thePayee FSP. The interoperable financial transaction is now irrevocable from thePayer FSP.Assumptions
Internal validations and reservation are assumed to be successful. In this sequence, a
Switchis placed between thePayer FSPand thePayee FSPto route the messages. TheSwitchis optional in the process, as the request Perform Transfer could also be sent directly to thePayee FSPif there is noSwitchin-between.Description
The
Switchreceives the request Perform Transfer. TheSwitchthen performs all its applicable internal transfer validations (for example, limit checks blacklist check and so on). If the validations are successful, a transfer is reserved from aPayer FSPaccount to aPayee FSPaccount. After the transfer has been successfully reserved, the request Perform Transfer is sent to thePayee FSP, including the same ILP Packet and condition as was received from thePayer FSP. The expiry time should be decreased by theSwitchso that thePayee FSPshould answer before theSwitchanswers to thePayer FSP. The transfer is now irrevocable from theSwitch.Assumptions
Internal validations and reservation are successful.
Description
The
Payee FSPreceives the request Perform Transfer. ThePayee FSPthen performs all applicable internal transaction validations (for example, limit checks, blacklist check, and so on). It also verifies that the amount and ILP Address in the ILP Packet are correct and match the amount andPayeein the transaction details stored in the ILP Packet. If all the validations are successful, a transfer of funds is performed from either a combinedSwitchaccount or aPayer FSPaccount to thePayee's account and the fulfilment of the condition is regenerated, using the same secret as in Step 11. After the interoperable financial transaction has been successfully performed, a transaction notification is sent to thePayeeusing a front-end API (out of scope of this API) and the response Return Transfer Information is sent to theSwitch, including the regenerated fulfilment. The transfer is now irrevocable from thePayee FSP.Assumptions
Internal validations and transfer of funds are successful.
Description
The
Payeereceives a transaction notification containing information about the successfully performed transaction.Assumptions
None.
Description
The
Switchreceives the response Return Transfer Information. TheSwitchthen validates the fulfilment and commits the earlier reserved transfer. TheSwitchthen uses the response Return Transfer Information to thePayer FSP, using the same parameters.Assumptions
The fulfilment is assumed to be correctly validated.
Description
The
Payer FSPreceives the response Return Transfer Information. ThePayer FSPthen validates the fulfilment and commits the earlier reserved transaction.Assumptions
The fulfilment is assumed to be correctly validated.
Optional fragment: Get Transaction Details
Description
In case the interoperable financial transaction contains additional information that is useful for the
Payeror thePayer FSP, such as a code or a voucher token, thePayer FSPcan use the request Return Transfer Information to get the additional transaction information. The request Retrieve Transaction Information is sent to theSwitch.Assumptions
None.
Description
The
Switchreceives the request Retrieve Transaction Information. TheSwitchthen routes the Retrieve Transaction Information request to thePayee FSP.Assumptions
None.
Description
The
Payee FSPreceives the request Retrieve Transaction Information. ThePayee FSPthen collects the requested information and sends the response Return Transaction Information to theSwitch.Assumptions
The transaction with the provided ID can be found in the
Payee FSP.Description
The
Switchreceives the response Return Transaction Information. The Switch then routes the Return Transaction Information response to thePayer FSP.Assumptions
None.
Description
The
Payer FSPreceives the response Return Transaction Information.Assumptions
None.
End of Optional fragment
Description
The
Payer FSPsends a transaction notification to thePayeeusing a front-end API (out of scope of this API), optionally including transaction details retrieved from thePayee FSP.Assumptions
None.
Description
The
Payerreceives a transaction notification containing information about the successfully performed transaction.Assumptions
None.
# Payee-Initiated Transaction
In a Payee-Initiated Transaction, the Payee (that is, the recipient of electronic funds) initiates the transaction.
# Business Process Pattern Description
The pattern should be used whenever a Payee would like to receive funds from another party whose account is not located in the same FSP.
In all alternatives to this pattern, the Payer must in some way confirm the request of funds. Some possible alternatives for confirming the request are:
Manual approval -- A transaction request is routed from the Payee to the Payer, the Payer can then either approve or reject the transaction.
Pre-approval of Payee -- A Payer can pre-approve a specific Payee to request funds, used for automatic approval of, for example, school fees or electric bills.
Another alternative for approval is to use the business pattern Payee-Initiated Transaction using OTP.
# Participants and Roles
The actors in a Payee-Initiated Transaction are:
Payer -- The payer of funds in a financial transaction.
Payee -- The recipient of funds in a financial transaction.
The intermediary objects used in a Payee-Initiated Transaction to perform the transaction are:
Payer FSP -- The FSP in which the Payer's account is located.
Switch (optional) -- An optional entity used for routing of requests between different FSPs. This object can be removed if requests should be routed directly between a Payer and Payee FSP.
Account Lookup System -- An entity used for retrieving information regarding accounts or participants. Could be hosted in a separate server, in the Switch, or in the different FSPs.
Payee FSP -- The FSP in which the Payee's account is located.
# Business Process Sequence Diagram
Figure 2 shows the UML sequence diagram for a Payee-Initiated Transaction.
Figure 2 -- Payee-Initiated Transaction
# Internal Processing Steps
This section provides descriptions of and assumptions made for all steps in the sequence shown in Figure 2 above.
# Lookup Counterparty
Description
The
Payeeinitiates the transaction by requesting to receive funds from aPayer, using thePayee FSP's front-end API (outside the scope of this API).Assumptions
None.
Description
The
Payee FSPtries to find the Payer within the FSP system. Because thePayercannot be found in thePayee FSPsystem, thePayee FSPsends the request to the optionalAccount Lookup Systemto get information regarding in which FSP thePayeris located.Assumptions
The
Payeris assumed to be located in a different FSP than thePayee. Also, anAccount Lookup Systemis assumed to exist.The
Account Lookup Systemis optional in the process, as the request Lookup Participant Information could also be sent directly to thePayer FSPif there is noAccount Lookup System. As thePayee FSPshould not know in which FSP the Payer is located if there is noAccount Lookup Systempresent, the request might need to be sent to more than one FSP. It is also possible that thePayee FSPwould like more information about thePayerbefore a transaction request is sent; in that case the request Lookup Participant Information, either to the Switch or directly to thePayer FSP, should be sent instead of Lookup Participant Information to theAccount Lookup System.Description
The
Account Lookup Systemreceives the Lookup Participant Information. It then performs an internal lookup to find in which FSP thePayeris located. When the lookup is completed, the response Return Participant Information is sent to inform thePayee FSPabout which FSP thePayeris located.Assumptions
The
Payercan be found by theAccount Lookup System.Description
The
Payee FSPreceives the response Return Participant Information.Assumptions
None.
Transaction Request
Description
The
Payee FSPsends the request Perform Transaction Request to theSwitch. The request contains the transaction details including the amount that the Payee would like to receive.Assumptions
In this sequence, a
Switchis placed between thePayee FSPand thePayer FSPto route the messages. TheSwitchis optional in the process, as the request Perform Transaction Request could also be sent directly to thePayer FSPif there is no Switch in-between.Description
The
Switchreceives the Perform Transaction Request. TheSwitchthen routes the request to thePayer FSP, using the same parameters.Assumptions
None.
Description
The
Payer FSPreceives the request Perform Transaction Request. ThePayer FSPthen optionally validates the transaction request (for example, whether thePayerexists) and uses the response Return Transaction Request Information to inform thePayee FSPvia theSwitchthat the transaction request has been received.Assumptions
The optional validation succeeds.
Description
The
Switchreceives the response Return Transaction Request Information. TheSwitchthen sends the same response Return Transaction Request Information to inform thePayee FSPabout the successfully delivered transaction request to thePayer FSP.Assumptions
None.
Description
The
Payee FSPreceives the response Return Transaction Request Information from theSwitch.Assumptions
None.
# Calculate Quote
Description
The
Payer FSPrates the transaction internally based on the fee model used and includes the quote information in the requestCalculate Quote to aSwitchto retrieve the full quote for performing the interoperable financial transaction from thePayer FSPto thePayee FSP. The transaction details, including a reference to the earlier sent transaction request, are sent in the parameters of the request to allow for thePayee FSPto correctly calculate the quote.Assumptions
In this sequence, a
Switchis placed between thePayer FSPand thePayee FSPto route the messages. TheSwitchis optional in the process, as the request Calculate Quote could also be sent directly to thePayee FSPif there is noSwitchin-between.Description
The
Switchreceives the Calculate Quote request. TheSwitchthen routes the request to thePayee FSP.Assumptions
None.
Description
The
Payee FSPreceives the Calculate Quote request. ThePayee FSPthen internally calculates the fees or FSP commission for performing the transaction. It then constructs the ILP Packet containing the ILP Address of thePayee, the amount that thePayeewill receive, and the transaction details. The fulfilment and the condition are then generated out of the ILP Packet combined with a local secret.Assumptions
None
Description
Depending on use case and the fee model used, the
Payeemight be informed of the quote so that thePayeecan confirm the proposed financial transaction. The quote is in that case sent to thePayeeusing a front-end API (outside the scope of this API). ThePayeereceives the quote including information regarding the transaction including fees and optionally Payer name. ThePayeethen confirms the quote using a front-end API (outside the scope of this API). ThePayee FSPreceives the confirmation from thePayee.Assumptions
The quote is assumed to be sent to the
Payerfor confirmation, and thePayeeis assumed to accept and confirm the quote. If thePayeewould reject the quote, an error response would be sent from thePayee FSPto thePayer FSPvia theSwitchto inform about the rejected quote.End of Optional fragment
Description
The
Payee FSPuses the response Return Quote Information to theSwitchto return information to thePayer FSPabout the quote, the ILP Packet, and the condition. The quote has an expiration time, to inform thePayer FSPuntil which point in time the quote is valid.Assumptions
None.
Description
The
Switchreceives the response Return Quote Information. TheSwitchthen routes the response to thePayer FSP.Assumptions
None.
Description
The
Payer FSPreceives the response Return Quote Information from theSwitch. ThePayer FSPthen informs thePayerusing a front-end API (outside the scope of this API) about the transaction request from thePayee, including the amount and the total fees required to perform the transaction, along with thePayeename.Assumptions
The total quote can be calculated by the
Payer FSP. Also, thePayeename was allowed to be sent during the counterparty lookup (depending on regulation on privacy laws).Description
The
Payerreceives the transaction request information including fees, taxes and optionallyPayeename.Assumptions
If the
Payerrejects the transaction request, the sequence proceeds to Step 18. If thePayerapproves the transaction request, the sequence proceeds to Step 22.Alternative: Transaction Rejection
Description
The
Payer FSPreceives the rejection of the transaction request using a front-end API (out of scope of this API). ThePayer FSPthen uses the response Return Transaction Request Information with a rejected status to inform theSwitchthat the transaction was rejected.Assumptions
The
Payeris assumed to reject the transaction request in Step 17.Description
The
Switchreceives the response Return Transaction Request Information from thePayer FSP. TheSwitchthen routes the response Return Transaction Request Information to thePayee FSP.Assumptions
None.
Description
The
Payee FSPreceives the response *Return Transaction Request Information with a rejected status from theSwitch. ThePayee FSPthen informs the Payee using a front-end API (outside the scope of this API) about the rejected transaction request.Assumptions
None.
Description
The
Payeereceives the notification that the transaction was rejected. The process ends here as the transaction request was rejected and thePayeehas been informed of the decision.Assumptions
None.
Alternative: Perform Transfer
Description
The
Payer FSPreceives an approval of the interoperable financial transaction using a front-end API (out of scope of this API). ThePayer FSPthen performs all applicable internal transaction validations (for example, limit checks, blacklist check, and so on). If the validations are successful, a transfer of funds is reserved from thePayer's account to either a combinedSwitchaccount or aPayee FSPaccount, depending on setup. After the transfer has been successfully reserved, the request Perform Transfer is sent to theSwitchto request theSwitchto transfer the funds from thePayer FSPaccount in theSwitchto thePayee FSPaccount. The request Perform Transfer includes a reference to the earlier quote, an expiry of the transfer, the ILP Packet, and the condition that was received from thePayee FSP. The interoperable financial transaction is now irrevocable from thePayer FSP.Assumptions
The
Payeris assumed to approve the transaction request in Step 17. Internal validations and reservation are assumed to be successful. In this sequence, aSwitchis placed between thePayer FSPand thePayee FSPto route the messages. The Switch is optional in the process, as the request Perform Transfer could also be sent directly to thePayee FSPif there is noSwitchin-between.Description
The
Switchreceives the request Perform Transfer. TheSwitchthen performs all its applicable internal transfer validations (for example, limit checks, blacklist check, and so on). If the validations are successful, a transfer is reserved from aPayer FSPaccount to aPayee FSPaccount. After the transfer has been successfully reserved, the request Perform Transfer is sent to thePayee FSP, including the same ILP Packet and condition as was received from the Payer FSP. The expiry time should be decreased by theSwitch, so that thePayee FSPshould answer before theSwitchshould answer to thePayer FSP. The transfer is now irrevocable from theSwitch.Assumptions
Internal validations and reservation are successful.
Description
The
Payee FSPreceives the request Perform Transfer. ThePayee FSPthen performs all applicable internal transaction validations (for example, limit checks, blacklist check, and so on). It also verifies that the amount and ILP Address in the ILP Packet are correct and match the amount andPayeein the transaction details stored in the ILP Packet. If all the validations are successful, a transfer of funds is performed from either a combinedSwitchaccount or aPayer FSPaccount to thePayee's account and the fulfilment of the condition is regenerated, using the same secret as in Step 11. After the interoperable financial transaction has been successfully performed, a transaction notification is sent to the Payee using a front-end API (out of scope of this API) and the response Return Transfer Information is sent to theSwitch, including the regenerated fulfilment. The transfer is now irrevocable from thePayee FSP.Assumptions
Internal validations and transfer of funds are successful.
Description
The
Payeereceives a transaction notification containing information about the successfully performed transaction.Assumptions
None.
Description
The
Switchreceives the response Return Transfer Information. TheSwitchthen validates the fulfilment and commits the earlier reserved transfer. TheSwitchthen uses the response Return Transfer Information to thePayer FSP, using the same parameters.Assumptions
The fulfilment is assumed to be correctly validated.
Description
The
Payer FSPreceives the response Return Transfer Information. ThePayer FSPthen validates the fulfilment and commits the earlier reserved transaction.Assumptions
The fulfilment is assumed to be correctly validated.
Optional fragment: Get Transaction Details
Description
In case the interoperable financial transaction contains additional information that is useful for the
Payeror thePayer FSP; for example, a code or a voucher token, thePayer FSPcan use the request Retrieve Transaction Information to get the additional information. The request Retrieve Transaction Information is sent to theSwitch.Assumptions
None.
Description
The
Switchreceives the request Retrieve Transaction Information. TheSwitchthen routes the request Retrieve Transaction Information to thePayee FSP.Assumptions
None.
Description
The
Payee FSPreceives the request Retrieve Transaction Information. ThePayee FSPthen collects the requested information and uses the response Retrieve Transaction Information to theSwitch.Assumptions
The transaction with the provided ID can be found in the Payee FSP.
Description
The
Switchreceives the response Retrieve Transaction Information. TheSwitchthen routes the Retrieve Transaction Information response to thePayer FSP.Assumptions
None.
Description
The
Payer FSPreceives the response Retrieve Transaction Information from theSwitch.Assumptions
None.
End of Optional fragment
Description
The
Payer FSPsends a transaction notification to thePayeeusing a front-end API (out of scope of this API), optionally including transaction details retrieved from thePayee FSP.Assumptions
None.
Description
The
Payerreceives a transaction notification containing information about the successfully performed transaction.Assumptions
None.
# Payee-Initiated Transaction using OTP
A Payee-Initiated Transaction using OTP is very similar to a Payee-Initiated Transaction, but the transaction information (including fees and taxes) and approval for the Payer is shown/entered on a Payee device instead.
# Business Process Pattern Description
The pattern should be used when a Payee would like to receive funds from another party whose account is not located in the same FSP, and both the transaction information (including fees and taxes) and approval is shown/entered on a Payee device instead.
- Approval using OTP -- A
Payercan approve a transaction by first creating an OTP in his/her FSP. An alternative to user- initiated creation of OTP is that the OTP is automatically generated and sent by thePayer FSP. The same OTP is then entered by thePayerin aPayeedevice, usually a POS device or an ATM. The OTP in the transaction request is automatically matched by thePayer FSPto either approve or reject the transaction. The OTP does not need to be encrypted as it should only be valid once during a short time period.
# Participants and Roles
The actors in a Payee-Initiated Transaction using OTP are:
Payer -- The payer of funds in a financial transaction.
Payee -- The recipient of funds in a financial transaction.
The intermediary objects used in a Payee-Initiated Transaction using OTP to perform the transaction are:
Payer FSP -- The FSP in which the Payer's account is located.
Switch (optional) -- An optional entity used for routing of requests between different FSPs. This object can be removed if requests should be routed directly between a Payer and Payee FSP.
Account Lookup System -- An entity used for retrieving information regarding accounts or participants. Could be hosted in a separate server, in the Switch, or in the different FSPs.
Payee FSP -- The FSP in which the Payee's account is located.
# Business Process Sequence Diagram
Figure 3 shows the UML sequence diagram for a Payee-Initiated Transaction using OTP.
Figure 3 -- Payee-Initiated Transaction using OTP
# Internal Processing Steps
This section provides descriptions of and assumptions made for all steps in the sequence shown in Figure 3 above.
# Optional fragment: Manual OTP request
Description
The
Payerrequests that an OTP be generated, using thePayer FSP's front-end API (outside the scope of this API).Assumptions
There are two alternatives for generating an OTP; either it is generated upon request by the
Payer(this option), or it is automatically generated in Step 19.Description
The
Payer FSPreceives the request to generate an OTP and returns a generated OTP to thePayer, using thePayer FSP's front-end API (outside the scope of this API).Assumptions
None.
Description
Payerreceives the generated OTP. The OTP can then be used by thePayerin Step 25 for automatic approval.Assumptions
None.
End of Optional fragment
# Lookup Counterparty
Description
The
Payeeinitiates the transaction by requesting to receive funds from aPayer, using thePayee FSP's front-end API (outside the scope of this API).Assumptions
None.
Description
The
Payee FSPtries to find thePayerwithin the FSP system. Because thePayercannot be found in thePayee FSPsystem, the request Lookup Participant Information is sent by thePayee FSPto the optional Account Lookup System to get information regarding in which FSP the Payer is located.Assumptions
The
Payeris assumed to be in a different FSP than thePayee. Also, anAccount Lookup Systemis assumed to exist. TheAccount Lookup Systemis optional in the process, as the request Lookup Participant Information could also be sent directly to thePayer FSPif there is noAccount Lookup System. As thePayee FSPshould not know in which FSP thePayeris located if there is noAccount Lookup Systempresent, the request might need to be sent to more than one FSP. It is also possible that thePayee FSPwould like more information about the Payer before a transaction request is sent; in that case the request Lookup Party Information, either to theSwitchor directly to thePayer FSP, should be sent instead of Lookup Participant Information to theAccount Lookup System.Description
The
Account Lookup Systemreceives the Lookup Participant Information. It then performs an internal lookup to find in which FSP thePayeris located. When the lookup is completed, the response Return Participant Information is sent to inform thePayee FSPabout which FSP thePayeris located in.Assumptions
The
Payercan be found by theAccount Lookup System.Description
The
Payee FSPreceives the response Return Participant Information.Assumptions
None.
# Transaction Request
Description
The Payee FSP sends the request Perform Transaction Request to the
Switch. The request contains the transaction details including the amount that thePayeewould like to receive, and that the request should be validated using an OTP (possibly a QR code containing a OTP).Assumptions
In this sequence, a
Switchis placed between thePayee FSPand thePayer FSPto route the messages. TheSwitchis optional in the process, as the request Perform Transaction Request could also be sent directly to thePayer FSPif there is noSwitchin-between.Description
The
Switchreceives the request Perform Transaction Request. TheSwitchthen routes the request to thePayer FSP, using the same parameters.Assumptions
None.
Description
The
Payer FSPreceives the request Perform Transaction Request. ThePayer FSPthen optionally validates the transaction request (for example, whether thePayerexists or not) and sends the response Return Transaction Request Information to inform thePayee FSPvia theSwitchthat the transaction request has been received.Assumptions
The optional validation succeeds.
Description
The
Switchreceives the response Return Transaction Request Information. TheSwitchthen uses the same response Return Transaction Request Information to inform thePayee FSPabout the successfully delivered transaction request to thePayer FSP.Assumptions:
None.
Description
The
Payee FSPreceives the response Return Transaction Request Information from theSwitch.Assumptions
None.
Calculate Quote
Description
The
Payer FSPrates the transaction internally based on the fee model used and includes the quote information in the request Calculate Quote to aSwitchto retrieve the full quote for performing the interoperable financial transaction from thePayer FSPto thePayee FSP. The transaction details, including a reference to the transaction request, are sent in the parameters of the request to allow for thePayee FSPto correctly calculate the quote.Assumptions
In this sequence, a
Switchis placed between thePayer FSPand thePayee FSPto route the messages. TheSwitchis optional in the process, as the request Calculate Quote could also be sent directly to thePayee FSPif there is noSwitchin-between.Description
The
Switchreceives the Calculate Quote request. TheSwitchthen routes the request to thePayee FSP, using the same parameters.Assumptions
None.
Description
The
Payee FSPreceives the Calculate Quote request. ThePayee FSPthen internally calculates the fees or FSP commission for performing the transaction. It then constructs the ILP Packet containing the ILP Address of thePayee, the amount that thePayeewill receive, and the transaction details. The fulfilment and the condition is then generated out of the ILP Packet combined with a local secret.Assumptions
None.
Optional fragment: Quote Confirmation by Payee
Description
Depending on the fee model used and which use case it is, the
Payeemight be informed of the quote to be able to confirm the proposed financial transaction. The quote is in that case sent to thePayeeusing a front- end API (outside the scope of this API. ThePayeereceives the quote including information regarding the transaction including fees and optionallyPayername. ThePayeethen confirms the quote using a front-end API (outside the scope of this API). ThePayee FSPreceives the confirmation from thePayee.Assumptions
The quote is assumed to be sent to the Payer for confirmation, and the
Payeeis assumed to accept and confirm the quote. If thePayeewould reject the quote, an error response would be sent from thePayee FSPto thePayer FSPvia theSwitchto inform about the rejected quote.End of Optional fragment
Description
The
Payee FSPuses the response Return Quote Information to theSwitchto return information to thePayer FSPabout the quote, the ILP Packet, and the condition. The quote has an expiration time, to inform thePayer FSPuntil which point in time the quote is valid.Assumptions
None.
Description
The
Switchreceives the response Return Quote Information. TheSwitchwill then route the request to thePayer FSP.Assumptions
None.
Description
The
Payer FSPreceives the response Return Quote Information from the Switch.Assumptions
The total quote can be calculated by the
Payer FSP.Optional fragment: Automatic OTP generation
Description
The
Payer FSPautomatically generates an OTP and sends it to thePayer, using thePayer FSP's front-end API (outside the scope of this API).Assumptions
There are two alternatives for generating the OTP. Either it is generated upon request by the
Payer(Step 1), or it is automatically generated (this option).Description
The
Payerreceives the automatically-generated OTP.Assumptions
None.
End of Optional fragment
Description
The
Payer FSPsends the request Perform Authorization to theSwitch, to get an authorization to perform the transaction from the Payer via a POS, ATM, or similar payment device, in thePayee FSP. The request includes the amount to be withdrawn from thePayer's account, and how many retries are left for thePayerto retry the OTP.Assumptions
None.
Description
The
Switchreceives the request Perform Authorization from thePayer FSP. TheSwitchthen routes the Perform Authorization to thePayee FSP.Assumptions
None.
Description
The
Payee FSPreceives the request Perform Authorization from theSwitch. ThePayee FSPsends the authorization request to thePayeedevice (POS, ATM, or similar payment device) using thePayee FSP's front-end API (outside the scope of this API).Assumptions
None.
Description
The
Payeedevice receives the authorization request, and thePayercan see the amount that will be withdrawn from his or her account. ThePayerthen uses the OTP received in Step 3 or Step 21, depending on whether the OTP was manually requested or automatically generated. The entered or scanned OTP is then sent to thePayee FSPusing thePayee FSP's front-end API (outside the scope of this API).Assumptions
The
Payerhas received the OTP in Step 3 or Step 21.Description
The
Payee FSPreceives the OTP from thePayeedevice. ThePayee FSPthen sends the response Return Authorization Result to the Switch containing the OTP from the Payer.Assumptions
None.
Description
The
Switchreceives the request Return Authorization Result from thePayee FSP. TheSwitchthen routes the Return Authorization Result to thePayer FSP.Assumptions
None.
Description
The
Payer FSPreceives the request Return Authorization Result to theSwitch. ThePayer FSPthen validates the OTP received from the OTP generated in Step 2 or Step 20. If thePayer FSPis unable to validate the OTP (for example, because the OTP is incorrect) and this was the last remaining retry for the Payer, the sequence continues with Step 29. If thePayer FSPcorrectly validates the OTP, the sequence continues with Step 33.Assumptions
None.
Alternative: OTP validation failed
Description
The validation in Step 28 fails and this was the final retry for the Payer. The
Payer FSPthen uses the response Return Transaction Request Information with a rejected state to inform theSwitchthat the transaction was rejected.Assumptions
The OTP validation in Step 28 is assumed to fail and no more retries remains for the Payer.
Description
The
Switchreceives the response Return Transaction Request Information from the Payer FSP. TheSwitchthen routes the Return Transaction Request Information response to thePayee FSP.Assumptions
None.
Description
The
Payee FSPreceives the response Return Transaction Request Information with a rejected status from theSwitch. ThePayee FSPthen informs thePayeeusing a front-end API (outside the scope of this API) about the rejected transaction request.Assumptions
None.
Description
The
Payeereceives the notification that the transaction was rejected. The process ends here as the transaction request was rejected and thePayeehas been informed of the decision. ThePayeris also assumed to receive the notification via thePayeedevice.Assumptions
None.
Alternative: OTP validation succeed
Description
The validation in Step 28 is successful. The
Payer FSPthen performs all applicable internal transaction validations (for example, limit checks, blacklist check, and so on). If the validations are successful, a transfer of funds is reserved from thePayer's account to either a combined Switch account or aPayee FSPaccount, depending on setup. After the transfer has been successfully reserved, the request Perform Transfer is sent to theSwitchto request theSwitchto transfer the funds from thePayer FSPaccount in theSwitchto thePayee FSPaccount. The request Perform Transfer includes a reference to the earlier quote, an expiry of the transfer, the ILP Packet, and the condition that was received from thePayee FSP. The interoperable financial transaction is now irrevocable from thePayer FSP.Assumptions
The OTP validation in Step 28 is assumed to be successful. Internal validations and reservation are assumed to be successful. In this sequence, a Switch is placed between the
Payer FSPand thePayee FSPto route the messages. The Switch is optional in the process, as the request Perform Transfer could also be sent directly to thePayee FSPif there is no Switch in-between.- Description
The
Switchreceives the request Perform Transfer. TheSwitchthen performs all its applicable internal transfer validations (for example, limit checks, blacklist check, and so on). If the validations are successful, a transfer is reserved from aPayer FSPaccount to aPayee FSPaccount. After the transfer has been successfully reserved, the request Perform Transfer is sent to the Payee FSP, including the same ILP Packet and condition as was received from the Payer FSP. The expiry time should be decreased by the Switch so that thePayee FSPshould answer before the Switch should answer to thePayer FSP. The transfer is now irrevocable from theSwitch.Assumptions
Internal validations and reservation are successful.
Description
The
Payee FSPreceives the Perform Transfer. ThePayee FSPthen performs all applicable internal transaction validations (for example, limit checks, blacklist check, and so on). It also verifies that the amount and ILP Address in the ILP Packet are correct, and match the amount andPayeein the transaction details stored in the ILP Packet. If all the validations are successful, a transfer of funds is performed from either a combinedSwitchaccount or a Payer FSP account to thePayee's account and the fulfilment of the condition is regenerated, using the same secret as in Step 11. After the interoperable financial transaction has been successfully performed, a transaction notification is sent to thePayeeusing a front-end API (out of scope of this API) and the response Return Transfer Information is sent to theSwitch, including the regenerated fulfilment. The transfer is now irrevocable from thePayee FSP.Assumptions
Internal validations and transfer of funds are successful.
Description
The
Payeereceives a transaction notification containing information about the successfully performed transaction.Assumptions
None.
Description
The
Switchreceives the response Return Transfer Information. TheSwitchthen validates the fulfilment and commits the earlier reserved transfer. TheSwitchwill then use the response Return Transfer Information to thePayer FSP, using the same parameters.Assumptions
The fulfilment is assumed to be correctly validated.
Description
The
Payer FSPreceives the response Return Transfer Information. ThePayer FSPthen validates the fulfilment and commits the earlier reserved transaction.Assumptions
The fulfilment is assumed to be correctly validated.
Optional fragment: Get Transaction Details
Description
In case the interoperable financial transaction contains additional information that is useful for the
Payeror thePayer FSP, such as a code or a voucher token, thePayer FSPcan use the request Retrieve Transaction Information to get the additional information. The request Retrieve Transaction Information is sent to the Switch.Assumptions
None.
Description
The
Switchreceives the request Retrieve Transaction Information. TheSwitchthen routes the requestRetrieve Transaction Information to thePayee FSP.Assumptions
None.
Description
The
Payee FSPreceives the request *Retrieve Transaction Information. ThePayee FSPthen collects the requested information and uses the response Return Transaction Information to theSwitch.Assumptions
The transaction with the provided ID can be found in the
Payee FSP.Description
The
Switchreceives the response Return Transaction Information. TheSwitchthen routes the Return Transaction Information response to thePayer FSP.Assumptions
None.
Description
The
Payer FSPreceives the response Return Transaction Information from theSwitch.Assumptions
None.
End of Optional fragment
Description
The
Payer FSPsends a transaction notification to thePayeeusing a front-end API (out of scope of this API), optionally including transaction details retrieved from thePayee FSP.Assumptions
None.
Description
The
Payerreceives a transaction notification containing information about the successfully performed transaction.Assumptions
None.
# Bulk Transactions
In a Bulk Transaction, the Payer (that is, the sender of funds) initiates multiple transactions to multiple Payees, potentially located in different FSPs.
# Business Process Pattern Description
The pattern should be used whenever a Payer would like to transfer funds to multiple Payees in the same transaction. The Payees can potentially be located in different FSPs.
# Participants and Roles
The actors in a Bulk Transaction are:
Payer -- The sender of funds.
Payees -- The recipients of funds. There should be multiple Payees in a Bulk Transaction.
The intermediary objects used in a Bulk Transaction to perform the transaction are:
Payer FSP -- The FSP in which the Payer's account is located.
Switch (optional) -- An optional entity used for routing of transactions between different FSPs. This object can be removed if transactions should be routed directly between a Payer and
Payee FSP.Account Lookup System -- An entity used for retrieving information regarding accounts or participants. Could be hosted in a separate server, in the Switch, or in the different FSPs.
Payee FSP -- The FSP in which a Payee's account is located. There may be multiple Payee FSPs in a Bulk Transaction.
# Business Process Sequence Diagram
Figure 4 below shows the UML sequence diagram for a Bulk Transaction.
Figure 4 -- Bulk Transaction
# Internal Processing Steps
This section provides descriptions of and assumptions made for all steps in the sequence shown in Figure 4.
# Lookup Counterparties
Description
The
Payerinitiates the bulk transaction process by uploading a bulk file to thePayer FSP, using thePayer FSP's front-end API (outside the scope of this API).Assumptions
None.
Loop for each Transaction in bulk file
Description
Payer FSPtries to find the Payee within thePayer FSPsystem.Assumptions
The
Payeeis assumed to be located in a different FSP than thePayer. If thePayeeis within thePayer FSP, the transaction can be handled internally in thePayer FSP(outside the scope of this API).Description
The
Payer FSPsends the request Lookup Participant Information to the optionalAccount Lookup Systemto get information regarding in which FSP thePayeris present in.Assumptions
The
Payeeis assumed to in a different FSP than thePayer. Also, anAccount Lookup Systemis assumed to exist. TheAccount Lookup Systemis optional in the process, as the request Lookup Participant Information could also be sent directly to thePayee FSPs if there is noAccount Lookup System. As thePayer FSPshould not know in which FSP thePayeeis located in if there is noAccount Lookup Systempresent, the request might need to be sent to more than one FSP. It is also possible that thePayer FSPwould like more information about thePayeebefore a bulk transaction is executed; for example, for additional verification purposes of thePayeename. In that case, the request Lookup Party Information, either to theSwitchor directly to thePayee FSP, should be sent instead of the request Lookup Participant Information to theAccount Lookup System.Description
The
Account Lookup Systemreceives the request Lookup Participant Information It then performs an internal lookup to find in which FSP thePayeeis located. When the lookup is completed, the response Return Participant Information is sent to inform the Payer FSP about which FSP thePayeeis located in.Assumptions
The
Payeecan be found by theAccount Lookup System.Description
The
Payer FSPreceives the response Return Participant Information. ThePayeeand the related transaction is then placed in a new bulk file separated perPayee FSP.Assumptions
None.
End of loop for each Transaction
# Calculate Bulk Quote
**Loop for each `Payee FSP` to Calculate Bulk Quote**
Description
The
Payer FSPuses the request Calculate Bulk Quote on aSwitchto retrieve a quote for performing the bulk transaction from thePayer FSPto thePayee FSP. The request contains details for each individual transaction in the bulk transaction.Assumptions
In this sequence, a
Switchis placed between thePayer FSPand thePayee FSPto route the messages. The Switch is optional in the process, as the request Calculate Bulk Quote could also be sent directly to thePayee FSPif there is noSwitchin-between.Description
The
Switchreceives the Calculate Bulk Quote request. TheSwitchthen routes the request to thePayee FSP, using the same parameters.Assumptions
None.
Description
The
Payee FSPreceives the Calculate Bulk Quote request. ThePayee FSPthen internally calculates the fees or FSP commission for performing each individual transaction in the bulk transaction. For each individual transaction, thePayee FSPthen constructs an ILP Packet containing the ILP Address of thePayee, the amount that thePayeewill receive, and the transaction details. The fulfilment and the condition is then generated out of the ILP Packet combined with a local secret. It then uses the response Return Bulk Quote Information to theSwitchto inform thePayer FSPabout the fees involved in performing the bulk transaction and the ILP Packet and condition. The bulk quote has an expiration date and time, to inform thePayer FSPuntil which time the bulk quote is valid.Assumptions
The bulk quote can be calculated by the
Payee FSP.Description
The Switch receives the response Return Bulk Quote Information. The
Switchthen routes the response to the Payer FSP.Assumptions
None.
Description
The
Payer FSPreceives the response Return Bulk Quote Information from theSwitch.Assumptions
None.
End of loop for each
Payee FSPDescription
The
Payer FSPcalculates any internal bulk fees and taxes, and informs thePayerusing a front-end API (outside the scope of this API) about the total fees and taxes to perform the bulk transaction.Assumptions
None.
Description
The
Payerreceives the notification about the completed processing of the bulk transaction and the fees and taxes to perform the bulk transaction. ThePayerthen decides to execute the bulk transaction.Assumptions
The
Payeris assumed to execute the bulk transaction. If thePayerwould reject the bulk transaction at this stage, no response is sent to thePayee FSP. The created bulk quote at thePayee FSPs should have an expiry date; that is, at which time it's automatically deleted.
# Perform Bulk Transfer**
Description
The
Payer FSPreceives the request to execute the bulk transaction from thePayer.Assumptions
None.
Loop for each
Payee FSPto perform Bulk TransferDescription
The
Payer FSPperforms all applicable internal transaction validations (for example, limit checks, blacklist check, and so on) for the bulk transaction to thePayee FSP. If the validations are successful, a transfer of funds is reserved from the Payer's account to either a combinedSwitchaccount or aPayee FSPaccount, depending on setup. After the transfer has been successfully reserved, the request Perform Bulk Transfer is sent to theSwitch. The request Perform Bulk Transfer includes a reference to the earlier bulk quote, an expiry of the bulk transfer, and the ILP Packets and condition per transfer that was received from thePayee FSP. The interoperable financial transaction is now irrevocable from the Payer FSP. The interoperable bulk transaction is now irrevocable from the Payer FSP.Assumptions
In this sequence, a Switch is placed between the
Payer FSPand thePayee FSPto route the messages. TheSwitchis optional in the process, as the request *Perform Bulk Transfer could also be sent directly to thePayee FSPif there is no Switch in-between.Description
The Switch receives the request Perform Bulk Transfer. The Switch then performs all applicable internal transfer validations (such as limit checks, blacklist check, and so on). If the validations are successful, a transfer is reserved from a Payer FSP account to a
Payee FSPaccount. After the transfer has been successfully reserved, the request Perform Bulk Transfer is sent to thePayee FSP, including the same ILP Packets and conditions for each transfer that were received from thePayer FSP. The expiry time should be decreased by the Switch so that thePayee FSPshould answer before the Switch should answer to thePayer FSP. The bulk transfer is now irrevocable from theSwitch.Assumptions
Internal validations and reservation are successful.
Description
The
Payee FSPreceives the request Perform Bulk Transfer. ThePayee FSPthen performs all applicable internal transaction validations (such as limit checks, and blacklist checks) for each individual transaction in the bulk transaction. If the validations are successful, a transfer of funds is performed from either a combined Switch account or aPayer FSPaccount, depending on setup, to each of the Payees' accounts and the fulfilment of each condition is regenerated, using the same secret as in Step 8. After each transfer to aPayeehas been successfully performed, a transaction notification is sent to thePayeeusing a front-end API (out of scope of this API). After each of the individual transactions in the bulk transaction has been completed, the response Return Bulk Transfer Information is sent to the Switch to inform the Switch and the Payer FSP of the result including each fulfilment. The transactions in the bulk transaction are now irrevocable from thePayee FSP.Assumptions
Internal validations and transfers of funds are successful.
Description
Each
Payeereceives a transaction notification containing information about the successfully performed transaction.Assumptions
None.
Description
The
Switchreceives the response Return Bulk Transfer Information. TheSwitchthen validates the fulfilments and commits the earlier reserved transfers. TheSwitchthen uses the response Return Bulk Transfer Information to thePayer FSP, using the same parameters.Assumptions
Each individual transaction in the bulk transaction is assumed to be successful in the
Payee FSP, and the validation of the fulfilments is also assumed to be correct. If one or more of the transactions in the bulk transaction were unsuccessful, the earlier reserved, now unsuccessful, transfer or transfers in theSwitchwould need to be cancelled.Description
The
Payer FSPreceives the response Return Bulk Transfer Information. ThePayer FSPthen commits the earlier reserved transfers. After the bulk transaction has been successfully committed, a transaction notification is sent to thePayerusing a front-end API (out of scope of this API).Assumptions
Each individual transaction in the bulk transaction is assumed to be successful in the
Payee FSP, and the validation of the fulfilments is also assumed to be correct. If one or more of the transactions in the bulk transaction were unsuccessful, the earlier reserved transfer in thePayer FSPwould need to be updated with the total amount of all successful transactions before being committed.End of loop for each
Payee FSPDescription
After each of the
Payee FSPs has executed their part of the bulk transaction, a response is sent to the Payer using a front- end API (out of scope for this API).Assumptions
None.
Description
The
Payerreceives a bulk transaction notification containing information about the successfully performed bulk transaction.Assumptions
None.
# References
2 https://interledger.org/ - Interledger (opens new window)
3 https://interledger.org/interledger.pdf - A Protocol for Interledger Payments (opens new window)
List of Figures
Figure 1 -- Payer-Initiated Transaction
Figure 2 -- Payee-Initiated Transaction
