# Central Ledger API
# Introduction
This document provides detailed information about the Central Ledger API. The Central Ledger API is a Mojaloop API enabling Hub Operators to manage admin processes around:
- Creating/activating/deactivating participants in the Hub
- Adding and updating participant endpoint information
- Managing participant accounts, limits, and positions
- Creating Hub accounts
- Performing Funds In and Funds Out operations
- Creating/updating/viewing settlement models
- Retrieving transfer details
For background information about the participant and settlement model details that the Hub Operator can administer using the Central Ledger API, see section Basic concepts.
# Basic concepts
To provide context for the admin operations that the Central Ledger API enables, this section gives a brief definition of some basic concepts.
# Participant
Either the Hub itself or a Digital Financial Service Provider (DFSP) that is a participant in a Mojaloop scheme.
# Endpoint
The DFSP callback URL where the Hub routes API callbacks. The URL specified is the endpoint set up in the outbound API gateway.
# Limit
Currently, only one type of limit is supported, it is called "Net Debit Cap (NDC)". In the future, it is possible to add support for further types of limits.
The Net Debit Cap represents the liquidity cover available for a specific account (the Position account). It is the total amount of good funds which the scheme attests are available to guarantee that a participant is able to settle the liabilities it incurs on the Position account as a consequence of transferring funds. This amount of good funds is represented as the balance of an account (the Settlement account), which is tied to the Position account by a settlement model. The source of the funds in this account can be either funds recorded by the scheme's administrators as having been deposited to or withdrawn from the Settlement account, or funds which are automatically credited to or debited from the account by the scheme if the account is the Settlement account for an immediate gross settlement model.
It should also be possible for a participant to specify that an amount, or a proportion, of the funds available in a Settlement account should be excluded from the Net Debit Cap calculation. In cases where a participant is a long-term net beneficiary of funds via settlement, or where participants keep extra funds in their Settlement account to cover periods when it may not be possible to deposit funds to those accounts, it may wish to exclude part of the balance of its Settlement account from use as cover for transfers.
# Account
Also called Ledger. The Hub maintains a number of internal accounts to keep track of the movement of money (both e-money and real money) between DFSPs.
# Position
The Position represents the net of:
- transfers on that account which have cleared but have not yet settled, and
- transfers on that account where:
- the DFSP is the debtor party, and
- the transfer has been accepted for processing by the Hub, but has not yet cleared.
The Position for a given account is always verifiably up to date.
When a transfer is requested, the Hub will check that the DFSP has liquidity cover available on that account to cover the amount of the transfer. If it does not, the transfer will be rejected.
We currently allow liabilities to the participant which have been created as a consequence of transfers on the account where the participant is the beneficiary to reduce the participant's Position as if the liabilities had already been settled.
# Funds In and Funds Out
Funds In and Funds Out operations are used to track (in the Hub accounts) money movements related to deposits and withdrawals, as well as settlements.
Funds In operations record either the deposit of money into a DFSP's settlement bank account or the settlement amount for a receiving DFSP.
Funds Out operations record either the withdrawal of money from a DFSP's settlement bank account or the settlement amount for a sending DFSP.
# Settlement model
Refers to how settlement happens within a scheme. Settlement is the process of transferring funds from one DSFP to another, so that the payer's DFSP reimburses the payee's DFSP for funds given to the payee during a transaction. A settlement model specifies if participants settle with each other separately or settle with the scheme, whether transfers are settled one by one or as a batch, whether transfers are settled immediately or with a delay, and so on.
# HTTP details
This section contains detailed information regarding the use of the application-level protocol HTTP in the API.
# HTTP header fields
HTTP headers are generally described in RFC 7230 (opens new window). Any headers specific to the Central Ledger API will be standardised in the future.
# HTTP methods
The following HTTP methods, as defined in RFC 7231 (opens new window), are supported by the API:
GET
– The HTTP GET method is used from a client to retrieve information about a previously-created object on a server.POST
– The HTTP POST method is used from a client to request an object to be created on the server.PUT
– The HTTP PUT method is used from a client to request an object already existing on the server to be modified (to replace a representation of the target resource with the request payload).
NOTE: The
DELETE
method is not supported.
# HTTP response status codes
The HTTP response status codes table lists the HTTP response status codes that the API supports:
Status Code | Reason | Description |
---|---|---|
200 | OK | Standard response for a successful GET , PUT , or POST operation. The response will contain an entity corresponding to the requested resource. |
201 | Created | The POST request has been fulfilled, resulting in the creation of a new resource. The response will not contain an entity describing or containing the result of the action. |
202 | Accepted | The request has been accepted for processing, but the processing has not been completed. |
400 | Bad Request | The server could not understand the request due to invalid syntax. |
401 | Unauthorized | The request requires authentication in order to be processed. |
403 | Forbidden | The request was denied and will be denied in the future. |
404 | Not Found | The requested resource is not available at the moment. |
405 | Method Not Allowed | An unsupported HTTP method for the request was used. |
406 | Not Acceptable | The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request. |
500 | Internal Server Error | A generic error message, given when an unexpected condition was encountered and no more specific message is suitable. |
501 | Not Implemented | The server does not support the requested service. The client should not retry. |
503 | Service Unavailable | The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame. |
# API services
This section introduces and details all services that the API supports for each resource and HTTP method.
# High-level API services
On a high level, the API can be used to perform the following actions:
/participants
: View, create, update participant-related details, such as limit (Net Debit Cap), position, or endpoints configured./settlementModels
: View, create, update settlement-model-related details, such as granularity, delay, liquidity check, and so on./transactions
: View transaction details for a particular transfer.
# Supported API services
The Supported API services table includes high-level descriptions of the services that the API provides. For more detailed information, see the sections that follow.
URI | HTTP method GET | HTTP method PUT | HTTP method POST | HTTP method DELETE |
---|---|---|---|---|
/participants | Get information about all participants | Not supported | Create participants in the Hub | Not supported |
/participants/limits | View limits for all participants | Not supported | Not supported | Not supported |
/participants/{name} | Get information about a particular participant | Update participant details (activate/deactivate a participant) | Not supported | Not supported |
/participants/{name}/endpoints | View participant endpoints | Not supported | Add/Update participant endpoints | Not supported |
/participants/{name}/limits | View participant limits | Adjust participant limits | Not supported | Not supported |
/participants/{name}/positions | View participant positions | Not supported | Not supported | Not supported |
/participants/{name}/accounts | View participant accounts and balances | Not supported | Create Hub accounts | Not supported |
/participants/{name}/accounts/{id} | Not supported | Update participant accounts | Record Funds In or Out of participant account | Not supported |
/participants/{name}/accounts/{id}/transfers/{transferId} | Not supported | Not supported | Record a Transfer as a Funds In or Out transaction for a participant account | Not supported |
/participants/{name}/initialPositionAndLimits | Not supported | Not supported | Add initial participant limits and position | Not supported |
/settlementModels | View all settlement models | Not supported | Create a settlement model | Not supported |
/settlementModels/{name} | View settlement model by name | Update a settlement model (activate/deactivate a settlement model) | Not supported | Not supported |
/transactions/{id} | Retrieve transaction details by transferId | Not supported | Not supported | Not supported |
# API Resource /participants
The services provided by the resource /participants
are primarily used by the Hub Operator for viewing, creating, and updating participant-related details, such as limit (Net Debit Cap), position, or endpoints configured.
# GET /participants
Retrieves information about all participants.
# Example request
curl 'http://<domain-where-hub-central-ledger-service-is-running>/participants'
# Example response
NOTE: In the example below,
dev1-central-ledger.mojaloop.live
indicates where the Central Ledger service of the Mojaloop Hub is running. This detail will be different in your implementation.
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"name": "greenbankfsp",
"id": "dev1-central-ledger.mojaloop.live/participants/greenbankfsp",
"created": "\"2021-03-04T14:20:17.000Z\"",
"isActive": 1,
"links": {
"self": "dev1-central-ledger.mojaloop.live/participants/greenbankfsp"
},
"accounts": [
{
"id": 15,
"ledgerAccountType": "POSITION",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 16,
"ledgerAccountType": "SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 21,
"ledgerAccountType": "INTERCHANGE_FEE_SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
}
]
},
{
"name": "Hub",
"id": "dev1-central-ledger.mojaloop.live/participants/Hub",
"created": "\"2021-03-04T13:37:25.000Z\"",
"isActive": 1,
"links": {
"self": "dev1-central-ledger.mojaloop.live/participants/Hub"
},
"accounts": [
{
"id": 1,
"ledgerAccountType": "HUB_MULTILATERAL_SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 2,
"ledgerAccountType": "HUB_RECONCILIATION",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
}
]
}
]
# Response data model
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
id | yes | String | The identifier of the participant in the form of a fully qualified domain name combined with the participant's fspId . |
created | yes | DateTime | Date and time when the participant was created. |
isActive | yes | Integer(1) | A flag to indicate whether or not the participant is active. Possible values are 1 and 0 . |
links | yes | Self | List of links for a Hypermedia-Driven RESTful Web Service. |
accounts | yes | Accounts | The list of ledger accounts configured for the participant. |
# POST /participants
Creates a participant in the Hub.
# Example request
curl -X POST -H "Content-Type: application/json" \
-d '{"name": "payerfsp", "currency": "USD"}' \
http://<domain-where-hub-central-ledger-service-is-running>/participants
# Request data model
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
currency | yes | CurrencyEnum | The currency that the participant will transact in. |
# Example response
NOTE: In the example below,
dev1-central-ledger.mojaloop.live
indicates where the Central Ledger service of the Mojaloop Hub is running. This detail will be different in your implementation.
HTTP/1.1 200 OK
Content-Type: application/json
{
"name": "payerfsp",
"id": "dev1-central-ledger.mojaloop.live/participants/payerfsp",
"created": "\"2021-01-12T10:56:30.000Z\"",
"isActive": 0,
"links": {
"self": "dev1-central-ledger.mojaloop.live/participants/hub"
},
"accounts": [
{
"id": 30,
"ledgerAccountType": "POSITION",
"currency": "USD",
"isActive": 0,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 31,
"ledgerAccountType": "SETTLEMENT",
"currency": "USD",
"isActive": 0,
"createdDate": null,
"createdBy": "unknown"
}
]
}
# Response data model
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
id | yes | String | The identifier of the participant in the form of a fully qualified domain name combined with the participant's fspId . |
created | yes | DateTime | Date and time when the participant was created. |
isActive | yes | Integer(1) | A flag to indicate whether or not the participant is active. Possible values are 1 and 0 . |
links | yes | Self | List of links for a Hypermedia-Driven RESTful Web Service. |
accounts | yes | Accounts | The list of ledger accounts configured for the participant. |
# GET /participants/limits
Retrieves limits information for all participants.
# Query parameters
Name | Required | Type | Description |
---|---|---|---|
currency | no | CurrencyEnum | The currency of the limit. |
limit | no | String | Limit type. |
# Example request
curl 'http://<domain-where-hub-central-ledger-service-is-running>/participants/limits'
# Example response
NOTE: In the example below,
dev1-central-ledger.mojaloop.live
indicates where the Central Ledger service of the Mojaloop Hub is running. This detail will be different in your implementation.
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"name": "payerfsp",
"currency": "USD",
"limit": {
"type": "NET_DEBIT_CAP",
"value": 10000,
"alarmPercentage": 10
}
},
{
"name": "payeefsp",
"currency": "USD",
"limit": {
"type": "NET_DEBIT_CAP",
"value": 10000,
"alarmPercentage": 10
}
}
]
# Response data model
Each limit in the returned list is applied to the specified participant name and currency in each object.
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
currency | yes | CurrencyEnum | The currency configured for the participant. |
limit | yes | ParticipantLimit | The limit configured for the participant. |
# GET /participants/{name}
Retrieves information about a particular participant.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
# Example request
curl 'http://<domain-where-hub-central-ledger-service-is-running>/participants/payerfsp'
# Example response
NOTE: In the example below,
dev1-central-ledger.mojaloop.live
indicates where the Central Ledger service of the Mojaloop Hub is running. This detail will be different in your implementation.
HTTP/1.1 200 OK
Content-Type: application/json
{
"name": "payerfsp",
"id": "dev1-central-ledger.mojaloop.live/participants/payerfsp",
"created": "\"2021-03-04T13:42:02.000Z\"",
"isActive": 1,
"links": {
"self": "dev1-central-ledger.mojaloop.live/participants/payerfsp"
},
"accounts": [
{
"id": 3,
"ledgerAccountType": "POSITION",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 4,
"ledgerAccountType": "SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 24,
"ledgerAccountType": "INTERCHANGE_FEE_SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
}
]
}
# Response data model
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
id | yes | String | The identifier of the participant in the form of a fully qualified domain name combined with the participant's fspId . |
created | yes | DateTime | Date and time when the participant was created. |
isActive | yes | Integer(1) | A flag to indicate whether or not the participant is active. Possible values are 1 and 0 . |
links | yes | Self | List of links for a Hypermedia-Driven RESTful Web Service. |
accounts | yes | Accounts | The list of ledger accounts configured for the participant. |
# PUT /participants/{name}
Updates participant details (activates/deactivates a participant).
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
# Example request
curl -X PUT -H "Content-Type: application/json" \
-d '{"isActive": true}' \
http://<domain-where-hub-central-ledger-service-is-running>/participants/payerfsp
# Request data model
Name | Required | Type | Description |
---|---|---|---|
isActive | yes | Boolean | A flag to indicate whether or not the participant is active. |
# Example response
HTTP/1.1 200 OK
Content-Type: application/json
{
"name": "payerfsp",
"id": "dev1-central-ledger.mojaloop.live/participants/payerfsp",
"created": "\"2021-03-04T13:42:02.000Z\"",
"isActive": 1,
"links": {
"self": "dev1-central-ledger.mojaloop.live/participants/payerfsp"
},
"accounts": [
{
"id": 3,
"ledgerAccountType": "POSITION",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 4,
"ledgerAccountType": "SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 24,
"ledgerAccountType": "INTERCHANGE_FEE_SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
}
]
}
# Response data model
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
id | yes | String | The identifier of the participant in the form of a fully qualified domain name combined with the participant's fspId . |
created | yes | DateTime | Date and time when the participant was created. |
isActive | yes | Integer(1) | A flag to indicate whether or not the participant is active. Possible values are 1 and 0 . |
links | yes | Self | List of links for a Hypermedia-Driven RESTful Web Service. |
accounts | yes | Accounts | The list of ledger accounts configured for the participant. |
# GET /participants/{name}/endpoints
Retrieves information about the endpoints configured for a particular participant.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
# Example request
curl 'http://<domain-where-hub-central-ledger-service-is-running>/participants/payerfsp/endpoints'
# Example response
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{partyIdType}}/{{partyIdentifier}}/{{partySubIdOrType}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_PUT_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{partyIdType}}/{{partyIdentifier}}/{{partySubIdOrType}}/error"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_DELETE",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{partyIdType}}/{{partyIdentifier}}/{{partySubIdOrType}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_GET",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/parties/{{partyIdType}}/{{partyIdentifier}}/{{partySubIdOrType}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/parties/{{partyIdType}}/{{partyIdentifier}}/{{partySubIdOrType}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_PUT_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/parties/{{partyIdType}}/{{partyIdentifier}}/{{partySubIdOrType}}/error"
},
{
"type": "FSPIOP_CALLBACK_URL_AUTHORIZATIONS",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{partyIdType}}/{{partyIdentifier}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_PUT_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{partyIdType}}/{{partyIdentifier}}/error"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{requestId}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{requestId}}/error"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTIES_GET",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/parties/{{partyIdType}}/{{partyIdentifier}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTIES_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/parties/{{partyIdType}}/{{partyIdentifier}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/parties/{{partyIdType}}/{{partyIdentifier}}/error"
},
{
"type": "FSPIOP_CALLBACK_URL_QUOTES",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000"
},
{
"type": "FSPIOP_CALLBACK_URL_TRX_REQ_SERVICE",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000"
},
{
"type": "FSPIOP_CALLBACK_URL_TRANSFER_POST",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/transfers"
},
{
"type": "FSPIOP_CALLBACK_URL_TRANSFER_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/transfers/{{transferId}}"
},
{
"type": "FSPIOP_CALLBACK_URL_TRANSFER_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/transfers/{{transferId}}/error"
},
{
"type": "FSPIOP_CALLBACK_URL_BULK_TRANSFER_POST",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/bulkTransfers"
},
{
"type": "FSPIOP_CALLBACK_URL_BULK_TRANSFER_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/bulkTransfers/{{id}}"
},
{
"type": "FSPIOP_CALLBACK_URL_BULK_TRANSFER_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/bulkTransfers/{{id}}/error"
},
{
"type": "NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL",
"value": "some.email@gmail.com"
},
{
"type": "NET_DEBIT_CAP_ADJUSTMENT_EMAIL",
"value": "some.email@gmail.com"
},
{
"type": "SETTLEMENT_TRANSFER_POSITION_CHANGE_EMAIL",
"value": "some.email@gmail.com"
}
]
# Response data model
Name | Required | Type | Description |
---|---|---|---|
type | yes | String | Type of endpoint. |
value | yes | String | Endpoint value. |
# POST /participants/{name}/endpoints
Adds/updates endpoints for a particular participant.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
# Example request
curl -X POST -H "Content-Type: application/json" \
-d '{"type": "NET_DEBIT_CAP_ADJUSTMENT_EMAIL", "value": "some.email@org.com"}'
http://<domain-where-hub-central-ledger-service-is-running>/participants/payerfsp/endpoints
# Request data model
Name | Required | Type | Description |
---|---|---|---|
type | yes | String | Type of endpoint. |
value | yes | String | Endpoint value. |
# Example response
HTTP/1.1 201 Created
Content-Type: application/json
# GET /participants/{name}/limits
Retrieves limits information for a particular participant.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
# Query parameters
Name | Required | Type | Description |
---|---|---|---|
currency | no | CurrencyEnum | The currency of the limit. |
limit | no | String | Limit type. |
# Example request
curl 'http://<domain-where-hub-central-ledger-service-is-running>/participants/payerfsp/limits'
# Example response
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"currency": "USD",
"limit": {
"type": "NET_DEBIT_CAP",
"value": 10000,
"alarmPercentage": 10
}
}
]
# Response data model
Each limit in the returned list is applied to the specified participant name and currency in each object.
Name | Required | Type | Description |
---|---|---|---|
currency | yes | CurrencyEnum | The currency configured for the participant. |
limit | yes | ParticipantLimit | The limit configured for the participant. |
# PUT /participants/{name}/limits
Adjusts limits for a particular participant.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
# Example request
curl -X PUT -H "Content-Type: application/json" \
-d '{ \
"currency": "USD", \
"limit": { \
"type": NET_DEBIT_CAP", \
"value": 10000, \
"alarmPercentage": 20
} \
}' \
http://<domain-where-hub-central-ledger-service-is-running>/participants/payerfsp/limits
# Request data model
Name | Required | Type | Description |
---|---|---|---|
currency | yes | CurrencyEnum | The currency configured for the participant. |
limit | yes | ParticipantLimit | The limit configured for the participant. |
# Example response
HTTP/1.1 200 OK
Content-Type: application/json
{
"currency": "USD",
"limit": {
"type": "NET_DEBIT_CAP",
"value": 10000,
"alarmPercentage": 20
}
}
# Response data model
Name | Required | Type | Description |
---|---|---|---|
currency | yes | CurrencyEnum | The currency configured for the participant. |
limit | yes | ParticipantLimit | The limit configured for the participant. |
# GET /participants/{name}/positions
Retrieves the position of a particular participant.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
# Query parameters
Name | Required | Type | Description |
---|---|---|---|
currency | no | CurrencyEnum | The currency of the limit. |
# Example request
curl 'http://<domain-where-hub-central-ledger-service-is-running>/participants/payerfsp/positions'
# Example response
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"currency": "USD",
"value": 150,
"changedDate": "2021-05-10T08:01:38.000Z"
}
]
# Response data model
Name | Required | Type | Description |
---|---|---|---|
currency | yes | CurrencyEnum | The currency configured for the participant. |
value | yes | Number | Position value. |
changedDate | yes | DateTime | Date and time when the position last changed. |
# GET /participants/{name}/accounts
Retrieves the accounts and balances of a particular participant.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
# Example request
curl 'http://<domain-where-hub-central-ledger-service-is-running>/participants/payerfsp/accounts'
# Example response
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id": 3,
"ledgerAccountType": "POSITION",
"currency": "USD",
"isActive": 1,
"value": 150,
"reservedValue": 0,
"changedDate": "2021-05-10T08:01:38.000Z"
},
{
"id": 4,
"ledgerAccountType": "SETTLEMENT",
"currency": "USD",
"isActive": 1,
"value": -165000,
"reservedValue": 0,
"changedDate": "2021-05-10T14:27:02.000Z"
},
{
"id": 24,
"ledgerAccountType": "INTERCHANGE_FEE_SETTLEMENT",
"currency": "USD",
"isActive": 1,
"value": 0,
"reservedValue": 0,
"changedDate": "2021-03-30T12:23:06.000Z"
}
]
# Response data model
Name | Required | Type | Description |
---|---|---|---|
id | yes | Integer | Identifier of the ledger account. |
ledgerAccountType | yes | String | Type of ledger account. |
currency | yes | CurrencyEnum | The currency of the ledger account. |
isActive | yes | Integer(1) | A flag to indicate whether or not the ledger account is active. Possible values are 1 and 0 . |
value | yes | Number | Account balance value. |
reservedValue | yes | Number | Value reserved in the account. |
changedDate | yes | DateTime | Date and time when the ledger account last changed. |
# POST /participants/{name}/accounts
Creates accounts in the Hub.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
# Example request
curl -X POST -H "Content-Type: application/json" \
-d '{"currency": "USD", "type": "HUB_MULTILATERAL_SETTLEMENT"}' \
http://<domain-where-hub-central-ledger-service-is-running>/participants/payerfsp/accounts
# Request data model
Name | Required | Type | Description |
---|---|---|---|
currency | yes | CurrencyEnum | The currency of the participant ledger account. |
type | yes | String | Type of ledger account. |
# Example response
HTTP/1.1 200 OK
Content-Type: application/json
{
"name": "hub",
"id": "dev1-central-ledger.mojaloop.live/participants/hub",
"created": "2021-01-12T10:56:30.000Z",
"isActive": 0,
"links": {
"self": "dev1-central-ledger.mojaloop.live/participants/hub"
},
"accounts": [
{
"id": 1,
"ledgerAccountType": "HUB_MULTILATERAL_SETTLEMENT",
"currency": "USD",
"isActive": 0,
"createdDate": "2021-01-12T10:56:30.000Z",
"createdBy": "unknown"
}
]
}
# Response data model
Name | Required | Type | Description |
---|---|---|---|
name | yes | String | The name of the participant. |
id | yes | String | The identifier of the participant in the form of a fully qualified domain name combined with the participant's fspId . |
created | yes | DateTime | Date and time when the participant was created. |
isActive | yes | Integer(1) | A flag to indicate whether or not the participant is active. Possible values are 1 and 0 . |
links | yes | Self | List of links for a Hypermedia-Driven RESTful Web Service. |
accounts | yes | Accounts | The list of ledger accounts configured for the participant. |
# POST /participants/{name}/accounts/{id}
Records Funds In or Out of a participant account.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
id | yes | Integer | Account identifier. |
# Example request
curl -X POST -H "Content-Type: application/json" \
-d '{ \
"transferId": "bfd38d14-893f-469d-a6ca-a312a0223949", \
"externalReference": "660616", \
"action": "recordFundsIn", \
"reason": "settlement", \
"amount": { \
"amount": "5000", \
"currency": "USD" \
}, \
"extensionList": { \
"extension": [ \
{ \
"key": "scheme", \
"value": "abc" \
} \
] \
} \
}' \
http://<domain-where-hub-central-ledger-service-is-running>/participants/payerfsp/accounts/2
# Request data model
Name | Required | Type | Description |
---|---|---|---|
transferId | yes | UUID | Transfer identifier. |
externalReference | yes | String | Reference to any external data, such as an identifier from the settlement bank. |
action | yes | Enum | The action performed on the funds. Possible values are: recordFundsIn and recordFundsOutPrepareReserve . |
reason | yes | String | The reason for the FundsIn or FundsOut action. |
amount | yes | Money | The FundsIn or FundsOut amount. |
extensionList | no | ExtensionList | Additional details. |
# Example response
HTTP/1.1 202 Accepted
# PUT /participants/{name}/accounts/{id}
Updates a participant account. Currently, updating only the isActive
flag is supported.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
id | yes | Integer | Account identifier. |
# Example request
curl -X PUT -H "Content-Type: application/json" \
-d '{"isActive": true}' \
http://<domain-where-hub-central-ledger-service-is-running>/participants/payerfsp/account/2
# Request data model
Name | Required | Type | Description |
---|---|---|---|
isActive | yes | Boolean | A flag to indicate whether or not the participant account is active. |
# Example response
HTTP/1.1 200 OK
# PUT /participants/{name}/accounts/{id}/transfers/{transferId}
Records a transfer as a Funds In or Out transaction for a participant account.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
id | yes | Integer | Account identifier. |
transferId | yes | UUID | Transfer identifier. |
# Example request
curl -X PUT -H "Content-Type: application/json" \
-d '{"action": "recordFundsOutCommit", "reason": "fix"}' \
http://<domain-where-hub-central-ledger-service-is-running>/participants/payerfsp/account/2/transfers/bfd38d14-893f-469d-a6ca-a312a0223949
# Request data model
Name | Required | Type | Description |
---|---|---|---|
action | yes | Enum | The FundsOut action performed. Possible values are: recordFundsOutCommit and recordFundsOutAbort . |
reason | yes | String | The reason for the FundsOut action. |
# Example response
HTTP/1.1 202 Accepted
# POST /participants/{name}/initialPositionAndLimits
Adds initial limits and a position for a particular participant.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String(2..30) | The name of the participant. |
# Example request
curl -X POST -H "Content-Type: application/json" \
-d '{ \
"currency": "USD", \
"limit": { \
"type": "NET_DEBIT_CAP", \
"value": "10000" \
}, \
"initialPosition": 0 \
}' \
http://<domain-where-hub-central-ledger-service-is-running>/participants/payerfsp/initialPositionAndLimits
# Request data model
Name | Required | Type | Description |
---|---|---|---|
currency | yes | CurrencyEnum | The currency of the participant. |
limit | yes | ParticipantLimit | The limit configured for the participant. |
initialPosition | no | Number | Initial Position. |
# Example response
HTTP/1.1 201 Created
# API Resource /settlementModels
The services provided by the resource /settlementModels
are used by the Hub Operator for creating, updating, and viewing settlement models.
# GET /settlementModels
Retrieves information about all settlement models.
# Example request
curl 'http://<domain-where-hub-central-ledger-service-is-running>/settlementModels'
# Example response
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"settlementModelId": 1,
"name": "DEFERREDNETUSD",
"isActive": true,
"settlementGranularity": "NET",
"settlementInterchange": "MULTILATERAL",
"settlementDelay": "DEFERRED",
"currency": "USD",
"requireLiquidityCheck": true,
"ledgerAccountTypeId": "POSITION",
"autoPositionReset": true
},
{
"settlementModelId": 4,
"name": "DEFERREDNETEUR",
"isActive": true,
"settlementGranularity": "NET",
"settlementInterchange": "MULTILATERAL",
"settlementDelay": "DEFERRED",
"currency": "EUR",
"requireLiquidityCheck": true,
"ledgerAccountTypeId": "SETTLEMENT",
"autoPositionReset": true
}
]
# Response data model
Name | Required | Type | Description |
---|---|---|---|
settlementModelId | yes | Integer | Settlement model identifier. |
name | yes | String | Settlement model name. |
isActive | yes | Boolean | A flag to indicate whether or not the settlement model is active. |
settlementGranularity | yes | String | Specifies whether transfers are settled one by one or as a batch. Possible values are: GROSS : Settlement is executed after each transfer is completed, that is, there is a settlement transaction that corresponds to every transaction. NET : A group of transfers is settled together in a single settlement transaction, with each participant settling the net of all transfers over a given period of time. |
settlementInterchange | yes | String | Specifies the type of settlement arrangement between parties. Possible values are: BILATERAL : Each participant settles its obligations with each other separately, and the scheme is not a party to the settlement. MULTILATERAL : Each participant settles with the scheme for the net of its obligations, rather than settling separately with each other party. |
settlementDelay | yes | String | Specifies if settlement happens immediately after a transfer has completed or with a delay. Possible values are: IMMEDIATE : Settlement happens immediately after a transfer has completed. DEFERRED : Settlement is managed by the Hub operator on-demand or via a schedule. |
currency | yes | CurrencyEnum | The currency configured for the settlement model. |
requireLiquidityCheck | yes | Boolean | A flag to indicate whether or not the settlement model requires liquidity check. |
ledgerAccountTypeId | yes | String | Type of ledger account. Possible values are: INTERCHANGE_FEE : Tracks the interchange fees charged for transfers. POSITION : Tracks how much a DFSP owes or is owed. SETTLEMENT : The DFSP's Settlement Bank Account mirrored in the Hub. Acts as a reconciliation account and mirrors the movement of real funds. |
autoPositionReset | yes | Boolean | A flag to indicate whether or not the settlement model requires the automatic reset of the position. |
# POST /settlementModels
Creates a settlement model.
# Example request
curl -X POST -H "Content-Type: application/json" \
-d '{ \
"name": "DEFERREDNET", \
"settlementGranularity": "NET", \
"settlementInterchange": "MULTILATERAL", \
"settlementDelay": "DEFERRED", \
"requireLiquidityCheck": true, \
"ledgerAccountType": "POSITION", \
"autoPositionReset": true \
}' \
http://<domain-where-hub-central-ledger-service-is-running>/settlementModels
# Request data model
Name | Required | Type | Description |
---|---|---|---|
name | yes | String | Settlement model name. |
settlementGranularity | yes | String | Specifies whether transfers are settled one by one or as a batch. Possible values are: GROSS : Settlement is executed after each transfer is completed, that is, there is a settlement transaction that corresponds to every transaction. NET : A group of transfers is settled together in a single settlement transaction, with each participant settling the net of all transfers over a given period of time. |
settlementInterchange | yes | String | Specifies the type of settlement arrangement between parties. Possible values are: BILATERAL : Each participant settles its obligations with each other separately, and the scheme is not a party to the settlement. MULTILATERAL : Each participant settles with the scheme for the net of its obligations, rather than settling separately with each other party. |
settlementDelay | yes | String | Specifies if settlement happens immediately after a transfer has completed or with a delay. Possible values are: IMMEDIATE : Settlement happens immediately after a transfer has completed. DEFERRED : Settlement is managed by the Hub operator on-demand or via a schedule. |
currency | yes | CurrencyEnum | The currency configured for the settlement model. |
requireLiquidityCheck | yes | Boolean | A flag to indicate whether or not the settlement model requires liquidity check. |
ledgerAccountTypeId | yes | String | Type of ledger account. Possible values are: INTERCHANGE_FEE : Tracks the interchange fees charged for transfers. POSITION : Tracks how much a DFSP owes or is owed. SETTLEMENT : The DFSP's Settlement Bank Account mirrored in the Hub. Acts as a reconciliation account and mirrors the movement of real funds. |
settlementAccountType | yes | String | A special type of ledger account into which settlements should be settled. Possible values are: SETTLEMENT : A settlement account for the principal value of transfers (that is, the amount of money that the Payer wants the Payee to receive). INTERCHANGE_FEE_SETTLEMENT : A settlement account for the fees associated with transfers. |
autoPositionReset | yes | Boolean | A flag to indicate whether or not the settlement model requires the automatic reset of the position. |
# Example response
HTTP/1.1 201 Created
# GET /settlementModels/{name}
Retrieves information about a particular settlement model.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String | The name of the settlement model. |
# Example request
curl 'http://<domain-where-hub-central-ledger-service-is-running>/settlementModels/DEFERREDNET'
# Example response
HTTP/1.1 200 OK
Content-Type: application/json
{
"settlementModelId": 1,
"name": "DEFERREDNET",
"isActive": true,
"settlementGranularity": "NET",
"settlementInterchange": "MULTILATERAL",
"settlementDelay": "DEFERRED",
"currency": "USD",
"requireLiquidityCheck": true,
"ledgerAccountTypeId": "POSITION",
"autoPositionReset": true
}
# Response data model
Name | Required | Type | Description |
---|---|---|---|
settlementModelId | yes | Integer | Settlement model identifier. |
name | yes | String | Settlement model name. |
isActive | yes | Boolean | A flag to indicate whether or not the settlement model is active. |
settlementGranularity | yes | String | Specifies whether transfers are settled one by one or as a batch. Possible values are: GROSS : Settlement is executed after each transfer is completed, that is, there is a settlement transaction that corresponds to every transaction. NET : A group of transfers is settled together in a single settlement transaction, with each participant settling the net of all transfers over a given period of time. |
settlementInterchange | yes | String | Specifies the type of settlement arrangement between parties. Possible values are: BILATERAL : Each participant settles its obligations with each other separately, and the scheme is not a party to the settlement. MULTILATERAL : Each participant settles with the scheme for the net of its obligations, rather than settling separately with each other party. |
settlementDelay | yes | String | Specifies if settlement happens immediately after a transfer has completed or with a delay. Possible values are: IMMEDIATE : Settlement happens immediately after a transfer has completed. DEFERRED : Settlement is managed by the Hub operator on-demand or via a schedule. |
currency | yes | CurrencyEnum | The currency configured for the settlement model. |
requireLiquidityCheck | yes | Boolean | A flag to indicate whether or not the settlement model requires liquidity check. |
ledgerAccountTypeId | yes | String | Type of ledger account. Possible values are: INTERCHANGE_FEE : Tracks the interchange fees charged for transfers. POSITION : Tracks how much a DFSP owes or is owed. SETTLEMENT : The DFSP's Settlement Bank Account mirrored in the Hub. Acts as a reconciliation account and mirrors the movement of real funds. |
autoPositionReset | yes | Boolean | A flag to indicate whether or not the settlement model requires the automatic reset of the position. |
# PUT /settlementModels/{name}
Updates a settlement model (activates/deactivates a settlement model).
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
name | yes | String | The name of the settlement model. |
# Example request
curl -X PUT -H "Content-Type: application/json" \
-d '{"isActive": true}' \
http://<domain-where-hub-central-ledger-service-is-running>/settlementModels/DEFERREDNET
# Request data model
Name | Required | Type | Description |
---|---|---|---|
isActive | yes | Boolean | A flag to indicate whether or not the settlement model is active. |
# Example response
HTTP/1.1 200 OK
Content-Type: application/json
{
"settlementModelId": 1,
"name": "DEFERREDNET",
"isActive": true,
"settlementGranularity": "NET",
"settlementInterchange": "MULTILATERAL",
"settlementDelay": "DEFERRED",
"currency": "USD",
"requireLiquidityCheck": true,
"ledgerAccountTypeId": "POSITION",
"autoPositionReset": true
}
# Response data model
Name | Required | Type | Description |
---|---|---|---|
settlementModelId | yes | Integer | Settlement model identifier. |
name | yes | String | Settlement model name. |
isActive | yes | Boolean | A flag to indicate whether or not the settlement model is active. |
settlementGranularity | yes | String | Specifies whether transfers are settled one by one or as a batch. Possible values are: GROSS : Settlement is executed after each transfer is completed, that is, there is a settlement transaction that corresponds to every transaction. NET : A group of transfers is settled together in a single settlement transaction, with each participant settling the net of all transfers over a given period of time. |
settlementInterchange | yes | String | Specifies the type of settlement arrangement between parties. Possible values are: BILATERAL : Each participant settles its obligations with each other separately, and the scheme is not a party to the settlement. MULTILATERAL : Each participant settles with the scheme for the net of its obligations, rather than settling separately with each other party. |
settlementDelay | yes | String | Specifies if settlement happens immediately after a transfer has completed or with a delay. Possible values are: IMMEDIATE : Settlement happens immediately after a transfer has completed. DEFERRED : Settlement is managed by the Hub operator on-demand or via a schedule. |
currency | yes | CurrencyEnum | The currency configured for the settlement model. |
requireLiquidityCheck | yes | Boolean | A flag to indicate whether or not the settlement model requires liquidity check. |
ledgerAccountTypeId | yes | String | Type of ledger account. Possible values are: INTERCHANGE_FEE : Tracks the interchange fees charged for transfers. POSITION : Tracks how much a DFSP owes or is owed. SETTLEMENT : The DFSP's Settlement Bank Account mirrored in the Hub. Acts as a reconciliation account and mirrors the movement of real funds. |
autoPositionReset | yes | Boolean | A flag to indicate whether or not the settlement model requires the automatic reset of the position. |
# API Resource /transactions
The services provided by the resource /transactions
are used by the Hub Operator for retrieving transfer details.
# GET /transactions/{id}
Retrieves information about a particular transaction.
# Path parameters
Name | Required | Type | Description |
---|---|---|---|
id | yes | UUID | Transfer identifier. |
# Example request
curl 'http://<domain-where-hub-central-ledger-service-is-running>/transactions/85feac2f-39b2-491b-817e-4a03203d4f14'
# Example response
HTTP/1.1 200 OK
Content-Type: application/json
{
"quoteId": "7c23e80c-d078-4077-8263-2c047876fcf6",
"transactionId": "85feac2f-39b2-491b-817e-4a03203d4f14",
"transactionRequestId": "a8323bc6-c228-4df2-ae82-e5a997baf898",
"payee": {
"partyIdInfo": {
"partyIdType": "MSISDN",
"partyIdentifier": "123456789",
"fspId": "MobileMoneyAbc"
},
"name": "John Doe",
"personalInfo": {
"complexName": {
"firstName": "John",
"middleName": "William",
"lastName": "Doe"
},
"dateOfBirth": "1966-06-16"
}
},
"payer": {
"partyIdInfo": {
"partyIdType": "MSISDN",
"partyIdentifier": "987654321",
"fspId": "MobileMoneyXyz"
},
"name": "Jane Doe",
"personalInfo": {
"complexName": {
"firstName": "Mary",
"middleName": "Jane",
"lastName": "Doe"
},
"dateOfBirth": "1975-05-15"
}
},
"amount": {
"currency": "USD",
"amount": "50"
},
"transactionType": {
"scenario": "DEPOSIT",
"initiator": "PAYER",
"initiatorType": "CONSUMER"
}
}
# Response data model
Name | Required | Type | Description |
---|---|---|---|
quoteId | UUID | Quote identifier. | |
transactionId | UUID | Transaction identifier. | |
transactionRequestId | String | Identifies an optional previously-sent transaction request. | |
payee | Party | Payee details. | |
payer | Party | Payer details. | |
amount | Money | Transaction amount. | |
transactionType | TransactionType | Transaction details. | |
note | String | A memo that will be attached to the transaction. | |
extensionList | ExtensionList | Additional details. |
# Data models used by the API
# Format
For details on the formats used for element data types used by the API, see section Element Data Type Formats in the Mojaloop FSPIOP API Definition.
# Element Data Type Formats
This section defines element data types used by the API.
# Amount
For details, see section Amount in the Mojaloop FSPIOP API Definition.
# Boolean
A "true"
or "false"
value.
# DateTime
For details, see section DateTime in the Mojaloop FSPIOP API Definition.
# Enum
For details, see section Enum in the Mojaloop FSPIOP API Definition.
# Integer
For details, see section Integer in the Mojaloop FSPIOP API Definition.
# Number
The API data type Number
is a an arbitrary-precision, base-10 decimal number value.
# String
For details, see section String in the Mojaloop FSPIOP API Definition.
# UUID
For details, see section UUID in the Mojaloop FSPIOP API Definition.
# Element Definitions
This section defines element types used by the API.
# IsActive
Data model for the element IsActive.
Name | Required | Type | Description |
---|---|---|---|
isActive | yes | Integer(1) | A flag to indicate whether or not a ledger account / participant is active. Possible values are 1 (active) and 0 (not active). |
# IsActiveBoolean
Data model for the element IsActiveBoolean.
Name | Required | Type | Description |
---|---|---|---|
isActive | yes | Boolean | A flag to indicate whether or not an account / participant / settlement model is active. |
# CurrencyEnum
For details, see section Currency enum in the Mojaloop FSPIOP API Definition.
# RequireLiquidityCheck
Data model for the element RequireLiquidityCheck.
Name | Required | Type | Description |
---|---|---|---|
requireLiquidityCheck | yes | Boolean | A flag to indicate whether or not a settlement model requires liquidity check. |
# Self
Data model for the element Self.
Name | Required | Type | Description |
---|---|---|---|
self | yes | String | Fully qualified domain name combined with the fspId of the participant. |
# SettlementDelay
Data model for the element SettlementDelay.
Name | Required | Type | Description |
---|---|---|---|
settlementDelay | yes | Enum of String | Specifies if settlement happens immediately after a transfer has completed or with a delay. Allowed values for the enumeration are: IMMEDIATE : Settlement happens immediately after a transfer has completed. DEFERRED : Settlement is managed by the Hub operator on-demand or via a schedule. |
# SettlementGranularity
Data model for the element SettlementGranularity.
Name | Required | Type | Description |
---|---|---|---|
settlementGranularity | yes | Enum of String | Specifies whether transfers are settled one by one or as a batch. Allowed values for the enumeration are: GROSS : Settlement is executed after each transfer is completed, that is, there is a settlement transaction that corresponds to every transaction. NET : A group of transfers is settled together in a single settlement transaction, with each participant settling the net of all transfers over a given period of time. |
# SettlementInterchange
Data model for the element SettlementInterchange.
Name | Required | Type | Description |
---|---|---|---|
settlementInterchange | yes | Enum of String | Specifies the type of settlement arrangement between parties. Allowed values for the enumeration are: BILATERAL : Each participant settles its obligations with each other separately, and the scheme is not a party to the settlement. MULTILATERAL : Each participant settles with the scheme for the net of its obligations, rather than settling separately with each other party. |
# Complex types
# Accounts
The list of ledger accounts configured for the participant. For details on the account object, see IndividualAccount.
# ErrorInformation
For details, see section ErrorInformation in the Mojaloop FSPIOP API Definition.
# ErrorInformationResponse
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
# Extension
For details, see section Extension in the Mojaloop FSPIOP API Definition.
# ExtensionList
For details, see section ExtensionList in the Mojaloop FSPIOP API Definition.
# IndividualAccount
Data model for the complex type IndividualAccount.
Name | Required | Type | Description |
---|---|---|---|
id | yes | Integer | Identifier of the ledger account. |
ledgerAccountType | yes | String | Type of the ledger account (for example, POSITION). |
currency | yes | CurrencyEnum | The currency of the account. |
isActive | yes | Integer(1) | A flag to indicate whether or not the ledger account is active. Possible values are 1 and 0 . |
createdDate | yes | DateTime | Date and time when the ledger account was created. |
createdBy | yes | String | The entity that created the ledger account. |
# Limit
Data model for the complex type Limit.
Name | Required | Type | Description |
---|---|---|---|
type | yes | String | Limit type. |
value | yes | a positive Number | Limit value. |
# Money
For details, see section Money in the Mojaloop FSPIOP API Definition.
# Participant
Data model for the complex type Participant.
Name | Required | Type | Description |
---|---|---|---|
name | yes | String | The name of the participant. |
id | yes | String | The identifier of the participant in the form of a fully qualified domain name combined with the participant's fspId . |
created | yes | DateTime | Date and time when the participant was created. |
isActive | yes | Integer(1) | A flag to indicate whether or not the participant is active. Possible values are 1 and 0 . |
links | yes | Self | List of links for a Hypermedia-Driven RESTful Web Service. |
accounts | yes | Accounts | The list of ledger accounts configured for the participant. |
# ParticipantFunds
Data model for the complex type ParticipantFunds.
Name | Required | Type | Description |
---|---|---|---|
transferId | yes | UUID | Transfer identifier. |
externalReference | yes | String | Reference to any external data, such as an identifier from the settlement bank. |
action | yes | Enum | The action performed on the funds. Possible values are: recordFundsIn and recordFundsOutPrepareReserve . |
reason | yes | String | The reason for the FundsIn or FundsOut action. |
amount | yes | Money | The FundsIn or FundsOut amount. |
extensionList | no | ExtensionList | Additional details. |
# ParticipantLimit
Data model for the complex type ParticipantLimit.
Name | Required | Type | Description |
---|---|---|---|
type | yes | String | The type of participant limit (for example, NET_DEBIT_CAP .) |
value | yes | Number | The value of the limit that has been set for the participant. |
alarmPercentage | yes | Number | An alarm notification is triggered when a pre-specified percentage of the limit is reached. Specifying an alarmPercentage is optional. If not specified, it will default to 10 percent, expressed as 10 . |
# ParticipantsNameEndpointsObject
Data model for the complex type ParticipantsNameEndpointsObject.
Name | Required | Type | Description |
---|---|---|---|
type | yes | String | The endpoint type. |
value | yes | String | The endpoint value. |
# ParticipantsNameLimitsObject
Data model for the complex type ParticipantsNameLimitsObject.
Name | Required | Type | Description |
---|---|---|---|
currency | yes | CurrencyEnum | The currency configured for the participant. |
limit | yes | ParticipantLimit | The limit configured for the participant. |
# Party
For details, see section Party in the Mojaloop FSPIOP API Definition.
# PartyComplexName
For details, see section PartyComplexName in the Mojaloop FSPIOP API Definition.
# PartyIdInfo
For details, see section PartyIdInfo in the Mojaloop FSPIOP API Definition.
# PartyPersonalInfo
For details, see section PartyPersonalInfo in the Mojaloop FSPIOP API Definition.
# RecordFundsOut
Data model for the complex type RecordFundsOut.
Name | Required | Type | Description |
---|---|---|---|
action | yes | Enum | The FundsOut action performed. Possible values are: recordFundsOutCommit and recordFundsOutAbort . |
reason | yes | String | The reason for the FundsOut action. |
# Refund
Data model for the complex type Refund.
Name | Required | Type | Description |
---|---|---|---|
originalTransactionId | yes | UUID | Reference to the original transaction id that is requested to be refunded. |
refundReason | no | String(1-128) | Free text indicating the reason for the refund. |
# SettlementModelsObject
Data model for the complex type SettlementModelsObject.
Name | Required | Type | Description |
---|---|---|---|
settlementModelId | yes | Integer | Settlement model identifier. |
name | yes | String | Settlement model name. |
isActive | yes | Boolean | A flag to indicate whether or not the settlement model is active. |
settlementGranularity | yes | String | Specifies whether transfers are settled one by one or as a batch. Possible values are: GROSS : Settlement is executed after each transfer is completed, that is, there is a settlement transaction that corresponds to every transaction. NET : A group of transfers is settled together in a single settlement transaction, with each participant settling the net of all transfers over a given period of time. |
settlementInterchange | yes | String | Specifies the type of settlement arrangement between parties. Possible values are: BILATERAL : Each participant settles its obligations with each other separately, and the scheme is not a party to the settlement. MULTILATERAL : Each participant settles with the scheme for the net of its obligations, rather than settling separately with each other party. |
settlementDelay | yes | String | Specifies if settlement happens immediately after a transfer has completed or with a delay. Possible values are: IMMEDIATE : Settlement happens immediately after a transfer has completed. DEFERRED : Settlement is managed by the Hub operator on-demand or via a schedule. |
currency | yes | CurrencyEnum | The currency configured for the settlement model. |
requireLiquidityCheck | yes | Boolean | A flag to indicate whether or not the settlement model requires liquidity check. |
ledgerAccountTypeId | yes | String | Type of ledger account. Possible values are: INTERCHANGE_FEE : Tracks the interchange fees charged for transfers. POSITION : Tracks how much a DFSP owes or is owed. SETTLEMENT : The DFSP's Settlement Bank Account mirrored in the Hub. Acts as a reconciliation account and mirrors the movement of real funds. |
autoPositionReset | yes | Boolean | A flag to indicate whether or not the settlement model requires the automatic reset of the position. |
# TransactionType
For details, see section TransactionType in the Mojaloop FSPIOP API Definition.