4.Real Time Transaction Posting API
This API is used for posting remittance fund transfer transaction in Real-Time Payment System in real time basis. Since the nature of transaction is real time, this method can contain only single transaction in a batch. The execution of both debit and credit legs happens in a real time and provides the response accordingly within a single session.
Method | End-Points | Authorization | Content-Type |
---|---|---|---|
POST | (BASE_URL)/api/remit/postcipsbatch | Bearer (access_token) | application/json |
Following points should be consider while posting the transactions through this API.
Both debtor and creditor bank should be the member of Real-Time Payment System(RPS) .
This method supports both On-Us (same bank) and Off-Us (interbank) transactions.
On-Us and Off-Us transactions are to be sent in different batches.
Sender will have to ensure that the channel specific transaction limits (as per NRB) is complied with. The current per transaction limit for this method is 2 million for Off-Us transactions and 200 Million for On-Us.
The transactions per batch limit will be 1.
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.
Request Parameter: The request parameters for this method are created to align the format of ISO 20022 message format hence the payment information has segregated as batch and transaction details.
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 i.e., 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 purpose codes define how to execute the payment instruction. List of purpose categories is available in the product document. Eg. DPAO (Debit principal transaction amount only) | C |
5 | creditorAgent | String | 4 | Financial institution where the receiving party accounts are held. | Y |
6 | creditorBranch | String | 4 | Financial institution branch where the receiving party account is held. Can always be sent as a fixed branch code (Head-Office). | 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, e.g., Citizenship, PAN, 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. This field may be mandatory depending on the configuration of category purpose. | C |
21 | addenda2 | Date | - | C | |
22 | addenda3 | String | 35 | C | |
23 | addenda4 | String | 35 | C | |
24 | freeCode1 | String | 20 | Extra information to specify the purpose of transactions for reconciliation. These fields are significant only to the initiating party bank and will not be routed to the beneficiary 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 (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)>
Transaction String=<Instruction Id>+","<Creditor Agent>+","+<CreditorBranch>+", "+<CreditorAccount> +","+<Transaction Amount>;
Token String=Batch String + Transaction String+","+<user Id>
- Sign the message token from step 1 using the digital certificate private key (pfx file/keystore). The digital signature algorithm will be the SHA256withRSA.
- Convert the signed token above in step 2 to base64 encoding.
- Pass this signature string to the “token” field of the request message.
Request Sample Message
Example:
{
"cipsBatchDetail": {
"batchId": "remitnpi5",
"batchAmount": 10.00,
"batchCount": "1",
"batchCrncy": "NPR",
"categoryPurpose": "REMI",
"debtorAgent": "2501",
"debtorBranch": "1",
"debtorName": "DEBTOR ACCOUNT NAME",
"debtorAccount": "001000*****00011"
},
"cipsTransactionDetailList": [
{
"instructionId": "remitnpi1-5",
"endToEndId": "Family",
"amount": 10.00,
"creditorAgent": "2501",
"creditorBranch": "1",
"creditorName": "CREDITOR ACCOUNT NAME",
"creditorAccount": "001005*****00018",
"particulars": "charge-particular-1",
"remarks": "charge-remarks-1 ",
"remitterName": "Biraj Bahadur",
"countryOfOrigin": "UAE",
"remitterAddress": "dubai",
"purposeOfTransaction": "family expenses",
"remitCompanyName": "Himal Remittance"
}
],
"token": "DQv3y0MT15S3+ToQE0/w8o369gUg5tyhe3Wh+CgA89TFiPo8NaJR8rinsY62Y9mKGv8+5nzjDFaOYFlelSScFyCQEdAM+R9kxt8+USbfkYKApDssCzSUlC9lAp07hQ62YICURY0WdYxliXkvAqlTgrBL7lfTkJqhW/ulmlggWf0="
}
Response Example:
{
"cipsBatchResponse": {
"responseCode": "000",
"responseMessage": "SUCCESS",
"batchId": "remitnpi5",
"debitStatus": "000",
"id": 712395471
},
"cipsTxnResponseList": [
{
"responseCode": "000",
"responseMessage": "SUCCESS",
"id": 12723904,
"instructionId": "remitnpi1-5",
"creditStatus": "000"
}
]
}
Response Parameters
Batch Details:
# | Field Name | Data Type | Length | Description | Presence |
---|---|---|---|---|---|
1 | responseCode | String | - | Debit leg of transaction processing API response. For example, 000 for success. | Y |
2 | responseMessage | String | 500 | API response description. | Y |
3 | batchId | String | 20 | Unique Identification for the batch for later reconciliation. (Sent by the member) | Y |
4 | debitStatus | String | 10 | Debit status (000 for success, 999 for timeout, etc.). Refer to the ISO return reason sheet. | Y |
5 | Id | Integer | - | Unique Identification for the batch generated on the NCHL side. Required for cross-recon/reporting. | Y |
Transaction Details
# | Field Name | Data Type | Length | Description | Presence |
---|---|---|---|---|---|
1 | responseCode | String | - | Credit transaction processing API response. For example, 000 for success. | Y |
2 | responseMessage | String | 500 | API response description. | Y |
3 | instructionId | String | 20 | Unique Identification for the transaction for later reconciliation. (Sent by the NPI member) | Y |
4 | creditStatus | String | 10 | Credit status (000 for success, 999 for timeout, etc.). Refer to the ISO return reason sheet. | Y |
5 | Id | Integer | - | Unique Identification for the transaction generated on the NCHL side. Required for cross-recon/reporting. | Y |