Transfer Service Core API

Transfer service core API also known as Outbound service: This API allows banks or other financial institutions to transfer money to other banks or financial Institutions

In this section, we have outlined the steps needed for an efficient integration.

Step 1 - Make a call to the credit Inquiry request API

This endpoint receives a request to confirm if an account specified in destinationAccountNumber can be credited with a specified amount.

On the successful completion of a credit inquiry, the transaction is logged in the Transfer service and awaits a completion update with the same client reference sent in the inquiry or the transaction reference returned in the inquiry response.

Endpoint

POST /inquiries/credit

Body Parameters

Field #Field nameData typeMax lengthClassificationDescription
1sourceAccountNumberString50MandatorySource Account number
2sourceAccountNameString200MandatorySource Account Name
2sourceBankVerificationNumberString100RecommendedSource Customer Bank Verification Number
3destinationAccountNumberString20MandatoryDestination Account Number
4destinationInstitutionCodeString3MandatoryInstitution code, one of the codes assigned in ISW core. This is obtained when you fetch a bank list. Find more information here
5transactionAmountLongMAXMandatoryAmount in minor denomination
6currencyCodeString3MandatoryISO currency code (ISO Numeric Code)
7clientRefString50MandatoryUnique reference per transaction
8mobileNumberString20OptionalInternationally formatted mobile number
9emailAddressString100OptionalCustomer Email Address
10paymentLocationStringMAXOptionalPayment Location
11channelCodeIntegerMAXMandatoryChannel ID. Read more here
12terminalIdString8OptionalTerminalID
13destinationInstitutionAlias-OptionalInstitutions Alias. Can be used instead of destinationInstitutionCode
14mccString4OptionalThe classification of the merchant’s type of business product or service
14rrnString12OptionalA reference number supplied by the system retains the original source information and is used to assist in locating that information or a copy thereof
15paymentLocationString40OptionalThe name and location of the card acceptor (such as a merchant or an ATM)

Response Message Description

Field #Field nameData typeDescription
1responseCodeStringResponse Code
2responseMessageStringResponse Message
3accountNameStringAccount Name
4accountNumberStringAccount Number
5clientRefStringInitial reference sent by client if sent, or one auto generated by system
6transactionReferenceStringUnique transaction reference
7bankVerificationNumberStringBank Verification Number
8kycLevelStringKYC Level
9accountTypeStringCurrent, Savings or Credit
10accountCurrencyStringISO currency
11addressStringReceiver’s address. At present this attribute will not be used for any further processing.
12countryCodeStringCountry code of the transaction. This is the ISO country code.
13canCreditBooleanIf the account validation is successful for credit this will be true. Note: If true allow customer to proceed to complete the credit otherwise, fail the transaction. This is usually because the account is dormant, or the account cannot receive the amount specified.
14systemResponseCodeStringSystem Response code that is sometimes included in response in case of exceptions in the system. This helps with issue resolution.
15actionStringAction on transaction as received from the middleware
16settlementStatusStatusSettlement status of inquiry transaction. Default settlement status for Inquiry is NEW

Sample JSON request

{
"destinationAccountNumber " : "0123456789",
"sourceAccountNumber": "8096080",
"sourceAccountName": "Tolani Moshood",
"destinationInstitutionCode":"ABP",
"transactionAmount": 300000,
"currencyCode": "566",
"clientRef" : "abc1222223knkj",
"mobileNumber":"2348089546016",
"emailAddress" : "[email protected]",
"channelCode":2,    "paymentLocation": "PBL,T,10360057075012,Adubiaro, DeborLaNG"}

This is what a typical successful or invalid response would look like

{
  "accountType": "SAVINGS",
  "accountCurrency": "NGN",
  "address": "1 AYANBOYE STREET ANTHONY KOSOFE LAGOS",
  "responseCode": "00",
  "responseMessage": "Approved or completed successfully",
  "transactionReference": "CR|SUN|ABP|250720201707|237233",
  "bankVerificationNumber": "1234565667",
  "kycLevel": "1",
  "canCredit": true,
  "settlementStatus": "NEW",
  "action": "SUCCESS"
}

{
  "clientRef": "abc1222223knkj",
  "responseCode": "39",
  "responseMessage": "Invalid Account",
  "transactionReference": "CR|SUN|ABP|231120201142|244092",
  "canCredit": false,
  "action": "FAILURE"
}


