5. Non-Real Time Remittance Posting API
This API is used for posting the Non-Real time Remittance Fund transfer transactions through NCHL-IPS System. It handles both one to one and batch-based credit transactions .The debit of the payment batch shall be executed instantly however the credit leg shall be done in deferred basis. And once the debit is successful, transaction will be posted to NCHL-IPS system for credit legs by a batch process.
Method | End-Points | Authorization | Content-Type |
---|---|---|---|
POST | (BASE_URL)+/api/remit/postnchlipsbatch | Bearer (access_token) | application/json |
Following points should be consider while posting the transactions to this method.
Debtor bank must be the member of Retail-Payment System however creditor bank can be the member of NCHL-IPS system.
This method supports only the Off-Us (interbank) transactions.
The transaction limit shall be as per the NCHL-IPS system product note, which is based on the category purposes. Addenda information are also mandatory for some of the category purpose (refer to product note for details).
Number of supported transactions within a batch (batch limit) is 10,000.
Allowed category purpose for method is REMI(Remittance).
This method should to be invoked only after beneficiary account validation is successfully done.
The beneficiary/creditor branch is a mandatory field however it can be sent always a fixed branch code(head-office branch). List of such branch codes shall be made available separately.
Batch Details:
# | Field Name | Data Type | Length | Description | Presence |
---|---|---|---|---|---|
1 | batchId | String | 20 | Unique Identification for the batch for later reconciliation. | Y |
2 | batchAmount | BigDecimal | 14,2 | The total sum of amount of all the transactions in the batch. | Y |
3 | batchCount | Integer | - | Total transactions in the batch. | Y |
4 | batchCrncy | String | 3 | Currency of the transaction. E.g. NPR. | Y |
5 | categoryPurpose | String | 4 | Purpose of the transaction: REMI. | Y |
6 | debtorAgent | String | 4 | Financial institution where the transactions initiating party account is held. | Y |
7 | debtorBranch | String | 4 | Financial institution branch where the transactions initiating party account is held. | Y |
8 | debtorName | String | 140 | Transaction initiation party account name. | Y |
9 | debtorAccount | String | 20 | Transaction initiation party account number. | Y |
10 | debtorIdType | String | 4 | Transaction initiation party private id type for ex. Citizenship, pan no, passport etc. | O |
11 | debtorIdValue | String | 20 | Transactions initiation party identification number for ex. Passport number, pan no. etc. | O |
12 | debtorAddress | String | 490 | Transactions initiation party postal address. | O |
13 | debtorPhone | String | 20 | Transactions initiation party debtor phone number +<country code>-<area code>-<Phone Number>. | O |
14 | debtorMobile | String | 20 | Transactions initiation party mobile number +<country code>-<area code>-<Phone Number>. | O |
15 | debtorEmail | String | 50 | Transactions initiation party email address. | O |
Transaction Details:
# | Field Name | Data Type | Length | Description | Presence |
---|---|---|---|---|---|
1 | instructionId | String | 30 | Unique identification for the transaction for reconciliation purpose later. | Y |
2 | endToEndId | String | 30 | Identification reference for both sender and receiver. | Y |
3 | amount | BigDecimal | 13,2 | The amount to be transferred through this transaction. | Y |
4 | purpose | String | 4 | The initiating party will assign purpose of the transactions. List of purpose category is available in product document. | O |
5 | creditorAgent | String | 4 | Financial institution where the receiving party accounts is held. | Y |
6 | creditorBranch | String | 4 | Financial institution branch where the receiving party account is held. | Y |
7 | creditorName | String | 140 | Receiving party Account name. | Y |
8 | creditorAccount | String | 20 | Receiving party account number. | Y |
9 | remitterName | String | 100 | Remittance receiving individual name. | Y |
10 | countryOfOrigin | String | 20 | Remittance sending country. | Y |
11 | purposeOfTransaction | String | 50 | Purpose of sending remittance. | Y |
12 | remitCompanyName | String | 50 | Remittance company through which the payment is initiated. | Y |
13 | remitterAddress | String | 100 | City, town or street name of the originating country. | O |
14 | creditorIdType | String | 4 | Receiving party private identification type for ex. Citizenship, pan no, passport etc. | O |
15 | creditorIdValue | String | 20 | Receiving party identification value. | O |
16 | creditorAddress | String | 490 | Receiving party postal address. | O |
17 | creditorPhone | String | 20 | Receiving party phone number in the format +<country code>-<area code>-<Phone Number>. | O |
18 | creditorMobile | String | 20 | Receiving party mobile number in the format +<country code>-<area code>-<Phone Number>. | O |
19 | creditorEmail | String | 50 | Receiving party valid email address. | O |
20 | addenda1 | Integer | 15 | Information that provides extra details about the transaction. Value may be mandatory depending on configuration. | C |
21 | addenda2 | Date | - | C | |
22 | addenda3 | String | 35 | C | |
23 | addenda4 | String | 35 | C | |
24 | freeCode1 | String | 20 | Extra transaction details used for reconciliation, relevant only to the initiating party bank. | O |
25 | freeCode2 | String | 20 | O | |
26 | freeText1 | String | 100 | O | |
27 | freeText2 | String | 100 | O | |
28 | remarks | String | 100 | Remarks field. | O |
29 | particulars | String | 100 | Particulars field. | O |
Token Generation Process (Non-Real Time):
- Token string generation: The token string is created by appending the financial fields in batch and transactions information. Following will be the procedure for token string generation:
Batch String=<BatchId>+","+<DebtorAgent>+","+<DebtorBranch>+","+<DebtorAccount>+","+<BatchAmount>+","+<Batch Currency (e.g. NPR)>+","+<Category Purpose>
For each transaction
{
Transaction String=Transaction String+","+<Instruction Id>+","<Creditor Agent>+","+<CreditorBranch>+","+<CreditorAccount>+","+<Transaction Amount>;
}
Token String=Batch String + Transaction String+","+<user Id>
- Generate signed hash value of token string using private key of provided certificate.
- Send the generate hash value in “token” field.
Request Message Example:
{
"nchlIpsBatchDetail": {
"batchId": "remitnonreal5",
"batchAmount": 10.00,
"batchCount": "1",
"batchCrncy": "NPR",
"categoryPurpose": "REMI",
"debtorAgent": "2501",
"debtorBranch": "1",
"debtorName": "DEBTOR ACCOUNT NAME",
"debtorAccount": "00100******00011"
},
"nchlIpsTransactionDetailList": [
{
"instructionId": "remitnonreal1-5",
"endToEndId": "City Express-PMT1",
"amount": 10.00,
"creditorAgent": "0401",
"creditorBranch": "81",
"creditorName": "CREDITOR ACCOUNT NAME",
"creditorAccount": "08110****1011",
"particulars": "remitnonreal-particular-1",
"remarks": "remitnonreal-remarks-1 ",
"remitterName": "Biraj Bahadur",
"countryOfOrigin": "UAE",
"remitterAddress": "dubai",
"purposeOfTransaction": "home expenses",
"remitCompanyName": "Himal Remit"
}
],
"token": "UYaxbyjzTsN3ShnLmksNasHRXfpp4hZ8PbVxKlEo56S4iRY7UdzcS2McuN4az8zkoDIdOLBNU8k1+386UtZi++7FQtg1nEaInmW8w9soZneB2dSPz7EceqJmDr4wBC0TrEx0t7+T2fkJFZWNUlfngKM8noq8i0dhWscYCEW6hSM="
}
Response Example:
{
"cipsBatchResponse": {
"responseCode": "000",
"responseMessage": "SUCCESS",
"batchId": "remitnonreal5",
"debitStatus": "000",
"id": 65405
},
"cipsTxnResponseList": [
{
"responseCode": "000",
"responseMessage": "PENDING FOR POSTING IN NCHL-IPS",
"id": 106755,
"instructionId": "remitnonreal1-5",
"creditStatus": "ENTR"
}
]
}
Response Parameters
Batch Details:
# | Field Name | Data Type | Length | Description | Presence |
---|---|---|---|---|---|
1 | responseCode | String | - | API response. For example, 000 for success | Y |
2 | responseMessage | String | 500 | API response code description | Y |
3 | batchId | String | 20 | Unique Identification for the batch for later reconciliation (Generated by the NPI member) | Y |
4 | debitStatus | String | 10 | Debit status (000 for success, 999 for timeout, etc.) (Refer ISO return reason sheet) | Y |
5 | id | Integer | - | Unique Identification for the batch generated in NCHL side | Y |
Transaction Details:
# | Field Name | Data Type | Length | Description | Presence |
---|---|---|---|---|---|
1 | responseCode | String | - | API response. For example, 000 for success | Y |
2 | responseMessage | String | 500 | API response code description | Y |
3 | instructionId | String | 20 | Unique Identification for the transaction for later reconciliation (Generated by the NPI member) | Y |
4 | creditStatus | String | 10 | Credit status:
| Y |
5 | id | Integer | - | Unique Identification for the transaction generated on NCHL side | Y |
Failed Response Examples:
{
"responseCode": "E007",
"responseDescription": "TECHNICAL VALIDATION FAILED",
"billsPaymentDescription": null,
"billsPaymentResponseCode": null,
"fieldErrors": [
{
"field": "nchlIpsBatchDetail.categoryPurpose",
"message": "Invalid transaction category purpose."
}
]
}