Professional Documents
Culture Documents
Composite Pay Api - 1.18
Composite Pay Api - 1.18
Composite Pay Api - 1.18
Documentation
Table of Contents
DOCUMENT REVIEW
Date Version Description
14-Jun-2019 0.1 Initial Draft
26-11-2020 1.13 IMPS 360 API, CIB API under hybrid encryption and VPA Tag
addition
30-Apr-2021 1.15 Status and 360 APIs integrated into composite status API
Table of Contents
Table of Contents
Table of Contents ........................................................................................................................................ 3
Introduction ................................................................................................................................................. 4
Composite API ............................................................................................................................................. 7
Composite payment API.............................................................................................................................. 8
UPI ............................................................................................................................................................................. 9
Payment ............................................................................................................................................................ 9
Response packet of Gateway Failure .......................................................................................................... 14
Status check under UPI ...................................................................................................................................... 15
IMPS .......................................................................................................................................................... 19
Payment .......................................................................................................................................................... 19
Response packet of Gateway Failure .......................................................................................................... 21
Status check under IMPS................................................................................................................................... 22
NEFT & RTGS ............................................................................................................................................. 27
Payment .......................................................................................................................................................... 28
Response packet of Gateway Failure .......................................................................................................... 33
Status check under NEFT & RTGS............................................................................................................... 33
Incremental status check under NEFT (Credit Status Check) .................................................................. 36
Sample request packet for Composite payments ..................................................................................... 39
Composite payment process .................................................................................................................... 40
1. API Name: CIB Registration ..................................................................................................................... 40
2. API Name: Beneficiary Registration ........................................................................................................ 42
Beneficiary Registration through account & IFSC ........................................................................... 42
Beneficiary Registration through VPA .............................................................................................. 44
3. Steps before final Integration................................................................................................................... 45
ENCRYPTION-DECRYPTION PROCESS - For Composite Payment, Status Check APIs, and CIB APIs . 48
For encryption of request at ICICI: .............................................................................................................. 48
For encryption of response at ICICI: ........................................................................................................... 48
For decryption of response at Client: ......................................................................................................... 48
Steps for Encryption ..................................................................................................................................... 48
Steps for Decryption ..................................................................................................................................... 49
Frequently asked questions....................................................................................................................... 50
APPENDIX.................................................................................................................................................. 57
Changes incorporated from Composite API_Document v1.11 onwards ................................................................. 57
Changes incorporated from Composite API_Document v1.12 onwards ................................................................. 58
Changes incorporated from Composite API_Document v1.14 onwards ................................................................. 58
Changes incorporated from Composite API_Document v1.16 onwards ................................................................. 58
Changes incorporated from Composite API_Document v1.18 onwards ................................................................. 60
Table of Contents
Introduction
1. Brief:
In today’s digital world, large base of E-commerce companies and Payment Gateway Aggregators
companies are moving towards API based payments and collection solutions and drifting away from
the existing payment solutions which have a manual intervention or multiple hops in processing of
the payments to the beneficiaries In context to this document, we are introducing the “Composite
pay API” that will cater to any of the payout types payments. The umbrella of composite API will also
include the status check API and beneficiary services APIs for Nodal account holding merchants.
Through this, the customer will have all the payment modes in the API with them and would not have
to go into further iterations of integration with the Bank. Currently, IMPS, NEFT, RTGS and UPI are a
part of this API. The API is designed in such a manner that it can accommodate multiple payment
modes, has a provision of prioritizing a specific payment mode and the immediate payment modes
like IMPS and UPI can also have a fallback option of NEFT or other payment modes once introduced.
The client can also choose to use all or any one mode of payment. The Composite Pay API is hosted
in the API Gateway of ICICI Bank. APIGW will route any request of Composite Pay API to the respective
system of the payment mode depending on the priorities set in the payment request. In the ERP
Banking context, these APIs will be directly integrated into the ERP of the client and the client can
directly carry out the transactions from the ERP. The transaction status will be fed back into the ERP
as response to the fired API (more details given below). The entire maker checker leg is at the
customer’s end without any bank’s platform being involved in the process.
Table of Contents
2. Structure of Payments
1. CIB Registration: This is a mandatory one-time registration API that is required to access the
Beneficiary Registration & Validation API, NEFT and RTGS payment mode APIs. CIB (Corporate
Internet Banking) is the internal data-base in ICICI Bank for composite pay API and hence, for
processing these APIs credentials are required to be created for the client in the CIB database.
2. Beneficiary Registration: This is the first step for merchants holding the Nodal account. After CIB
registration API is fired, this API is required to be fired which shall register beneficiaries on the fly
to the CIB database.
3. Beneficiary Validation: The bene validation service is a part of composite pay API and is structured
in such a way that when the Composite Pay API is hit by the client, at the bank’s end the bene
validation service will be called first by APIGW which will check if the bene is registered in the CIB
5 | P a g e database. If the validation is successful, the transaction leg is called which processes
the transaction basis the payment mode. If the validation fails, the transaction is declined. The
client is shown an appropriate error code as response that the beneficiary is not registered and
the transaction is declined. Please note, this beneficiary validation leg will only be enabled for the
Nodal account holding merchants only.
a. *CIB registration API is required for clients who want to access NEFT, RTGS or beneficiary
registration API. **Beneficiary Registration & Validation is mandatory for Nodal account
holding merchants. Please refer the section ‘4. Debits allowed for Nodal account holding
clients’ in this section below.
4. Payments: The composite API will first hit the APIGW system from clients ERP system. Based on
the priority set by the client, APIGW will route the transaction request to the respective payment
mode systems.
5. Reverse Feed: The transaction status will be shared as response within the same API call for IMPS
and UPI modes whereas for NEFT and RTGS’ mode actual status of the transactions will be
available once the transaction batch gets processed. After that, the client is required to fire the
status check API which will be provided to the client to fetch the transaction status. These statuses
essentially get captured back again in the ERP of the client against the respective transaction.
a. Please note, even though UPI and IMPS are real-time payment modes, but we recommend
following timeline to our clients:
b. For UPI, the final status of the transaction will be available between 300 secs and T+2 days
of initiating the transaction.
c. For IMPS, the final status of the transaction will be available between 300 secs and T+2
days of initiating the transaction.
d. (*The exact timeline is subjective to purging activity at our end. Hence, it is recommended
to check with ICICI Bank team before taking any action on back dated transaction. Ideally)
6. Status Check: If the client doesn’t receive the response of a transaction, they can use the
Composite Status Check API of the respective payment mode X-priority to fetch it. Please note,
until the status is confirmed, the client is not supposed to change the reference number and
reinitiate the transaction.
Table of Contents
3. Technical Pre-requisite required from client’s end:
1. IP Address: The IP needs to be whitelisted at our end to ensure the security.
2. 4096 Bits Public Key Certificate: Composite API will follow encryption and decryption
mechanism to send and receive request & response from client’s end. Every certificate file will
have two components, i.e. Public Key certificate & Private key certificate. Pubic Key Certificates
are used to encrypt and Private key certificates are used to decrypt. The client will use ICICI Bank’s
pubic key certificate and encrypt the payment request. ICICI Bank will decrypt the payment
request using our private key certificate and then process the transaction accordingly as per the
payment mode preferred. After the request has been processed, ICICI Bank will encrypt the
response using client’s public key certificate and post it back. Client will use their corresponding
private key certificate to decrypt the response received. These certificate files are available with
third party vendors. A self-signed certificate for UAT is acceptable, but for live environments a CA
signed one is mandatory
1. Refunds/Cashback
2. Vendor pay-out
3. Commission
Beneficiary Registration and Validation is a mandatory API when the client wants to use the Nodal
account for Vendor pay-outs only. The flow will be such that the client will first fire the Beneficiary.
Registration API and then include the registered beneficiary details in the composite API request.
Packet and then subsequently fire the composite API. Composite API for Nodal account
merchants is structured in such way that they shall first validate the beneficiary before processing
the payment request.
Daily transaction MIS will be made available on the API developer portal
Table of Contents
Composite API
Composite APIs are a design approach to batch API requests sequentially into a single API call. Rather
than multiple round trips to a server, a client can make one API request with a chain of calls and receive
one response.
Composite API is a future-driven system, which aims to the advancement of the payment system, with
modified payment mechanisms. ICICI offers a wide range of composite APIs, ranging from the payout,
status check, beneficiary registrations, and others.
Table of Contents
Composite payment API
This API will be used to make payments including priority orders to identify and conduct the three
types of payment options i.e., UPI, IMPS, and NEFT.
Refer to the flowchart given below, for the process of composite payment API.
Table of Contents
UPI
Unified Payment Interface is an instant real-time payment system, which facilitates inter-bank, peer-to-
peer, and person-to-merchant transactions.
Payment
Point of access
UAT – https://apibankingonesandbox.icicibank.com/api/v1/composite-payment
LIVE – https://apibankingone.icicibank.com/api/v1/composite-payment
Transactional limit: -
Amount (per
Transaction [24*7]
transaction)
Minimum INR.1
Maximum INR.1,00,000
Input
Header
Input Provided by
Description Mandatory value
Parameter ICICI
‘API Key’ is a unique value generated
for each client. Key will be provided to
apikey the merchant during onboarding and Yes Mandatory
same needs to be used for all further
transactions.
Body
Input
parameter & Provided by
Description ICICI Mandatory value
type (maximum
(Yes/No)
character)
Device-ID This is a Unique device Token, which
should be unique per channel user. This Yes Mandatory
[ String (255)]
will be created during registration and
Table of Contents
Note : remitter is the sender
account-number No (Doubt)
Account number of the remitter / sender Conditional
[Number (35)]
use-default-acc Yes
Value of “D” needs to be passed. Mandatory
[Character (1)]
account-type Yes
Account type of the sender to be passed Optional
[String (20)]
pre-approved Yes
Value of “P” to be passed Mandatory
[Character (1)]
default-debit Yes
Value of “N” to be passed Mandatory
[Character (1)]
default-credit Yes
Value of “N” to be passed Mandatory
[Character (1)]
Table of Contents
txn-type Value of ‘merchantToPersonPay’ to be Yes
Mandatory
[String (50)] passed
merchant-type Yes
Value of ‘ENTITY’ to be passed Mandatory
[String (50)]
Aggregator ID
aggrId Yes
[mandatory for only nodal account Conditional
[String]
holder]
payee-IFSC No
Add beneficiary bank IFSC code here Conditional
[String (11)]
Table of Contents
VPA Yes
Should be same as Payee ‘VPA”. Conditional
[String (225)] (Doubt)
Reference number
Mandatory for making credit card and
ref-id QR payments
TxnID to be passed for CC payouts and Yes Conditional
[String(35)]
QR codes. Ref-id should be fetched from
the QR wherever it is available in the QR.
Maximum limit is 35 characters.
payee-mcc If payout is done to a merchant, the MCC
No Optional
[Number][4] of the beneficiary needs to be passed
Table of Contents
A Sample request packet for UPI Transaction
Header apikey = ‘-----------'
x-priority = ’1000’
Body {
"mobile": "7000000023",
"device-id": "190160190160190160190160",
"seq-no": "5DC866EA6ADC427",
"account-provider": "74",
"payee-va": "testo1@icici",
"payer-va": "uattesting0014@icici",
"profile-id": "2995692",
"amount": "1.00",
"pre-approved": "P",
"use-default-acc": "D",
"default-debit": "N",
"default-credit": "N",
"payee-name": "MEHUL",
"mcc": "6011",
"merchant-type": "ENTITY",
"txn-type": "merchantToPersonPay",
"channel-code": "MICICI",
"remarks": "none"
"crpId”: "API3",
"aggrID": "AGGR0008",
"userID": "USER2",
“vpa”:” testo1@icici”
"payee-mcc": "6511",
}
* Above request packet can be directly used on UAT for testing purpose.
Output
Output parameters &
Description
type
Table of Contents
UserProfile [String] Denotes profile ID of the user.
This is the response code populated by the Payee at the time of credit
PayeeRevRespCode
reversal. For all other cases, this will be blank.
This is the response code populated by the Payer at the time of debit
PayerRevRespCode
reversal. For all other cases, this will be blank.
{ {
"success": true, "success" : true,
"response": "0", "response" : "39",
"message": "Transaction Successful", "message" : "duplicate seq no from channel",
"BankRRN": "821911303721", "BankRRN" : "44564564564",
"UpiTranlogId": "1275303721", "UpiTranlogId" : "115151",
"UserProfile": "15980666",
"UserProfile" : "11481217",
"SeqNo":ICI820f8967824f4fddb9d11e77566a", "SeqNo": ICIa978816e9f689791fd35430da6b",
"MobileAppData": "SUCCESS",
"MobileAppData" : "",
"PayerRespCode": "00", "PayerRespCode": "00",
"PayeeRespCode": "00" , "PayeeRespCode": "00"
"PayerRevRespCode": "00", "PayerRevRespCode": "00",
"PayeeRevRespCode": "00" "PayeeRevRespCode": "00"
} }
Table of Contents
Status check under UPI
Point of access
UAT – https://apibankingonesandbox.icicibank.com/api/v1/composite-status
LIVE – https://apibankingone.icicibank.com/api/v1/composite-status
Input
Header
Input
Description Provided by ICICI Mandatory value
parameter
‘API Key’ is a unique value
apikey Yes Mandatory
generated for each client
Body
Input parameter &
type (maximum Description Mandatory value
character)
This is a Unique device Token, which should be
device-id unique per channel user. This will be created
Mandatory
[String (255)] during registration and same will be provided to
the merchant by ICICI Bank.
mobile
Mobile Number of the Merchant (Sender) Mandatory
[Number (10)]
channel-code
Value of “MICICI” needs to be passed Mandatory
[ String (15)]
Table of Contents
ori-seq-no Seq No of the original transaction for which the
Mandatory
[String (35)] status needs to be checked.
Date [Date
Date when the transaction was initiated Mandatory
(MM/DD/YYYY)]
recon360 [String(1)] For value “Y,” API will be routed to Recon API for Mandatory
knowing the Deemed approved or pending
transaction status
{
{
"date": "02/22/2021",
"date": "02/22/2021",
"recon360": "Y",
"recon360": "N",
"seq-no":"Unique id to be sent",
"seq-no": "Unique id to be sent",
"channel-code": "MICICI",
"channel-code": "MICICI",
"ori-seq-no":"SBIbb8319eef7c74f16aa8cd2b0",
"ori-seq-no":"ICIf5DfdC8c6ddgdcfddfdffdfhf2",
"mobile":"9956979792",
"mobile":"9956979792",
"profile-id":"3239272",
"profile-id":"3239272",
"device-id":"19ee1bee5d349d11"
"device-id":"19ee1bee5d349d11"
}
}
Output
Table of Contents
UpiTranlogId [String] The Transaction ID generated by Switch.
TransactionType
Default value as PAY for UPI payouts
[Alphanumeric]
OriginalTransactionStatus
Original transaction status
[Alpha]
PayerAccountNumber
Payer Account Number
[Numeric]
DateTimeStatusChange
Date and Time of Status Change
[Alphanumeric]
SequenceNumber
Original sequence number
[Alphanumeric]
Table of Contents
IRC[Numeric] IRC
DisplayMessage
Display Message on API call
[ Alphanumeric]
OriginalTransactionDateTime
Original Transaction Date and Time
[ Alphanumeric]
{ {"PayeeAccount": "XXXXX7639",
"success": true, "TransactionType": "PAY",
"response": "0", "PayeeIFSC": "SBIN0003160",
"message": "Transaction Successful", "OriginatingChannel": "UPI.NPCI",
"BankRRN": "104714151385", "OriginalTransactionStatus": "Deemed Approved",
"UpiTranlogId": "304844161", "PayeeName": "Mr S VIMALAN",
"UserProfile": "2996298", "PayerIFSC": "",
"SeqNo": "123", "PayerName": "Vignesh .",
"MobileAppData": "PayerVPA": "vignesh18895@oksbi",
{ "MerchantID": "SBIbb8319eef7c74f16a8c9240552d2b0",
"original-txn-rrn":106719317736, "PayeeVPA": "vimalan281096@okicici",
"original-txn-response-code": 0, "RRN": "000320706502",
"original-txn-message": "SUCCESS",
"TransactionAmount": "500",
“npci-resp-code”:,
“payee-vpa:"", "PayerAccountNumber": "XXXXXXXXXXXX976",
“payer-account:"", "DateTimeStatusChange": "2020-0129 15:14:32.0",
“payer-account-type:"", "CurrentTransactionStatus": "Credit Confirmation
“payer-ifsc:"", Received",
“payer-remarks:"Test" "SequenceNumber": "SBIbb8319eef7c74
}
f16aa8c92640552d2b0",
"PayerRespCode": "00",
"IRC": "0000",
"PayeeRespCode": "00"
} "DisplayMessage": "Success. 223813”
"OriginalTransactionDateTime":
"2020-01-03 20:38:48.0"
}
Client will receive two different responses for status and UPI360
Recon360 to be used for pending cases post using the status API and on T+2 working days of
the original transactions.
Last 5 days' transaction status will be present over UPI status inquiry at any point in time.
Table of Contents
IMPS
Immediate Payment Service [IMPS], is a service which allows fund transfers within banks across India,
in a cost & time efficient manner.
Payment
Point of access
UAT – https://apibankingonesandbox.icicibank.com/api/v1/composite-payment
LIVE – https://apibankingone.icicibank.com/api/v1/composite-payment
Transactional limit: -
Minimum Rs.1
Maximum Rs.5,00,000
Input
Header
Input Provided by
Description Mandatory value
parameter ICICI
‘API Key’ is a unique value
apikey Yes Mandatory
generated for each client
x-priority = “0100”
Body
Input parameter & Provided
Description
type (maximum by ICICI Mandatory value
character) (Yes/No)
localTxnDtTime Transaction Date & Time
No Mandatory
[String] (YYYYMMDDHHmmss)
beneAccNo
Beneficiary Account Number No Mandatory
[Number (35)]
beneIFSC
Beneficiary bank’s IFSC Code- No Mandatory
[String (11)]
amount
Transaction amount to be transferred No Mandatory
[Number(14)]
Table of Contents
Transaction Reference Number that
tranRefNo uniquely identifies the transaction at BC
No Mandatory
[String] end. Unique number should be entered by
the user
mobile
Remitter Mobile number No Mandatory
[Number(10)]
Corporate ID
crpId [String] Yes Conditional
(mandatory for Nodal account)
x-priority = ’0100’
Body {
"localTxnDtTime":"20190808161038",
"beneAccNo": "001700000004",
"beneIFSC": "HDFC9229154",
"amount":"287.00",
"tranRefNo":"1236456",
"paymentRef": "FTTransferP2A",
"senderName": "Ram Singh",
"mobile":"9999988888",
"retailerCode": "rcode",
"passCode": "447c4524c9074b8c97e3a3c40ca7458d",
"bcID": "IBCKer00055",
"crpId": "CIBNEXT",
"crpUsr": "BALAKIRAN"
"aggrId": " AGGRID"
}
Table of Contents
* Above request packet can be directly used on UAT for testing purpose.
Output
{ {
Table of Contents
Status check under IMPS
Point of access
UAT – https://apibankingonesandbox.icicibank.com/api/v1/composite-status
LIVE – https://apibankingone.icicibank.com/api/v1/composite-status
Input
Header
Input
Description Provided by ICICI Mandatory value
parameter
‘API Key’ is a unique value
apikey Yes Mandatory
generated for each client
x-priority = “0100”
Body
Input parameter
Description Mandatory value
& type
Transaction Reference Number that
transRefNo
uniquely identifies the transaction at Mandatory
[Number]
beneficiary end.
Date [Date
Date of the transaction initiated Mandatory
(MM/DD/YYYY)]
Table of Contents
A Sample request packet for IMPS status check
IMPS Status enquiry request packet IMPS recon 360 request packet:
{ {
Client has to pass “N” value in recon360 tag to get the IMPS transaction status response and
for Recon360 the value to be passed is “Y”
Recon360 to be used for error codes 11&30 post using the status API and on T+2 calendar
days of the original transactions.
Output
Table of Contents
RemName [String] Sender Name
Retailer Code
RetailerCode [String]
Table of Contents
A Sample response packet for IMPS status check
IMPS Status enquiry request packet IMPS recon 360 request packet:
{ {
"ActCode":"11", "recon-api-response": {
"Response”: “Time out at NPCI", "headers": {
"message-type": 1001,
"BankRRN":
"proc-code": 455002,
"921011806647", "channel-code": "mobile",
"BeneName": "", "stan": "STAN000002",
"TranRefNo": "3247197400487395", "response-code": "0000",
"PaymentRef": "response-message": "Success."
"FTTransferP2A", },
"TranDateTime": "29-07-2019 "parameters”: {
"index": {}
11:37:13",
"id": 0,
"Amount": "2000", "parameter": [
"BeneMMID": "9028001", {
"BeneMobile": "", "name": "BeneficiaryMobileNo",
"BeneAccNo":"06340110001646", "value": {}
"BeneIFSC": "UCBA0000634", },
"RemMobile":"8800683242", {
"name": "RemitterAccountNumber",
"RemName": "ACTASS
"value": "XXXXXXXX090"
TECHNOLOGIES PRIVATE LIMITED", },
"RetailerCode”: “rcode" {
} "name": "BeneficiaryIFSC",
"value": "ABHY00650"
},
{
"name": "OriginatingChannel
",
"value": "Internet"
},
{
"name": "OriginalTrnsactionStatus",
"value": "Suspect"
},
{
"name": "BeneficiaryName",
"value": {}
},
{
"name": "BeneficiarAadharNumber",
"value": {}
},
{
"name": "RRN",
"value": "00381345517"
},
{
"name": "TransactionAmount
",
"value": 1.84
},
Table of Contents
{
"name": "BeneficiaryAcountNumber",
"value": "XXXXXXXXXX2259"
},
{
"name": "MobileNumbr",
"value": 8898526409
},
{
"name": "CurrentTrasactionStatus",
"value": "Credit Confirmation Received"
},
{
"name": "TranRefNo",
"value": 8442310086
},
{
"name": "IRC",
"value": "0091"
},
{
"name": "DisplayMessage",
"value": "Time out at NPCI
"
},
{
"name": "OriginalTrnsactionDateTime,”
"value": "12-FEB2000.00.00"
},
{
"name": "RemitterName",
"value": "Paytm01"
}
]
}
}
}
}
Table of Contents
NEFT & RTGS
NEFT is an electronic payment system developed by RBI, to facilitate the transfer of funds by
customers from one bank to another bank in India. It is a secured, dependable, and efficient system of
funds transfer between banks,
RTGS is a specialist fund transfer method used to make transfers between two domestic banks on a
real-time or gross basis.
Transactional limit: -
12:00 AM – 1:00 AM
and 2nd & 4th Saturday,
Limits 1:00 AM – 7:00 PM 7:00 PM – 12:00 AM Sunday & Holidays
for that Date (Clubbed)
(post cut off hrs)
NEFT
Existing Workflow
Per Transaction
limit mapped to Maximum 10 Lakh Maximum 10 Lakh
Amount
Corporate
Number of
NA NA NA
transactions
Note: -
Table of Contents
Payment
Point of access
UAT – https://apibankingonesandbox.icicibank.com/api/v1/composite-payment
LIVE – https://apibankingone.icicibank.com/api/v1/composite-payment
Input
Header
Input
Description Provided by ICICI Mandatory value
parameter
‘API Key’ is a unique value
apikey Yes Mandatory
generated for each client
FOR NEFT,
x-priority Yes Mandatory
x-priority = “0010”
FOR RTGS,
x-priority = “0001”
Body
Input parameter Provided by
& type Description
ICICI Mandatory value
(maximum
character) (Yes/No)
NEFT
tranRefNo
Transaction Reference Number No Mandatory
[String (16)]
amount
Transaction Amount No Mandatory
[Number (19)]
senderAcctNo
Sender’s Bank Account No No Mandatory
[Number (35)]
beneAccNo
Beneficiary Account Number No Mandatory
[Number (35)]
beneName
Beneficiary Name No Mandatory
[String (50)]
Table of Contents
Beneficiary Bank IFSC Code. In case of
beneIFSC ICICI Bank, this should be ‘ICIC0000011’
No Mandatory
[String (11)] In case of ICICI Bank enabled cards, this
should be ‘ICIC0001028’
narration2
Narration 2 (Remittance information) No Optional
[String (35*4)]
crpId
This is the Client Id in CIB Yes Mandatory
[String(32)]
crpUsr
SMS Corporate User Yes Mandatory
[String]
aggrName
Aggregator Name Yes Mandatory
[String(32)]
WORKFLOW_REQ
D Conditional for Nodal account user with
Yes Conditional
PWT flow.
[String(1)]
RTGS
CORPID
Corporation Id. Provided by ICICI bank. Yes Mandatory
[String(32)]
Table of Contents
USERID
User Id Yes Mandatory
[String(32)]
AGGRNAME
Aggregator Name Yes Mandatory
[String(32)]
UNIQUEID
Unique Id No Mandatory
[String(40)]
DEBITACC
Debtor Account no. No Mandatory
[Number(34)]
CREDITACC
Creditor Account no. No Mandatory
[Number(34)]
AMOUNT
Transaction Amount No Mandatory
[Number(12)]
CURRENCY
Currency in which transaction held Yes Mandatory
[String(3)]
PAYEENAME
Payee name of transaction No Mandatory
[String(280)]
REMARKS
Remark by payee No Mandatory
[String(255)]
WORKFLOW_REQ
D Conditional for Nodal account user with
Yes Conditional
PWT flow
[String(1)]
Table of Contents
A Sample request packet for NEFT transaction
Header apikey = ‘-----------'
x-priority = ’0010’
Body {
"tranRefNo": "abc12345",
"amount": "1",
"senderAcctNo": "000451000301", Doubt: no IFSC for sender
"beneAccNo": "000405002777",
"beneName": "Mehul",
"beneIFSC": "SBIN0003060",
"narration1": "Test",
"crpId": " PRACHICIB1",
"crpUsr": " USER3",
"aggrId": " AGGRID",
"urn": "759969775cff4dcc8b8c63402e645da3",
"aggrName": " AGGRNAME"
"txnType": "RGS"
"WORKFLOW_REQD": "N"
}
For ICICI as beneficiary bank use IFSC as ICIC0000011 and ‘txnType’ as “TPA” and for Non-ICICI
Beneficiaries use IFSC as DLXB0000092 and ‘txnType’ as “RGS”, virtual accounts “VAP” (IFSC
103,104,106)
WORKFLOW_REQD is an optional parameter in Nodal account flow for users with transaction
processing is allowed without workflow.
x-priority = ’0001’
Body {
"AGGRID": "AGGRID",
"CORPID": " PRACHICIB1",
"USERID": " USER3",
"URN":"7ef3bc0d03ec495b9f5fa320224ce94e",
"AGGRNAME": "AGGRNAME",
"UNIQUEID": "ICI01234",
"DEBITACC": " 000405001611",
"CREDITACC": "000405002777",
Table of Contents
"IFSC": "ICIC0000004",
"AMOUNT": "1.00",
"CURRENCY": "INR",
"TXNTYPE": "RTG",
"PAYEENAME": "ASDAS",
"REMARKS": "Salary for Payroll Jan"
"WORKFLOW_REQD": "N"
}
Failure
NEFT RTGS
Success Success
{ {
"URN": "2634AB", "URN": "2634AB",
"STATUS": "SUCCESS", "STATUS": "SUCCESS",
"UNIQUEID": "312342543", "UNIQUEID": "312342543",
"RESPONSE": "SUCCESS", "RESPONSE": "SUCCESS",
"REQID": "275843" "REQID": "275843"
"UTR": "455849" "UTR": "455849"
}
}
Table of Contents
A Sample response packet
NEFT RTGS
Failure Failure
{ {
"RESPONSECODE":"100042", "RESPONSECODE":"100042",
"MESSAGE":"Transaction with reference id "MESSAGE":"Transaction with reference id
346712386 failed during processing, due to 346712386 failed during processing, due to System
System Malfunction", Malfunction",
"STATUS":"FAILURE", "STATUS":"FAILURE",
"ERRORCODE":"106910", "ERRORCODE":"106910",
"RESPONSE":"FAILURE" "RESPONSE":"FAILURE"
} }
** Please note, the sample response packet mentioned above for NEFT & RTGS is standard. But, in
some failure cases, parameters RESPONSECODE, STATUS & ERRORCODE might not appear.
RESPONSE and MESSAGE parameters will always appear.
b) Followed by transaction getting submitted to RBI for processing with the time lag.
For NEFT status inquiry there are two sets of APIs available from ICICI bank given below as
1) NEFT debit confirmation API – Provides the status of the debit in remitter a/c
2) NEFT credit confirmation API – Provides the status of the credit in beneficiary a/c
Status enquiry
A] For money transferred to ICICI bank account beneficiary –
For the amount transferred within ICICI bank the remitter needs to only use the first API i.e., Debit
confirmation API. The remitter needs to fire this API and if the response received in the status field
“SUCCESS” in that case the transaction can be marked as successfully processed.
For the status received as failure (Response tag value to be a success) the same can be marked as failed
and that particular transaction can be re-initiated. For any other status, the remitter should recheck the
Table of Contents
status after 2 hours. This re-check is required to be done only once. In case the status does not change
to a definite success or failure, in that case, no further action is possible, and this transaction is to be
marked as ‘pending.’
All pending transactions are to be reconciled with the remitter bank statement to ascertain the final status
of the transaction. In case of no respective debit is found the transaction can be marked a failed & fresh
transaction can be re-initiated. In case the debt is present in the account the transaction can be marked
as successful.
Additionally, this API can also be utilized to fetch the UTR number for the transaction in case the same is
not received with initial
1. The remitter needs to fire the first API (Debit) and if the response received in the status field is
“SUCCESS” only and only in that case the remitter should proceed to step 2 listed below.
For the status received as a failure the same can be marked as failed and that particular transaction
can be re-initiated. For any other status, the remitter should recheck the status after 2 hours. This
re-check is required to be done only once. In case the status does not change to a definite success
or failure, in that case, no further action is possible, and this transaction is to be marked as
‘pending.’
All pending transactions are to be reconciled with the remitter bank statement to ascertain the
final status of the transaction. In case of no respective debit is found the transaction can be marked
a failed & fresh transaction can be re-initiated. In case the debit is present in the account then the
remitter can proceed to step.
2. Under step 2, the remitter should invoke the second API (Credit API or Incremental status API)
with the requisite request packet as documented in the API documentation. Once the status is
successfully received as “amount credited to beneficiary” the transaction can be marked as
successful.
3. It is possible that in some scenarios the status is received as “posted to RBI.” This status is
provided for the transaction in which the beneficiary bank has not provided the ultimate status
and after 5hrs of the transaction the status would be changed to “paid”. In such a scenario RBI
has provisioned 72 hrs for the beneficiary bank to update the final status of the transaction.
However, if the status does not change post 72 hrs the remitter can mark these transactions as
successful.
Point of access
UAT – https://apibankingonesandbox.icicibank.com/api/v1/composite-status
LIVE – https://apibankingone.icicibank.com/api/v1/composite-status
Table of Contents
Input
Header
AGGRID
Aggregator Id Yes Mandatory
[String(100)]
CORPID
Corporation Id Yes Mandatory
[String(32)]
USERID
User Id Yes Mandatory
[String(32)]
URN
URN Number No Mandatory
[String(40)]
Output
UTRNUMBER
UTR Number of the transaction
[Number(32)]
If Response = FAILURE & Status = Pending, please check inquiry API as per message reflected
in the Response.
If Response = Success & Status = Pending or pending for processing, then the inquiry service
needs to be reinitiated
Table of Contents
If Response = Success & Status = Success, terminal state is reached and no further action
require
In Case of API gateway error where status tag is not available, inquiry service to be reinitiated.
To be used after 30 minutes of the original transaction once the NEFT batch is processed. API gives the
terminal status of transactions for txnType “RGS”
It is mandatory to use status API (Debit Status Check) before firing incremental API
Point of access
UAT – https://apibankingonesandbox.icicibank.com/api/v1/CIBNEFTStatus
LIVE – https://apibankingone.icicibank.com/api/v1/CIBNEFTStatus
Input
Input
parameter & Provided
Description
type by ICICI Mandatory value
(maximum (Yes/No)
character)
AGGRID
Aggregator Id Yes Mandatory
[String(100)]
CORPID
Corporation Id Yes Mandatory
[String(32)]
USERID
User Id Yes Mandatory
[String(32)]
UTRNUMBER
UTN Number No Mandatory
[String(32)]
URN
URN Number No Mandatory
[String(40)]
x-priority = ’0010’
Body {
"URN": "2634AB",
"AGGRID": " Cust0XXX ",
"CORPID": "ICICXXXX",
"USERID": "Deepak",
Table of Contents
" UTRNUMBER": "455849"
}
Output
Response
Success/Failure
[String(10)]
{ {
STATUS:"FAILURE",
“STATUS”: “Amount credited to Beneficiary.",
ErrorCode:"999922",
“UTRNUMBER”:"XXXXXXXXXX",
Message: “Invalid Transaction Id.",
“CreditDate”:"DD, MM,YYYY HH:MM:SS
Response: “Failure"
AM/PM",
}
“Response”: “SUCCESS"
}
Table of Contents
When request sent to Bene bank from RBI & ICICI got confirmation from bene bank about
Amount credited
{
STATUS:"Amount credited to Beneficiary.",
UTRNUMBER:"XXXXXXXXXX",
CreditDate:"DD,MM,YYYY HH:MM:SS
AM/PM",
Response:"SUCCESS"
}
When request sent to Bene bank from RBI & credit confirmation not received from bene
bank
{
STATUS:"Paid",
UTRNUMBER:"XXXXXXXXXX",
CreditDate:"DD,MM,YYYY HH:MM:SS
AM/PM",
Response:"SUCCESS"
}
When Amount refunded to Remitter account, Due to Bene bank details found wrong or
wrong packet is posted
{
STATUS:"Amount refunded to Remitter.",
UTRNUMBER:"XXXXXXXXXX",
CreditDate:"DD,MM,YYYY HH:MM:SS
AM/PM",
Response:"SUCCESS"
}
Table of Contents
Sample request packet for Composite payments
Below packet demonstrates IMPS as first priority and NEFT as a fall back option.
x-priority =”0120”
Body {
"localTxnDtTime":"20190808161038",
"beneAccNo": "001700000004",
"beneIFSC": "HDFC9229154",
"amount":"287.00",
"tranRefNo":"1236456",
"paymentRef": "FTTransferP2A",
"senderName":"Ram singh",
"mobile":"99999888888",
"retailerCode": "rcode",
"passCode": "3f4dbbdad1a241bca994339c0d3f3efd",
"bcID": "IBCFli00044",
"tranRefNo": "abc12345",
"amount": "1",
"senderAcctNo": "000405001257",
"beneAccNo": "000451000001",
"beneName": "Mehul",
"beneIFSC": "SBIN0003060",
"narration1": "Test",
"crpId": "PRACHICIB1",
"crpUsr": "ABC",
"aggrId": "AGGR0028",
"urn": "759969775cff4dcc8b8c63402e645da3",
"aggrName": "Abc",
"txnType": "RGS"
}
Table of Contents
Composite payment process
To initiate the composite payout API, the remitter needs to follow up with a procedure, starting from CIB
registration (based on the type of account), beneficiary registration and validation, payment initiation,
and at last the status check.
Point of access
UAT – https://apibankingonesandbox.icicibank.com/api/Corporate/CIB/v1/Registration
LIVE – https://apibankingone.icicibank.com/api/Corporate/CIB/v1/Registration
Input
Input
parameter & Provided
Description
type by ICICI Mandatory value
(maximum (Yes/No)
character)
AGGRNAME
Aggregator Name Yes Mandatory
[String (32)]
AGGRID
Aggregator Id Yes Mandatory
[String(100)]
CORPID
This is the Client Id in CIB Yes Mandatory
[String(32)]
USERID
User Id Yes Mandatory
[String(32)]
ALIAS ID
Table of Contents
A Sample request packet for CIB registration
{
"CORPID":"<Corp ID>"
"USERID":"<user id>"
"AGGRNAME":"Aggregator name"
"AGGRID":"Aggregator id"
“URN”:”URN Number”
"BANKID":"ICI"
}
Output
Note: please note there can be only Successful registration request or failed.
While firing the registration request, the user has to user the same Corporate ID
and User ID which he uses for logging into CIB. The user would get a
SUCCESS/FAILURE response along with a message.
After getting a success response, the user has to login to CIB using his/her
credentials and do a Self-Approval for this request from “Pending on Me” tray to
complete the one time registration process.
This service will be called by the Partner to register the user at E Banking.
If the registration already completed E Banking application will provide the
“Registration Already Completed” message to the Partner.
If registration is complete then SUCCESS message would be sent to the Partner.
The registration request will stay in E-Banking for further self-approval
Table of Contents
2. API Name: Beneficiary Registration
Merchants willing to initiate a transaction using a nodal account need to undertake this step,
compulsorily. Under this step, the merchants need to fire ‘Beneficiary Registration API,’ which will
enable the bank to validate the beneficiary registration to follow up with the final payout request.
There are two approaches to undertaking this step for different payment platforms.
a. Beneficiary Registration through account & IFSC – This process suffices the need for payments
to be initiated under IMPS, NEFT & RTGS modes.
b. Beneficiary Registration API through VPA [Virtual Payment Address] - This process suffices the
need for payments to be initiated under UPI mode.
NOTE –
For clients with an existing ALIAS ID, the default configuration for this API will not work. The
client needs to delete their existing ALIAS ID through the CIB portal and create a new ALIAS
ID like the existing corporate user ID.
For example, if a client has ALIAS ID as ‘ICICIBank’ and corporate user ID as ‘Bank12345’, then
the client needs to delete the existing ALIAS ID i.e., ‘ICICIBank’ through the CIB portal and
create a new ALIAS ID as ‘Bank12345’ which must be like the corporate user ID.
UAT – https://apibankingonesandbox.icicibank.com/api/Corporate/CIB/v1/BeneAddition
LIVE – https://apibankingone.icicibank.com/api/Corporate/CIB/v1/BeneAddition
Input
BnfName
Beneficiary name. No Mandatory
[ NVARCHAR2 (80)]
Table of Contents
BnfAccNo
Beneficiary Account number No Mandatory
[NVARCHAR2 (32)]
IFSC
Indian Financial System Code. No Mandatory
[NVARCHAR2 (32)]
A Sample request packet for Beneficiary registration through account & IFSC
{
"CrpId": "PRACHICIB1",
"CrpUsr":"USER4",
"BnfName": "AnshumanMishra",
"BnfNickName": "Ansh",
"BnfAccNo":"000405001257",
"PayeeType": "W",
"IFSC": "ICIC0000011",
"AGGR_ID": "AGGR0002",
"URN: "3kCy4sPuSqDNi4kggXJIoE568221"
}
Output
Response
Response SUCCESS OR FAILURE
[NVARCHAR(10)]
Errorcode
Error Code
[Number (40)]
Table of Contents
A Sample response packet for Beneficiary registration through account & IFSC
SUCCESS FAILURE
{
BNF_ID:"4836", {
Message: "You may not be able to make Fund Message: "Invalid Corp Id or User Id
transfer immediately with newly added Or Aggregator Id is passed.",
payee, please check payee status before ErrorCode:"9906",
proceeding", Response: "Failure"
Response: "SUCCESS" }
}
This API will register beneficiary on the basis of VPA essential for UPI payment mode for Nodal account
holding merchants.
Point of access
UAT – https://apibankingonesandbox.icicibank.com/api/Corporate/CIB/VPA/v1/BeneAddition
LIVE – https://apibankingone.icicibank.com/api/Corporate/CIB/VPA/v1/BeneAddition
Input
Input Provided
Description
parameter & by ICICI Mandatory value
type (Yes/No)
AGGRID
Aggregator Id Yes Mandatory
[String]
CORPID
Corporation Id Yes Mandatory
[String]
USERID
User Id Yes Mandatory
[String]
URN
URN Number No Mandatory
[String]
VPA
ALIAS ID Yes Mandatory
[String]
Table of Contents
A Sample request packet for Beneficiary registration through VPA
{
"AGGRID": "PRACHICIB1",
"CORPID":"USER4",
"USERID": "AnshumanMishra",
"URN": "1234567
"VPA": "test0@icici",
}
Output
{ {
BNF_ID:"4836", Message: “Invalid Corp Id or User
Message: “You may not be able to make fund Id Or Aggregator Id is
transfer immediately with newly added payee, passed.",
please check payee status before proceeding", ErrorCode:"9906",
Response: “SUCCESS" Response: “Failure"
} }
The remitter must hold a merchant or a nodal account with the bank.
All the necessary documents are being submitted and processed by the firm
The details mentioned in the request package for initiating the transaction are thoroughly
analyzed.
Table of Contents
Encryption & decryption
For the purpose of maintaining security of APIs initiated through composite API, it is very
important for the APIs to be sent between the merchant and the bank in an encrypted form.
Thus it is required for the merchant to initiate the API in an encrypted form using their public
key. The bank will also be sending the response also in the encrypted form and the merchants
need to decrypt the same using their private key at their side and take the action accordingly.
Unique identifier
requestId for the request.
-- Optional
[String (64)] Not being stored
at any level.
Service Name;
service type Identifying the
-- Mandatory
[String] backend service
name
Table of Contents
retrieving the first 16 bytes
of Base64 decoded
encryptedData
Contains the
encrypted
dataPayload
object containing
the business
information.
encryptedData Encrypted by the
[String. Base64- ephemeral AES
-- Mandatory
encoded data key using
(caseinsensitive)] AES/CBC/PKCS5Pa
dding. Sample
unencrypted
object: Please
refer first section
of document for a
sample object.
"requestId": "",
"service":
"PaymentApi",
"encryptedKey":
"oG5mU1JJNBuwQaSLKb3wfRZks/cT2Vo2yBNNuqjNHDWEC144WxC8iKqBpJAgq7reFKC4sHNUmNP
RDya1AvmQ7x1L+3EAdEs9FEWNurZuWTvZpk4y7JrGhg0rz9KptBf+JfJUkSMo7NR3Saxel6EYtckkDr
3AGW7WJZmhcEoAMMXRws/hLVmaNHC/3nOjCNqqBd4IOOAzdJh/HADRVI+YAJKT8dE4x9NTl+UX
1zAooWhza+TsWEHfxzQIa7zai7WSa/wiJD3uD7mk5vT1WY/fKJBquCuzM7l35vigDhmb7dLVLuX8VMi
NQrtErWNI0uVaag1jg+uZUtyDSxjPFi5yEpKVVc7+T503IDnCvkCFDygqasDsPL24qOjYk4XavTZvwGuP
AdYNNkVnLzVElEhg4zS2ye+fa/8fZiMt/3fwYeN9dgn9i5R6VOFbXSuZJYPSci9k0oqz73h1nzFtps60rUE
DoGIkGvm9waJU3W78VH5mIdGfGvvJjiKIuVHmi/huzEX9v4w3mW7RDGgmOuKImkqki+XWgyB0JvV
msLdO+cBaym/seZP3+zdfhO9AWSI2tDLD4Vf0jDjzoDSFN2mzUFgHK9mbtbXgvsnReoGqx/KsivzmZ
NLmDmtg8eR4Z9LnLni4rl4OtkDv5y/mxMtL3MBUUUajkw6OS6NnhEG895yo=",
"oaepHashingAlgorithm":"NONE",
Table of Contents
"iv": "",
"encryptedData":"wBJSefFsnJVlobh1cJR553w6Ay6b8/2frCjxvdZ1Bsnxztsul7Ha8lFl4PoZD+IhdlRShW
dKgz3yJYIisGV/KKpyMSY3DILOpbkqEa 0Qq0g=",
"clientInfo": "",
"optionalParam": ""
ENCRYPTION-DECRYPTION PROCESS - For Composite Payment, Status Check APIs, and CIB APIs
IV = Initialization Vector- Exactly 16 bytes actual value to match the block size
encryptedData = Base64Encode(AES/CBC/PKCS5Padding(Request,SessionKey, IV))
encryptedKey= Base64Encode(RSA/ECB/PKCS1Encryption(SesionKey,ClientPubKey.cer))
Session key is nothing but randomly generated string of length 16 (OR 32).
encryptedData = Base64Encode(AES/CBC/PKCS5Padding(Response,SessionKey))
IV=getFirst16Bytes(Base64Decode(encryptedData)
SessionKey= Base64Decode(RSA/ECB/PKCS1Decryption(encryptedKey,ClientPrivateKey.p12,))
Session key is nothing but randomly generated string of length 16 (OR 32) .
OR
Table of Contents
Encrypt RANDOMNO using RSA/ECB/PKCS1Padding and encode using Base64. Say encryptedKey.
Perform AES/CBC/PKCS5Padding encryption on request payload using RANDOMNO as key and
ivinitialization vector. Say encryptedData.
Now client may choose to send IV in request from one of below two options.
bytes[] iv = IV;
encryptedData = B64Encode(concatB);
Perform AES/CBC/PKCS5Padding encryption on DATA using RANDOMNO as key and Base64encoded
RANDOMNO as IV. Say ENCR_DATA.
Get the IV- Base64 decode the encryptedData and get first 16 bytes and rest is encrypted response.
bytes[] IV= getFirst16Bytes(Base64Decode(encryptedData)
Table of Contents
Frequently asked questions
COMPOSITE API
S No. QUESTION ANSWER
1. Production IP(s)
1 Is Beneficiary Registration API No. It is only mandatory for clients transacting from the
Mandatory? Nodal account
2 How do you do the status check Fire Beneficiary registration API again, and you will
of Beneficiary Registration API? receive a response, ‘Beneficiary already registered.’
3 How much time does Beneficiary Registration API is a real-time API. As soon
beneficiary registration API takes as the API response is received, the Beneficiary is
to register the beneficiaries? registered on the database and the transfer API can be
processed.
Table of Contents
CIB REGISTRATION API
What is CIB registration? This is a one-time API that registers clients on CIB which
1 is our internal system. This is required for clients to use
the Beneficiary registration, NEFT & RTGS APIs.
ENCRYPTION-DECRYPTION PROCESS
How to check the encryption- The client should encrypt the request using their public
1 decryption mechanism at key and decrypt using the corresponding private key to
clients’ end? understand the mechanism.
What are several payment There are four platforms currently available under the
1 methods covered under composite payout API system, such as UPI, IMPS, NEFT
Composite payment API? & RTGS.
Will the request parameter’s Yes. The request packet needs to include the mandatory
4 change for accessing more than parameters for all the payment modes selected.
one payment mode?
How can we check status of our We have a ‘Status check API,’ which could be used to
5
transaction? check the status of the transaction.
When can I use status check of You can use the status check API for responses not
6 an API and for how many days received and for the pending scenario. Status check to
the status is available? be used up to 5 days from the original transaction day.
Is it mandatory to do status No. The use of this API is dependent on the status of the
7
check after every transaction? final transaction.
Table of Contents
The client will use ICICI Bank’s public key certificate and
encrypt the payment request. ICICI Bank will decrypt the
payment request using our private key certificate and
then process the transaction accordingly as per the
payment mode preferred. After the request has been
processed, ICICI Bank will encrypt the response using
the client’s public key certificate and post it back. The
client will use their corresponding private key certificate
to decrypt the response received.
What is the ideal response time For UPI, ideally, the final status of the transaction will be
2
for UPI transaction? available within 180 secs of initiating the transaction.
Table of Contents
PAYMENT PLATFORM – IMPS
What is BC ID, passcode, and r- These are fixed values that are generated when the
1 code in the IMPS request client is configured in UAT & Production environment
packet? and the same shall be provided after the configuration.
What is limit for number of IMPS No transaction limit on volume per day. Can manage 2-3
3
transactions? transactions per second.
What is limit for number of NEFT No transaction limit on volume per day. Can manage 2-3
2
and RTGS? transactions per second.
2 When will MIS be received? The MIS will be received on T+1 day.
Will the MIS include failed Optional. Depends on the clients’ requirements.
4
transactions?
Table of Contents
ICICI Reconciliation process
Client should treat status sent Yes, Status sent via Original transaction responses or via
through status API call or status status inquiries( including UPI 360 API) should be
1 considered as Source of Truth
in UPI 360 API call as the source
of truth or not?
If there are any transactions CLIENT will reach out to the Bank relationship team who
with “Failed” status received in turn will coordinate with Bank Operations team for the
from status API/360 API calls final status and reason for non-reversal of funds towards
5 and Client doesn’t receive credit failed transactions. The Client team will update the
in the account statement till transaction status based on confirmation from ICICI bank.
T+2 days, how client can get
their funds?
Table of Contents
If transactions are in “Success”
Client’s team needs to highlight the cases to the Bank
status and Client receives a
relationship team and in turn they will coordinate with
query from the merchant that
bank Operations team who will engage with NPCI/
their beneficiary customer
6 Beneficiary Banks to verify the credit status to
didn’t receive the money, what
beneficiary. Such confirmation will be relayed back to
is the course of action available
CLIENT by the Bank’s relationship team.
to Client?
Will the payouts be updated Any change in status is in parallel updated in UPI 360 as
automatically by the system or well. However, CLIENT will treat status given by Bank’s
8 will they be manually updated relationship team as final.
post confirmation from the ICICI
team?
Table of Contents
APPENDIX
1) 1, INTRODUCTION
• Modified text: ‘For UPI, the final status of the transaction will be available between 300 secs
and T+2 days of initiating the transaction’.
• Modified text: ‘For IMPS, the final status of the transaction will be available between 300 secs
& 6 months* of initiating the transaction.’
(*The exact timeline is subjective to purging activity at our end . Hence, it is recommended to
check with ICICI team before taking any action on back dated transaction)
Added text: ‘A self-signed certificate for UAT is acceptable, but for live environments a CA signed
one is mandatory.’
2) 2. API Details
UPI:
• Removal of MPIN, Ref-ID, Expire-after & Notes from UPI request packet section as these
fields are not mandatory
• Seq-no: This should start with ‘ICI’ and should not have any special characters.
NEFT:
Table of Contents
• Sample response packet for NEFT & RTGS have been updated.
• In case of success response packet, UTR field has been added
• In case of failure response packet, ERRORCODE filed has been added.
• Sample response code packet have also been added along with a disclaimer ‘Please note,
the sample response packet mentioned above is standard. But, in some failure cases,
parameters RESPONSECODE, STATUS & ERRORCODE might not appear. RESPONSE and
MESSAGE parameters will always appear.’
5.1 Description:
Added text: ‘For clients with existing ALIAS ID, the default configuration for this API will
not work. Client needs to delete their existing ALIAS ID through CIB portal and create a new ALIAS
ID similar to the existing corporate user ID. For example, a client has ALIAS ID as ‘ICICIBank’ and
corporate user ID as ‘Bank12345’, then client needs to delete the existing ALIAS ID i.e. ‘ICICIBank’
through CIB portal and create a new ALIAS ID as ‘Bank12345’ which has to be similar to the
corporate user ID.’
• VPA Tag added to the UPI request parameter for Nodal account flow
• New CIB APIs under one hybrid encryption, CIB Registration, Bene addition, Bene
Validation and CIB Neft Status
• IMPS Status API added to check the terminal status of final transactions
• IMPS and UPI, status and recon360 APIs are integrated into composite status
• Standalone status and imps recon API is removed
• Change done to IMPS status API with response starting with {"ImpsResponse":
Original Text:
• ICICI to ICICI fund transfer (IFT fund transfer) – Composite status API shows the final
response
• RGS transaction- Composite status API to be used for checking debit at account
level and retrieving UTR number in case of pending transaction.
• RGS Incremental status- Incremental API to be used for final NEFT response
Modified Text:
Table of Contents
NEFT transaction processing essentially takes place in two steps – a) There is a debit in to
remitter account first, b) Followed by transaction getting submitted to RBI for processing with
the time lag.
For NEFT status enquiry there are two sets of APIs available from ICICI bank given below as –
3) NEFT debit confirmation API – Provides the status of the debit in remitter a/c
4) NEFT credit confirmation API – Provides the status of the credit in beneficiary a/c
Status Enquiry –
For the amount transferred within ICICI bank the remitter needs to only use the first API ie. Debit
confirmation API.
The remitter needs to fire this API and if the response received in status field is “SUCCESS” in that
case the transaction can be marked as successfully processed.
For the status received as failure the same can be marked as failed and that particular transaction
can be re-initiated. For any other status remitter should recheck the status after 2 hours. This re-
check is required to be done only once. In case the status does not change to a definite success
or failure, in that case no further action is possible and this transaction is to be marked as
‘pending’.
All pending transactions are to be reconciled with the remitter bank statement to ascertain the
final status of the transaction. In case of no respective debit is found the transaction can be marked
a failed & fresh transaction can be re-initiated. In case the debit is present in the account the
transaction can be marked as successful.
Additionally, this API can also be utilized to fetch the UTR number for the transaction in case the
same is not received with initial
4. The remitter needs to fire the first API (Debit) and if the response received in status field is
“SUCCESS” only and only in that case the remitter should proceed to step 2 listed below.
For the status received as failure the same can be marked as failed and that particular
transaction can be re-initiated. For any other status remitter should recheck the status after 2
hours. This re-check is required to be done only once. In case the status does not change to
a definite success or failure, in that case no further action is possible and this transaction is to
be marked as ‘pending’.
All pending transactions are to be reconciled with the remitter bank statement to ascertain the
final status of the transaction. In case of no respective debit is found the transaction can be
marked a failed & fresh transaction can be re-initiated. In case the debit is present in the
account then the remitter can proceed to step 2.
5. Under step 2, the remitter should invoke the second API (Credit API) with the requisite
request packet as documented in API document. Once the status is successfully received as
“amount credited to beneficiary“ transaction can be marked as successful.
Table of Contents
6. It is possible that in some scenarios the status is received as “posted to RBI”. This status
is provided for the transaction which the beneficiary bank has not provided the ultimate status.
In such a scenario RBI has provisioned for 72 hrs for the beneficiary bank to update the final
status of the transaction. However, if the status does not change post 72 hrs the remitter can
mark these transactions as successful.
Neft incremental API request packet parameter changed from “UTR” to UTRNUMBER”.
Expected status values updated in NEFT incremental API_output parameters
{
"success":false,
"errorCode":"997",
"description":"Note : Initaite Status check after Some time"
}
Overall change in the format of the document to improve the readability of the same
Addition of payee-mcc in UPI request
Addition of character limit for all request and response packet
Incorporation of few of the common queries in the document
Modified the description of request packets for merchants
Table of Contents