Step 2 - Account Credit Request With Credit Inquiry Reference or Transaction Reference

This endpoint receives a request to close an open credit inquiry by performing the credit transaction. The credit inquiry to be closed is contained in the clientRef field or transactionReference field. The transactionAmount to be credited is also included in the request. The request is processed and routed to the destination institution to effect the credit. The credit request is pushed for processing and a response is sent back to the calling application.

Endpoint

{
  "endpoint": "POST <base URI>/accounts/credits/completion",
  "headers": {
    "Authorization": "Bearer {Passport Access Token}",
    "Content-Type": "application/json"
  }
}

Body Parameters

Field #Field nameData typeMax lengthClassificationDescription
1transactionAmountLongMAXMandatoryAmount in minor denomination
2narrationString200MandatoryNarration
3clientRefString50RequiredUnique reference per client. If present in inquiry, should be the same. N:B: You either client Ref or Transaction Reference in your payload but you cannot use both.
4additionalInfoStringMAXOptionalAdditional Information. Could contain initial debit details (e.g mobile app implementation)
5transactionReferenceString50RequiredTransaction Reference returned from credit inquiry. N:B: You either client Ref or Transaction Reference in your payload but you cannot use both.

Response Message Description

Field #Field nameDescription
1transactionReferenceUnique transaction reference
2responseCodeThe response code of the transaction see appendix for response code details
3responseMessageThe descriptive response message
4statusThe status of the transaction. See transaction status appendix. Use the status mappings to determine if the transaction succeeded or not.
5clientRefThe clientRef of the transaction
6systemResponseCodeSystem Response code that is sometimes included in response in case of exceptions in the system. This helps with issue resolution.
7settlementStatusSettlement status of the credit transaction

This is what a typical successful response would look like

{
  "responseCode": "00",
  "transactionReference": "CR|FBN|DMD|28032019102410|4237",
  "responseMessage": "Approved by financial institution",
  "status": "SUCCESS",
  "clientRef": "1234-5678",
  "settlementStatus": "SUCCESSFUL"
}


Step 3 - Query the transaction

This endpoint queries a transfer using the original clientRef and/or transactionReference returned by the Transfer Service.

Endpoint

POST <base URI>/transfers/accounts/credits/requery

Headers

Authorization – Bearer {Passport Access Token}Content-Type: application/json

Body Parameters

Field#Field nameData typeMaxClassificationDescription
1clientRefString50OptionalUnique reference per institution
2transactionReferenceString16OptionalUnique transaction reference across institutions, generated and returned by TS

Using either the transactionReference or clientRef

{
  "transactionReference": "CR|SUN|FBP|310520202047|226464"
}

{
  "clientRef": "SUN|ITF|NA|FBP|1235645654|98776"
}

Response Message field description

Field#Field nameDescription
1transactionReferenceUnique transaction reference
2responseCodeThe response code of the transaction (see appendix for response code details)
3responseMessageThe descriptive response message
4statusThe status of the transaction. Use the status mappings to determine if the transaction succeeded or not. Read more on status here
5clientRefThe clientRef of the transaction
6settlementStatusSettlement status of the credit transaction

Sample Response (success)

{
  "responseCode": "00",
  "transactionReference": "CR|SUN|FBP|310520202047|226464",
  "responseMessage": "Approved or completed successfully",
  "status": "SUCCESS",
  "clientRef": "SUN|ITF|NA|FBP|1235645654|98776",
  "settlementStatus": "SUCCESSFUL"
}



How to fetch a List of banks/Institutions

This endpoint allows you to fetch the list of banks which you can send money to

Endpoint

GET <base URI> /transfers/institutions  
Headers

Authorization – Bearer {Passport Access Token}  
Content-Type: application/json

Query Parameters

Field#Field nameData typeOptionDescription
1perPageIntegerOptionalThe number of institutions per page. The default value is 30 and the maximum value is 200
2pageIntegerOptionalThe page number of the institutions to fetch.
GET host /transfers/institutions?perPage=200&page=1

The response will look like this :

{
  "total": 515,
  "perPage": 200,
  "page": 1,
  "institutions": [
    {
      "institutionId": "1",
      "institutionCode": "AAB",
      "institutionName": "Actual African Bank"
    },
    {
      "institutionId": "2",
      "institutionCode": "AGB",
      "institutionName": "Actual Global Bank"
    },
    ...
  ]
    }