Skip to main content

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.

MethodEnd-PointsAuthorizationContent-Type
POST(BASE_URL)/api/remit/postcipsbatchBearer (access_token)application/json

Following points should be consider while posting the transactions through this API.

  1. Both debtor and creditor bank should be the member of Real-Time Payment System(RPS) .

  2. This method supports both On-Us (same bank) and Off-Us (interbank) transactions.

  3. On-Us and Off-Us transactions are to be sent in different batches.

  4. 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.

  5. The transactions per batch limit will be 1.

  6. Allowed category purpose for method is REMI(Remittance).

  7. This method should to be invoked only after beneficiary account validation is successfully done.

  8. 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 NameData TypeLengthDescriptionPresence
1batchIdString20Unique Identification for the batch for later reconciliation.Y
2batchAmountBigDecimal14,2The total sum of amount of all the transactions in the batchY
3batchCountInteger-Total transactions in the batch.Y
4batchCrncyString3Currency of the transaction. E.g. NPRY
5categoryPurposeString4Purpose of the transaction i.e., REMIY
6debtorAgentString4Financial institution where the transactions initiating party account is held.Y
7debtorBranchString4Financial institution branch where the transactions initiating party account is held.Y
8debtorNameString140Transaction initiation party account name.Y
9debtorAccountString20Transaction initiation party account number.Y
10debtorIdTypeString4Transaction initiation party private id type for ex. Citizenship, pan no, passport etc.O
11debtorIdValueString20Transactions initiation party identification number for ex. Passport number, pan no. etc.O
12debtorAddressString490Transactions initiation party postal addressO
13debtorPhoneString20Transactions initiation party debtor phone number +<country code>-<area code>-<Phone Number>O
14debtorMobileString20Transactions initiation party mobile number +<country code>-<area code>-<Phone Number>O
15debtorEmailString50Transactions initiation party email address.O

Transaction Details:

#Field NameData TypeLengthDescriptionPresence
1instructionIdString30Unique identification for the transaction for reconciliation purpose later.Y
2endToEndIdString30Identification reference for both sender and receiver.Y
3amountBigDecimal13,2The amount to be transferred through this transaction.Y
4purposeString4The 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
5creditorAgentString4Financial institution where the receiving party accounts are held.Y
6creditorBranchString4Financial institution branch where the receiving party account is held. Can always be sent as a fixed branch code (Head-Office).Y
7creditorNameString140Receiving party Account name.Y
8creditorAccountString20Receiving party account number.Y
9remitterNameString100Remittance receiving individual name.Y
10countryOfOriginString20Remittance sending country.Y
11purposeOfTransactionString50Purpose of sending remittance.Y
12remitCompanyNameString50Remittance company through which the payment is initiated.Y
13remitterAddressString100City, town, or street name of the originating country.O
14creditorIdTypeString4Receiving party private identification type, e.g., Citizenship, PAN, passport, etc.O
15creditorIdValueString20Receiving party identification value.O
16creditorAddressString490Receiving party postal address.O
17creditorPhoneString20Receiving party phone number in the format +<country code>-<area code>-<Phone Number>O
18creditorMobileString20Receiving party mobile number in the format +<country code>-<area code>-<Phone Number>O
19creditorEmailString50Receiving party valid email address.O
20addenda1Integer15Information that provides extra details about the transaction. This field may be mandatory depending on the configuration of category purpose.C
21addenda2Date-C
22addenda3String35C
23addenda4String35C
24freeCode1String20Extra 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
25freeCode2String20O
26freeText1String100O
27freeText2String100O
28remarksString100Remarks fieldO
29particularsString100Particulars fieldO

Token Generation Process (Real Time):

  1. 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>
  1. Sign the message token from step 1 using the digital certificate private key (pfx file/keystore). The digital signature algorithm will be the SHA256withRSA.
  2. Convert the signed token above in step 2 to base64 encoding.
  3. 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 NameData TypeLengthDescriptionPresence
1responseCodeString-Debit leg of transaction processing API response. For example, 000 for success.Y
2responseMessageString500API response description.Y
3batchIdString20Unique Identification for the batch for later reconciliation. (Sent by the member)Y
4debitStatusString10Debit status (000 for success, 999 for timeout, etc.). Refer to the ISO return reason sheet.Y
5IdInteger-Unique Identification for the batch generated on the NCHL side. Required for cross-recon/reporting.Y

Transaction Details

#Field NameData TypeLengthDescriptionPresence
1responseCodeString-Credit transaction processing API response. For example, 000 for success.Y
2responseMessageString500API response description.Y
3instructionIdString20Unique Identification for the transaction for later reconciliation. (Sent by the NPI member)Y
4creditStatusString10Credit status (000 for success, 999 for timeout, etc.). Refer to the ISO return reason sheet.Y
5IdInteger-Unique Identification for the transaction generated on the NCHL side. Required for cross-recon/reporting.Y