FirstCentral Credit Bureau Nigeria REST Data Submission Web Service API Version5 (1)
FirstCentral Credit Bureau Nigeria REST Data Submission Web Service API Version5 (1)
1
Data Submission Integration Documentation
Table of Content
1. Introduction
2. Consumer Record Header
3. Commercial Record Header
4. Consumer Dud Cheque Header
5. Commercial Dud Cheque Header
6. Update JSON Structure Template
7. Record Encryption
8. Login Process
9. Uploading record with endpoint API
2
Introduction
Consumer Record Header is voluminous demography and credit record required for daily, weekly and monthly
data submission. The purpose of Data Submission is to meet real-time credit record update monthly.
4
REPAYMENTFREQUENCY Yes Yes string
LASTPAYMENTDATE Yes Yes Date
LASTPAYMENTAMOUNT Yes Yes Numeric
MATURITYDATE Yes Yes Date
INCOME No No None
INCOMEFREQUENCY No No None
OWNERTENANT No No None
NUMBEROFPARTICIPANTSINJOINTLOAN No No None
DEPENDANTS No No None
LOANCLASSIFICATION Yes Yes string
LEGALCHALLENGESTATUS Yes Yes string
LITIGATIONDATE Conditional Conditional Date
CONSENTSTATUS Yes Yes string
LOANSECURITYSTATUS Yes Yes string
COLLATERALTYPE Conditional Conditional string
COLLATERALDETAILS Conditional Conditional string
PREVIOUSACCOUNTNUMBER No No Numeric
PREVIOUSNAME No No string
PREVIOUSCUSTOMERID No No string
PREVIOUSBRANCHCODE No No string
CUSTOMERSACCOUNTNUMBER Yes Yes string
GUARANTEESTATUSOFLOAN Yes Yes string
TYPEOFGUARANTEE Conditional Conditional string
NAMEOFCORPORATEGUARANTOR Conditional Conditional string
BIZIDNUMBEROFCORPORATEGUARANTOR Conditional Conditional string
INDIVIDUALGUARANTORSURNAME Conditional Conditional string
INDIVIDUALGUARANTORFIRSTNAME Conditional Conditional string
INDIVIDUALGUARNTORMIDDLENAME No No string
GUARANTORDATEOFBIRTHINCORPORATION Yes Yes Date
GUARANTORGENDER Conditional Conditional string
GUARANTORNATIONALIDNUMBER No No string
GUARNATORINTLPASSPORTNUMBER No No string
GUARANTORDRIVERSLICENCENUMBER No No string
GUARANTORBVN Yes Yes Numeric
GUARANTOROTHERID No No string
GUARANTORPRIMARYADDRESSLINE1 Yes Yes string
GUARANTORPRIMARYADDRESSLINE2 Yes Yes string
GUARANTORPRIMARYADDRESSCITYLGA No No string
GUARANTORPRIMARYADDRESSSTATE Yes Yes string
GUARANTORPRIMARYADDRESSCOUNTRY Yes Yes string
GUARANTORPRIMARYPHONENUMBER Yes Yes Numeric
GUARANTOREMAIL No No string
5
Consumer Dud Cheque Record Header
Table Header Mandatory Required DataType
CUSTOMERID Yes Yes string
BRANCHCODE Yes Yes string
SURNAME Yes Yes string
FIRSTNAME Yes Yes string
MIDDLENAME No No string
DATEOFBIRTH Yes Yes Date
NATIONALIDENTITYNUMBER No No string
DRIVERSLICENSENUMBER No No string
BVNNUMBER Yes Yes string
PASSPORTNUMBER No No string
OTHERID No No string
GENDER Yes Yes string
NATIONALITY Yes Yes string
MARITALSTATUS Yes Yes string
MOBILENUMBER Yes Yes string
PRIMARYADDRESSLINE1 Yes Yes string
PRIMARYADDRESSLINE2 Yes Yes string
PRIMARYADDRESSCITY Yes Yes string
PRIMARYADDRESSSTATE Yes Yes string
PRIMARYADDRESSCOUNTRY Yes Yes string
EMPLOYMENTSTATUS Yes Yes string
OCCUPATION Yes Yes string
BUSINESSCATEGORY Yes Yes string
BUSINESSSECTOR Yes Yes string
BORROWERTYPE Yes Yes string
TAXID No No string
PICTUREFILEPATH No No string
EMAILADDRESS No No string
EMPLOYERNAME No No string
EMPLOYERADDRESSLINE1 No No string
EMPLOYERADDRESSLINE2 No No string
EMPLOYERCITY No No string
EMPLOYERSTATE No No string
EMPLOYERCOUNTRY No No string
TITLE No No string
PLACEOFBIRTH No No string
WORKTELEPHONE No No string
HOMETELEPHONE No No string
SECONDARYADDRESSLINE1 No No string
SECONDARYADDRESSLINE2 No No string
SECONDARYADDRESSCITYLGA Conditional Conditional string
6
SECONDARYADDRESSSTATE Conditional Conditional string
SECONDARYADDRESSCOUNTRY Conditional Conditional string
SPOUSESURNAME Conditional Conditional string
SPOUSEFIRSTNAME Conditional Conditional string
SPOUSEMIDDLENAME No No string
ACCOUNTNUMBER Yes Yes string
DATEACCOUNTOPENED Yes Yes Date
CHEQUENUMBER Yes Yes string
DATECHEQUEISSUED Yes Yes Date
DATECHEQUEBOUNCED Yes Yes Date
MICRNUMBER Yes Yes string
SORTCODE No No int
AMOUNTREJECTED Yes Yes double
PAYEE No No string
ISSUERNUMBER Yes Yes int
ISSUINGBANK Yes Yes string
TRANSACTIONID Yes Yes int
REASONFORBOUNCEDTRANSACTION Yes Yes string
CURRENCY Yes Yes string
HOMETELEPHONENUMBER Yes Yes string
CELLULARTELEPHONENUMBER No No string
WORKTELEPHONENUMBER No No string
FREQUENCY Yes Yes int
SETTLED No No string
SETTLEMENTDATE No No Date
7
BUSINESSOFFICEADDRESSSTATE Yes Yes string
BUSINESSOFFICEADDRESSCOUNTRY Yes Yes string
BUSINESSOFFICEADDRESSPOSTCODE No No None
EMAILADDRESS No No string
SECONDARYADDRESSLINE1 No No string
SECONDARYADDRESSLINE2 No No string
SECONDARYADDRESSCITYLGA No No string
SECONDARYADDRESSSTATE No No string
SECONDARYADDRESSCOUNTRY No No string
SECONDARYADDRESSPOSTCODE No No None
TAXID No No string
PRIMARYPHONENUMBER No No string
SECONDARYPHONENUMBER No No string
ACCOUNTNUMBER Yes Yes string
ACCOUNTSTATUS Yes Yes string
ACCOUNTSTATUSDATE Yes Yes Date
LOANEFFECTIVEDATE Yes Yes Date
DEFEREDPAYMENTDATE No No None
CREDITLIMIT Yes Yes Numeric
AVAILEDLIMIT Yes Yes Numeric
OUTSTANDINGBALANCE Yes Yes Numeric
CURRENTBALANCEDEBITIND No No None
INSTALMENTAMOUNT No No Numeric
CURRENCY Yes Yes string
DAYSINARREARS Yes Yes Numeric
OVERDUEAMOUNT Yes Yes Numeric
FACILITYTYPE Yes Yes string
FACILITYTENOR Yes Yes string
REPAYMENTFREQUENCY Yes Yes string
LASTPAYMENTDATE Yes Yes Date
LASTPAYMENTAMOUNT Yes Yes Numeric
MATURITYDATE Yes Yes Date
LOANCLASSIFICATION Yes Yes string
LEGALCHALLENGESTATUS Yes Yes string
LITIGATIONDATE Conditional Conditional Date
CONSENTSTATUS Yes Yes string
LOANSECURITYSTATUS Yes Yes string
COLLATERALTYPE Conditional Conditional string
COLLATERALDETAILS Conditional Conditional string
PREVIOUSACCOUNTNUMBER No No Numeric
PREVIOUSNAME No No string
PREVIOUSCUSTOMERID No No string
PREVIOUSBRANCHCODE No No string
8
NUMBEROFDIRECTORS NULL NULL NULL
PRINCIPALOFFICER1SURNAME Yes Yes string
PRINCIPALOFFICER1FIRSTNAME Yes Yes string
PRINCIPALOFFICER1MIDDLENAME No No string
PRINCIPALOFFICER1DATEOFBIRTH Yes Yes Date
PRINCIPALOFFICER1GENDER Yes Yes string
PRINCIPALOFFICER1PRIMARYADDRESSLINE1 Yes Yes string
PRINCIPALOFFICER1PRIMARYADDRESSLINE2 No No string
PRINCIPALOFFICER1CITY Yes Yes string
PRINCIPALOFFICER1STATE Yes Yes string
PRINCIPALOFFICER1COUNTRY Yes Yes string
PRINCIPALOFFICER1NATIONALID No No string
PRINCIPALOFFICER1DRIVERSLICENSENUMBER No No string
PRINCIPALOFFICER1BVNNUMBER Yes Yes Numeric
PRINCIPALOFFICER1PASSPORTNUMBER Yes Yes string
PRINCIPALOFFICER1OTHERIDNUMBER NULL NULL NULL
PRINCIPALOFFICER1PHONENUMBER Yes Yes string
PRINCIPALOFFICER1EMAILADDRESS No No string
PRINCIPALOFFICER1POSITIONINBUSINESS Yes Yes string
PRINCIPALOFFICER2SURNAME Conditional Conditional string
PRINCIPALOFFICER2FIRSTNAME Conditional Conditional string
PRINCIPALOFFICER2MIDDLENAME Conditional Conditional string
PRINCIPALOFFICER2DATEOFBIRTH Conditional Conditional Date
PRINCIPALOFFICER2GENDER Conditional Conditional string
PRINCIPALOFFICER2PRIMARYADDRESSLINE1 Conditional Conditional string
PRINCIPALOFFICER2PRIMARYADDRESSLINE2 Conditional Conditional string
PRINCIPALOFFICER2CITY Conditional Conditional string
PRINCIPALOFFICER2STATE Conditional Conditional string
PRINCIPALOFFICER2COUNTRY Conditional Conditional string
PRINCIPALOFFICER2NATIONALID Conditional Conditional string
PRINCIPALOFFICER2DRIVERSLISCENCENUMBER Conditional Conditional string
PRINCIPALOFFICER2BVNNUMBER Conditional Conditional Numeric
PRINCIPALOFFICER2PASSPORTNUMBER Conditional Conditional string
PRINCIPALOFFICER2OTHERIDNUMBER NULL NULL NULL
PRINCIPALOFFICER2PHONENUMBER Conditional Conditional Numeric
PRINCIPALOFFICER2EMAILADDRESS Conditional Conditional string
PRINCIPALOFFICER2POSITIONINBUSINESS Conditional Conditional string
9
Commercial Dud Cheque Record Header
Table Header Mandatory Required DataType
BUSINESSREGISTRATIONNUMBER Yes Yes string
BUSINESSNAME Yes Yes string
BUSINESSCATEGORY NO NO string
BUSINESSSECTOR NO NO string
DATEOFINCORPORATION No No Date
CUSTOMERID Yes Yes string
CUSTOMERBRANCHCODE Yes Yes string
BUSINESSOFFICEADDRESSLINE1 Yes Yes string
BUSINESSOFFICEADDRESSLINE2 Yes Yes string
BUSINESSOFFICEADDRESSCITYLGA Yes Yes string
BUSINESSOFFICEADDRESSSTATE Yes Yes string
BUSINESSOFFICEADDRESSCOUNTRY Yes Yes string
PRIMARYPHONENUMBER Yes Yes Numeric
EMAILADDRESS NO NO string
SECONDARYADDRESSLINE1 No No string
SECONDARYADDRESSLINE2 NO NO string
SECONDARYADDRESSCITYLGA NO NO string
SECONDARYADDRESSSTATE No No string
SECONDARYADDRESSCOUNTRY No No string
TAXID Yes Yes Numeric
SECONDARYPHONENUMBER No No Numeric
ACCOUNTNUMBER Yes Yes string
DATEACCOUNTOPENED Yes Yes Date
CHEQUENUMBER Yes Yes string
DATECHEQUEISSUED Yes Yes Date
DATECHEQUEBOUNCED Yes Yes Date
MICRNUMBER Yes Yes string
SORTCODE No No Numeric
AMOUNTREJECTED Yes Yes Numeric
PAYEE No No string
ISSUERNUMBER Yes Yes Numeric
ISSUINGBANK Yes Yes string
TRANSACTIONID Yes Yes Numeric
REASONFORBOUNCEDTRANSACTION Yes Yes string
CURRENCY Yes Yes string
HOMETELEPHONENUMBER Yes Yes Numeric
CELLULARTELEPHONENUMBER No No Numeric
WORKTELEPHONENUMBER No No Numeric
FREQUENCY Yes Yes Numeric
SETTLED No No string
SETTLEMENTDATE NO NO Date
10
JSON Structure for Consumer Record
[{
"CUSTOMERID":"43231345",
"BRANCHCODE":"12",
"SURNAME":"Mayowa",
"FIRSTNAME":"CHIKAODIRI",
"MIDDLENAME":"Husman",
"DATEOFBIRTH":"19780520",
"NATIONALIDENTITYNUMBER":"",
"DRIVERSLICENSENUMBER":"",
"BVNNUMBER":"12345678901",
"PASSPORTNUMBER":"",
"PENCOMIDNUMBER":"",
"OTHERID":"",
"GENDER":"Female",
"NATIONALITY":"Nigeria",
"MARITALSTATUS":"Married",
"MOBILENUMBER":"",
"PRIMARYADDRESSLINE1":"13 AWOLOWO ROAD IKEJA",
"PRIMARYADDRESSLINE2":"PO BOX 321 IKEJA",
"PRIMARYADDRESSCITY":"LAGOS",
"PRIMARYADDRESSSTATE":"",
"PRIMARYADDRESSCOUNTRY":"",
"PRIMARYADDRESSPOSTCODE":"",
"EMPLOYMENTSTATUS":"Self Employed",
"OCCUPATION":"OTHERS",
"BUSINESSCATEGORY":"MEDI",
"BUSINESSSECTOR":"",
"BORROWERTYPE":"Individual",
"TAXID":"",
"PICTUREFILEPATH":"",
11
"EMAILADDRESS":"",
"EMPLOYERNAME":"",
"EMPLOYERADDRESSLINE1":"",
"EMPLOYERADDRESSLINE2":"",
"EMPLOYERCITY":"",
"EMPLOYERSTATE":"",
"EMPLOYERCOUNTRY":"",
"TITLE":"",
"PLACEOFBIRTH":"",
"WORKTELEPHONE":"",
"HOMETELEPHONE":"",
"SECONDARYADDRESSLINE1":"",
"SECONDARYADDRESSLINE2":"",
"SECONDARYADDRESSCITYLGA":"",
"SECONDARYADDRESSSTATE":"",
"SECONDARYADDRESSCOUNTRY":"",
"SECONDARYADDRESSPOSTCODE":"",
"SPOUSESURNAME":"",
"SPOUSEFIRSTNAME":"",
"SPOUSEMIDDLENAME":"",
"ACCOUNTNUMBER":"212345680",
"ACCOUNTSTATUS":"1",
"ACCOUNTSTATUSDATE":"20210131",
"LOANEFFECTIVEDATE":"19110401",
"DEFEREDPAYMENTDATE":"",
"CREDITLIMIT":"0",
"AVAILEDLIMIT":"0",
"OUTSTANDINGBALANCE":"2578.67",
"CURRENTBALANCEDEBITIND":"",
"INSTALMENTAMOUNT":"0",
"CURRENCY":"NGN",
12
"DAYSINARREARS":"569",
"OVERDUEAMOUNT":"2578.67",
"FACILITYTYPE":"Personal Overdraft",
"FACILITYTENOR":"0",
"FACILITYOWNERSHIPTYPE":"",
"REPAYMENTFREQUENCY":"Monthly",
"LASTPAYMENTDATE":"20210131",
"LASTPAYMENTAMOUNT":"0",
"MATURITYDATE":"20210228",
"INCOME":"",
"INCOMEFREQUENCY":"",
"OWNERTENANT":"",
"NUMBEROFPARTICIPANTSINJOINTLOAN":"",
"DEPENDANTS":"",
"LOANCLASSIFICATION":"Lost",
"LEGALCHALLENGESTATUS":"NO",
"LITIGATIONDATE":"",
"CONSENTSTATUS":"YES",
"LOANSECURITYSTATUS":"NO",
"COLLATERALTYPE":"",
"COLLATERALDETAILS":"",
"PREVIOUSACCOUNTNUMBER":"",
"PREVIOUSNAME":"",
"PREVIOUSCUSTOMERID":"",
"PREVIOUSBRANCHCODE":"",
"CUSTOMERSACCOUNTNUMBER":"",
"GUARANTEESTATUSOFLOAN":"",
"TYPEOFGUARANTEE":"",
"NAMEOFCORPORATEGUARANTOR":"",
"BIZIDNUMBEROFCORPORATEGUARANTOR":"",
"INDIVIDUALGUARANTORSURNAME":"",
13
"INDIVIDUALGUARANTORFIRSTNAME":"",
"INDIVIDUALGUARNTORMIDDLENAME":"",
"GUARANTORDATEOFBIRTHINCORPORATION":"",
"GUARANTORGENDER":"",
"GUARANTORNATIONALIDNUMBER":"",
"GUARNATORINTLPASSPORTNUMBER":"",
"GUARANTORDRIVERSLICENCENUMBER":"",
"GUARANTORBVN":"",
"GUARANTOROTHERID":"",
"GUARANTORPRIMARYADDRESSLINE1":"",
"GUARANTORPRIMARYADDRESSLINE2":"",
"GUARANTORPRIMARYADDRESSCITYLGA":"",
"GUARANTORPRIMARYADDRESSSTATE":"",
"GUARANTORPRIMARYADDRESSCOUNTRY":"",
"GUARANTORPRIMARYPHONENUMBER":"",
"GUARANTOREMAIL":""
}]
14
"CUSTOMERBRANCHCODE":"12",
"BUSINESSOFFICEADDRESSLINE1":"3RD Olukehinde TOTAL FILLING STATION Shomolu",
"BUSINESSOFFICEADDRESSLINE2":"LAGOS",
"BUSINESSOFFICEADDRESSCITYLGA":"LAGOS",
"BUSINESSOFFICEADDRESSSTATE":"",
"BUSINESSOFFICEADDRESSCOUNTRY":"Nigeria",
"BUSINESSOFFICEADDRESSPOSTCODE":"",
"EMAILADDRESS":"",
"SECONDARYADDRESSLINE1":"",
"SECONDARYADDRESSLINE2":"",
"SECONDARYADDRESSCITYLGA":"",
"SECONDARYADDRESSSTATE":"",
"SECONDARYADDRESSCOUNTRY":"",
"SECONDARYADDRESSPOSTCODE":"",
"TAXID":"",
"PRIMARYPHONENUMBER":"",
"SECONDARYPHONENUMBER":"",
"ACCOUNTNUMBER":"2.12308E+11",
"ACCOUNTSTATUS":"Open",
"ACCOUNTSTATUSDATE":"20210131",
"LOANEFFECTIVEDATE":"19140201",
"DEFEREDPAYMENTDATE":"",
"CREDITLIMIT":"0",
"AVAILEDLIMIT":"0",
"OUTSTANDINGBALANCE":"605.99",
"CURRENTBALANCEDEBITIND":"",
"INSTALMENTAMOUNT":"0",
"CURRENCY":"NGN",
"DAYSINARREARS":"343",
"OVERDUEAMOUNT":"605.99",
"FACILITYTYPE":"Commercial Overdraft",
15
"FACILITYTENOR":"0",
"REPAYMENTFREQUENCY":"Monthly",
"LASTPAYMENTDATE":"20190713",
"LASTPAYMENTAMOUNT":"234.28",
"MATURITYDATE":"20210228",
"LOANCLASSIFICATION":"Performing",
"LEGALCHALLENGESTATUS":"NO",
"LITIGATIONDATE":"",
"CONSENTSTATUS":"YES",
"LOANSECURITYSTATUS":"NO",
"COLLATERALTYPE":"",
"COLLATERALDETAILS":"",
"PREVIOUSACCOUNTNUMBER":"",
"PREVIOUSNAME":"",
"PREVIOUSCUSTOMERID":"",
"PREVIOUSBRANCHCODE":"",
"NUMBEROFDIRECTORS":"",
"PRINCIPALOFFICER1SURNAME":"",
"PRINCIPALOFFICER1FIRSTNAME":"",
"PRINCIPALOFFICER1MIDDLENAME":"",
"PRINCIPALOFFICER1DATEOFBIRTH":"",
"PRINCIPALOFFICER1GENDER":"",
"PRINCIPALOFFICER1PRIMARYADDRESSLINE1":"",
"PRINCIPALOFFICER1PRIMARYADDRESSLINE2":"",
"PRINCIPALOFFICER1CITY":"",
"PRINCIPALOFFICER1STATE":"",
"PRINCIPALOFFICER1COUNTRY":"",
"PRINCIPALOFFICER1NATIONALID":"",
"PRINCIPALOFFICER1DRIVERSLICENSENUMBER":"",
"PRINCIPALOFFICER1BVNNUMBER":"",
"PRINCIPALOFFICER1PASSPORTNUMBER":"",
16
"PRINCIPALOFFICER1OTHERIDNUMBER":"",
"PRINCIPALOFFICER1PHONENUMBER":"",
"PRINCIPALOFFICER1EMAILADDRESS":"",
"PRINCIPALOFFICER1POSITIONINBUSINESS":"",
"PRINCIPALOFFICER2SURNAME":"",
"PRINCIPALOFFICER2FIRSTNAME":"",
"PRINCIPALOFFICER2MIDDLENAME":"",
"PRINCIPALOFFICER2DATEOFBIRTH":"",
"PRINCIPALOFFICER2GENDER":"",
"PRINCIPALOFFICER2PRIMARYADDRESSLINE1":"",
"PRINCIPALOFFICER2PRIMARYADDRESSLINE2":"",
"PRINCIPALOFFICER2CITY":"",
"PRINCIPALOFFICER2STATE":"",
"PRINCIPALOFFICER2COUNTRY":"",
"PRINCIPALOFFICER2NATIONALID":"",
"PRINCIPALOFFICER2DRIVERSLISCENCENUMBER":"",
"PRINCIPALOFFICER2BVNNUMBER":"",
"PRINCIPALOFFICER2PASSPORTNUMBER":"",
"PRINCIPALOFFICER2OTHERIDNUMBER":"",
"PRINCIPALOFFICER2PHONENUMBER":"",
"PRINCIPALOFFICER2EMAILADDRESS":"",
"PRINCIPALOFFICER2POSITIONINBUSINESS ":""
}]
17
Record Encryption
AES encryption model is required to pass update record over the API. This method provide us with system enhanced with
end-to-end encryption for data exchange security. Below is a C-Sharp C# code for ASE encryption.
encryptor.Mode = CipherMode.CBC;
// Instantiate a new CryptoStream object to process the data and write it to the
// memory stream
CryptoStream cryptoStream = new CryptoStream(memoryStream, aesEncryptor,
CryptoStreamMode.Write);
18
Encryption Usage
string DataSubmissionRecord =
"[{'CUSTOMERID':'43231345','BRANCHCODE':'12','SURNAME':'Mayowa','FIRSTNAME':'CHIKAODIRI','MIDDLENAME':
'Husman','DATEOFBIRTH':'19780520','NATIONALIDENTITYNUMBER':'','DRIVERSLICENSENUMBER':'','BVNNUMBER':'1
2345678901','PASSPORTNUMBER':'','PENCOMIDNUMBER':'','OTHERID':'','GENDER':'Female','NATIONALITY':'Nige
ria','MARITALSTATUS':'Married','MOBILENUMBER':'','PRIMARYADDRESSLINE1':'13 AWOLOWO ROAD
IKEJA','PRIMARYADDRESSLINE2':'PO BOX 321
IKEJA','PRIMARYADDRESSCITY':'LAGOS','PRIMARYADDRESSSTATE':'','PRIMARYADDRESSCOUNTRY':'','PRIMARYADDRES
SPOSTCODE':'','EMPLOYMENTSTATUS':'Self
Employed','OCCUPATION':'OTHERS','BUSINESSCATEGORY':'MEDI','BUSINESSSECTOR':'','BORROWERTYPE':'Individu
al','TAXID':'','PICTUREFILEPATH':'','EMAILADDRESS':'','EMPLOYERNAME':'','EMPLOYERADDRESSLINE1':'','EMP
LOYERADDRESSLINE2':'','EMPLOYERCITY':'','EMPLOYERSTATE':'','EMPLOYERCOUNTRY':'','TITLE':'','PLACEOFBIR
TH':'','WORKTELEPHONE':'','HOMETELEPHONE':'','SECONDARYADDRESSLINE1':'','SECONDARYADDRESSLINE2':'','SE
CONDARYADDRESSCITYLGA':'','SECONDARYADDRESSSTATE':'','SECONDARYADDRESSCOUNTRY':'','SECONDARYADDRESSPOS
TCODE':'','SPOUSESURNAME':'','SPOUSEFIRSTNAME':'','SPOUSEMIDDLENAME':'','ACCOUNTNUMBER':'212345680','A
CCOUNTSTATUS':'1','ACCOUNTSTATUSDATE':'20210131','LOANEFFECTIVEDATE':'19110401','DEFEREDPAYMENTDATE':'
','CREDITLIMIT':'0','AVAILEDLIMIT':'0','OUTSTANDINGBALANCE':'2578.67','CURRENTBALANCEDEBITIND':'','INS
TALMENTAMOUNT':'0','CURRENCY':'NGN','DAYSINARREARS':'569','OVERDUEAMOUNT':'2578.67','FACILITYTYPE':'Pe
rsonal
Overdraft','FACILITYTENOR':'0','FACILITYOWNERSHIPTYPE':'','REPAYMENTFREQUENCY':'Monthly','LASTPAYMENTD
ATE':'20210131','LASTPAYMENTAMOUNT':'0','MATURITYDATE':'20210228','INCOME':'','INCOMEFREQUENCY':'','OW
NERTENANT':'','NUMBEROFPARTICIPANTSINJOINTLOAN':'','DEPENDANTS':'','LOANCLASSIFICATION':'Lost','LEGALC
HALLENGESTATUS':'NO','LITIGATIONDATE':'','CONSENTSTATUS':'YES','LOANSECURITYSTATUS':'NO','COLLATERALTY
PE':'','COLLATERALDETAILS':'','PREVIOUSACCOUNTNUMBER':'','PREVIOUSNAME':'','PREVIOUSCUSTOMERID':'','PR
EVIOUSBRANCHCODE':'','CUSTOMERSACCOUNTNUMBER':'','GUARANTEESTATUSOFLOAN':'','TYPEOFGUARANTEE':'','NAME
OFCORPORATEGUARANTOR':'','BIZIDNUMBEROFCORPORATEGUARANTOR':'','INDIVIDUALGUARANTORSURNAME':'','INDIVID
UALGUARANTORFIRSTNAME':'','INDIVIDUALGUARNTORMIDDLENAME':'','GUARANTORDATEOFBIRTHINCORPORATION':'','GU
ARANTORGENDER':'','GUARANTORNATIONALIDNUMBER':'','GUARNATORINTLPASSPORTNUMBER':'','GUARANTORDRIVERSLIC
ENCENUMBER':'','GUARANTORBVN':'','GUARANTOROTHERID':'','GUARANTORPRIMARYADDRESSLINE1':'','GUARANTORPRI
MARYADDRESSLINE2':'','GUARANTORPRIMARYADDRESSCITYLGA':'','GUARANTORPRIMARYADDRESSSTATE':'','GUARANTORP
RIMARYADDRESSCOUNTRY':'','GUARANTORPRIMARYPHONENUMBER':'','GUARANTOREMAIL':''}]";
string secreteKey = "3sc3RLrpd17";
// Create sha256 hash
SHA256 mySHA256 = SHA256Managed.Create();
byte[] key = mySHA256.ComputeHash(Encoding.ASCII.GetBytes(secreteKey));
// Create secret IV
byte[] iv = new byte[16] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0 };
The Data submission in JSON is gotten from your data warehouse, this is passed to EncryptString function alongside with
the secret keys.
19
Login
The login is required to submit a batch record, the update will produce DataTicket which will be requested for adding
your encrypted record.
Login Request
Header Content
Content-Type: application/json; charset=utf-8
Content-Length: length
Data
{"UserName":"YourUersname","Password":" YourPassword"}
Response
[
{
"DataTicket": "E79878A174FCDC1AD50ACA9E3CDA21876C513107B9A2BE2FC479EFF3B2665E7E3D6AA0FC0AE6
30A154BA9F02C13205BA2B4C2BCD73C1A4FA681B645B4D5D2E443FD1E86B13383D2D857A05DEC7581EEECCE94A521EB4B2C
E8666A66B22B5471A"
}
]
20
Consumer Data
Header Content
Content-Type: application/json; charset=utf-8
Content-Length: length
Data
{"DataTicket": "A96F0FF8F3A138D598624381B6D67F1FA3AE67A365971BC6F1BC388AD1751031FD330EC2D101991DEE6
4D1777A729D0E440452559E1007EA1A10A07BFF047463AC72BDD76F152BBF27157137E36E08707DA95CD69AE66C79D33361
A8D9DB3690","EncryptedUpdateRecord": "string","BatchID":"string"}
21
Application of Encryption on JSON data
JSON Data expected to be submitted
BatchID
BatchID is incremental if the total record is greater than 500. Submit Consumer Monthly Data endpoints will take 500
records at a time. For every 500 Data Submission passed after first 500 Data Submission process, BatchID will be passed
as incremental value.
string DataSubmissionRecord =
"[{'CUSTOMERID':'43231345','BRANCHCODE':'12','SURNAME':'Mayowa','FIRSTNAME':'CHIKAODIRI','MIDDLENAME':
'Husman','DATEOFBIRTH':'19780520','NATIONALIDENTITYNUMBER':'','DRIVERSLICENSENUMBER':'','BVNNUMBER':'1
2345678901','PASSPORTNUMBER':'','PENCOMIDNUMBER':'','OTHERID':'','GENDER':'Female','NATIONALITY':'Nige
ria','MARITALSTATUS':'Married','MOBILENUMBER':'','PRIMARYADDRESSLINE1':'13 AWOLOWO ROAD
IKEJA','PRIMARYADDRESSLINE2':'PO BOX 321
IKEJA','PRIMARYADDRESSCITY':'LAGOS','PRIMARYADDRESSSTATE':'','PRIMARYADDRESSCOUNTRY':'','PRIMARYADDRES
SPOSTCODE':'','EMPLOYMENTSTATUS':'Self
Employed','OCCUPATION':'OTHERS','BUSINESSCATEGORY':'MEDI','BUSINESSSECTOR':'','BORROWERTYPE':'Individu
al','TAXID':'','PICTUREFILEPATH':'','EMAILADDRESS':'','EMPLOYERNAME':'','EMPLOYERADDRESSLINE1':'','EMP
LOYERADDRESSLINE2':'','EMPLOYERCITY':'','EMPLOYERSTATE':'','EMPLOYERCOUNTRY':'','TITLE':'','PLACEOFBIR
TH':'','WORKTELEPHONE':'','HOMETELEPHONE':'','SECONDARYADDRESSLINE1':'','SECONDARYADDRESSLINE2':'','SE
CONDARYADDRESSCITYLGA':'','SECONDARYADDRESSSTATE':'','SECONDARYADDRESSCOUNTRY':'','SECONDARYADDRESSPOS
TCODE':'','SPOUSESURNAME':'','SPOUSEFIRSTNAME':'','SPOUSEMIDDLENAME':'','ACCOUNTNUMBER':'212345680','A
CCOUNTSTATUS':'1','ACCOUNTSTATUSDATE':'20210131','LOANEFFECTIVEDATE':'19110401','DEFEREDPAYMENTDATE':'
','CREDITLIMIT':'0','AVAILEDLIMIT':'0','OUTSTANDINGBALANCE':'2578.67','CURRENTBALANCEDEBITIND':'','INS
TALMENTAMOUNT':'0','CURRENCY':'NGN','DAYSINARREARS':'569','OVERDUEAMOUNT':'2578.67','FACILITYTYPE':'Pe
rsonal
Overdraft','FACILITYTENOR':'0','FACILITYOWNERSHIPTYPE':'','REPAYMENTFREQUENCY':'Monthly','LASTPAYMENTD
ATE':'20210131','LASTPAYMENTAMOUNT':'0','MATURITYDATE':'20210228','INCOME':'','INCOMEFREQUENCY':'','OW
NERTENANT':'','NUMBEROFPARTICIPANTSINJOINTLOAN':'','DEPENDANTS':'','LOANCLASSIFICATION':'Lost','LEGALC
HALLENGESTATUS':'NO','LITIGATIONDATE':'','CONSENTSTATUS':'YES','LOANSECURITYSTATUS':'NO','COLLATERALTY
PE':'','COLLATERALDETAILS':'','PREVIOUSACCOUNTNUMBER':'','PREVIOUSNAME':'','PREVIOUSCUSTOMERID':'','PR
EVIOUSBRANCHCODE':'','CUSTOMERSACCOUNTNUMBER':'','GUARANTEESTATUSOFLOAN':'','TYPEOFGUARANTEE':'','NAME
OFCORPORATEGUARANTOR':'','BIZIDNUMBEROFCORPORATEGUARANTOR':'','INDIVIDUALGUARANTORSURNAME':'','INDIVID
UALGUARANTORFIRSTNAME':'','INDIVIDUALGUARNTORMIDDLENAME':'','GUARANTORDATEOFBIRTHINCORPORATION':'','GU
ARANTORGENDER':'','GUARANTORNATIONALIDNUMBER':'','GUARNATORINTLPASSPORTNUMBER':'','GUARANTORDRIVERSLIC
ENCENUMBER':'','GUARANTORBVN':'','GUARANTOROTHERID':'','GUARANTORPRIMARYADDRESSLINE1':'','GUARANTORPRI
MARYADDRESSLINE2':'','GUARANTORPRIMARYADDRESSCITYLGA':'','GUARANTORPRIMARYADDRESSSTATE':'','GUARANTORP
RIMARYADDRESSCOUNTRY':'','GUARANTORPRIMARYPHONENUMBER':'','GUARANTOREMAIL':''}]";string secreteKey =
"3sc3RLrpd17";
// Create sha256 hash
SHA256 mySHA256 = SHA256Managed.Create();
byte[] key = mySHA256.ComputeHash(Encoding.ASCII.GetBytes(secreteKey));
// Create secret IV
byte[] iv = new byte[16] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0 };
22
Output of the encrypted JSON Data
qSgpcalAi7csWfwmVdgfPcmaV+3hC+vsb2I86fESKu6xP4bcAxrdjJxsHJdKoXW5bLTvI2jpC4IdvIHjapN4XlhVpsZp4RUyYR1xPn
2UNNYAXes1pnzZEOaQ8kbKY+3nsrwYd1zlGDL/PsHwbhAX+1/WmVLTXGXJgHIS9CJ0eUOVSE/hBkqs2KEK4cixKP7EFy039yF
7zAZfsOSxKDrj9qUQ7QaaM406be0inFojFILhH7nfx4b8l2PcrkyxIaWvWNqj4khXVdJXOqeEiPIZQ8FTI1IZZAEE9OqwCRFl6u1Z
jB8rePZT3WrF2wTx6fqjnM3KU2sMuCClORSb+UbVKs3jfdm4OhaJDGzOcJEgR6rQPUSEfYO/YTvPlLltgPozIqrftIEREoB3gK0K
RDWRL9gzsVNiJKnnBWQJ0/snDxB5H0jRLYCE1EZQkelo/SQAglM1BPuCwTQwIVTpR2eKBA==
Header Content
Content-Type: application/json; charset=utf-8
Content-Length: length
Data
[{"DataTicket":"451E879844A5EE1715B30E5227F7C42A885B35D513D6F19835FAED4F9D5340864B5B50395
6FEF8E9AE4510E40AE29E9B4718DF683EE46C928GB65D36011C4C354BACB9EE885DA7D5C9BD2C8B647311433B
28DC88F1B4E8751783AA28278AD4AEF9C926EACDFFC676CA7681E68B50E92C52D997F87FD7EFA10FDC2A49C77
2791968EA05BB8278D654D45E06D5852884C7",
"EncryptedUpdateRecord":
"qSgpcalAi7csWfwmVdgfPcmaV+3hC+vsb2I86fESKu6xP4bcAxrdjJxsHJdKoXW5bLTvI2jpC4IdvIHjapN4XlhVpsZp4RUyYR1x
Pn2UNNYAXes1pnzZEOaQ8kbKY+3nsrwYd1zlGDL/PsHwbhAX+1/WmVLTXGXJgHIS9CJ0eUOVSE/hBkqs2KEK4cixKP7EFy0
39yF7zAZfsOSxKDrj9qUQ7QaaM406be0inFojFILhH7nfx4b8l2PcrkyxIaWvWNqj4khXVdJXOqeEiPIZQ8FTI1IZZAEE9OqwCR
Fl6u1ZjB8rePZT3WrF2wTx6fqjnM3KU2sMuCClORSb+UbVKs3jfdm4OhaJDGzOcJEgR6rQPUSEfYO/YTvPlLltgPozIqrftIEREo
B3gK0KRDWRL9gzsVNiJKnnBWQJ0/snDxB5H0jRLYCE1EZQkelo/SQAglM1BPuCwTQwIVTpR2eKBA==",
"BatchID":"1"}]
23
PHP Record Encryption
<?php
// How to encrypt and decrypt byte array using PHP As show on in C# encrypted code above
$plaintext =
"[{'CUSTOMERID':'43231345','BRANCHCODE':'12','SURNAME':'Mayowa','FIRSTNAME':'CHIKAODIRI','MIDDLENA
ME':'Husman','DATEOFBIRTH':'19780520','NATIONALIDENTITYNUMBER':'','DRIVERSLICENSENUMBER':'','BVNNU
MBER':'12345678901','PASSPORTNUMBER':'','PENCOMIDNUMBER':'','OTHERID':'','GENDER':'Female','NATION
ALITY':'Nigeria','MARITALSTATUS':'Married','MOBILENUMBER':'','PRIMARYADDRESSLINE1':'13 AWOLOWO
ROAD IKEJA','PRIMARYADDRESSLINE2':'PO BOX 321
IKEJA','PRIMARYADDRESSCITY':'LAGOS','PRIMARYADDRESSSTATE':'','PRIMARYADDRESSCOUNTRY':'','PRIMARYAD
DRESSPOSTCODE':'','EMPLOYMENTSTATUS':'Self
Employed','OCCUPATION':'OTHERS','BUSINESSCATEGORY':'MEDI','BUSINESSSECTOR':'','BORROWERTYPE':'Indi
vidual','TAXID':'','PICTUREFILEPATH':'','EMAILADDRESS':'','EMPLOYERNAME':'','EMPLOYERADDRESSLINE1'
:'','EMPLOYERADDRESSLINE2':'','EMPLOYERCITY':'','EMPLOYERSTATE':'','EMPLOYERCOUNTRY':'','TITLE':''
,'PLACEOFBIRTH':'','WORKTELEPHONE':'','HOMETELEPHONE':'','SECONDARYADDRESSLINE1':'','SECONDARYADDR
ESSLINE2':'','SECONDARYADDRESSCITYLGA':'','SECONDARYADDRESSSTATE':'','SECONDARYADDRESSCOUNTRY':'',
'SECONDARYADDRESSPOSTCODE':'','SPOUSESURNAME':'','SPOUSEFIRSTNAME':'','SPOUSEMIDDLENAME':'','ACCOU
NTNUMBER':'212345680','ACCOUNTSTATUS':'1','ACCOUNTSTATUSDATE':'20210131','LOANEFFECTIVEDATE':'1911
0401','DEFEREDPAYMENTDATE':'','CREDITLIMIT':'0','AVAILEDLIMIT':'0','OUTSTANDINGBALANCE':'2578.67',
'CURRENTBALANCEDEBITIND':'','INSTALMENTAMOUNT':'0','CURRENCY':'NGN','DAYSINARREARS':'569','OVERDUE
AMOUNT':'2578.67','FACILITYTYPE':'Personal
Overdraft','FACILITYTENOR':'0','FACILITYOWNERSHIPTYPE':'','REPAYMENTFREQUENCY':'Monthly','LASTPAYM
ENTDATE':'20210131','LASTPAYMENTAMOUNT':'0','MATURITYDATE':'20210228','INCOME':'','INCOMEFREQUENCY
':'','OWNERTENANT':'','NUMBEROFPARTICIPANTSINJOINTLOAN':'','DEPENDANTS':'','LOANCLASSIFICATION':'L
ost','LEGALCHALLENGESTATUS':'NO','LITIGATIONDATE':'','CONSENTSTATUS':'YES','LOANSECURITYSTATUS':'N
O','COLLATERALTYPE':'','COLLATERALDETAILS':'','PREVIOUSACCOUNTNUMBER':'','PREVIOUSNAME':'','PREVIO
USCUSTOMERID':'','PREVIOUSBRANCHCODE':'','CUSTOMERSACCOUNTNUMBER':'','GUARANTEESTATUSOFLOAN':'','T
YPEOFGUARANTEE':'','NAMEOFCORPORATEGUARANTOR':'','BIZIDNUMBEROFCORPORATEGUARANTOR':'','INDIVIDUALG
UARANTORSURNAME':'','INDIVIDUALGUARANTORFIRSTNAME':'','INDIVIDUALGUARNTORMIDDLENAME':'','GUARANTOR
DATEOFBIRTHINCORPORATION':'','GUARANTORGENDER':'','GUARANTORNATIONALIDNUMBER':'','GUARNATORINTLPAS
SPORTNUMBER':'','GUARANTORDRIVERSLICENCENUMBER':'','GUARANTORBVN':'','GUARANTOROTHERID':'','GUARAN
TORPRIMARYADDRESSLINE1':'','GUARANTORPRIMARYADDRESSLINE2':'','GUARANTORPRIMARYADDRESSCITYLGA':'','
GUARANTORPRIMARYADDRESSSTATE':'','GUARANTORPRIMARYADDRESSCOUNTRY':'','GUARANTORPRIMARYPHONENUMBER'
:'','GUARANTOREMAIL':''}]";
$password = '3sc3RLrpd17';
$method = 'aes-256-cbc';
$iv = chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) .
chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0);
// av3DYGLkwBsErphcyYp+imUW4QKs19hUnFyyYcXwURU=
echo $encrypted;
24
?>
PHP Record Decryption
<?php
$password = '3sc3RLrpd17';
$method = 'aes-256-cbc';
$iv = chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) .
chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0);
$encrypted
=”qSgpcalAi7csWfwmVdgfPcmaV+3hC+vsb2I86fESKu6xP4bcAxrdjJxsHJdKoXW5bLTvI2jpC4IdvIHjapN4XlhVpsZp4RU
yYR1xPn2UNNYAXes1pnzZEOaQ8kbKY+3nsrwYd1zlGDL/PsHwbhAX+1/WmVLTXGXJgHIS9CJ0eUOVSE/hBkqs2KEK4ci
xKP7EFy039yF7zAZfsOSxKDrj9qUQ7QaaM406be0inFojFILhH7nfx4b8l2PcrkyxIaWvWNqj4khXVdJXOqeEiPIZQ8FTI1IZ
ZAEE9OqwCRFl6u1ZjB8rePZT3WrF2wTx6fqjnM3KU2sMuCClORSb+UbVKs3jfdm4OhaJDGzOcJEgR6rQPUSEfYO/YTvPl
LltgPozIqrftIEREoB3gK0KRDWRL9gzsVNiJKnnBWQJ0/snDxB5H0jRLYCE1EZQkelo/SQAglM1BPuCwTQwIVTpR2eKBA=
=”;
?>
25
JAVA Record Encryption
try {
SecureRandom random = new SecureRandom();
byte[] salt = new byte[32];
random.nextBytes(salt);
//Define Initialization Vector
byte[] ivBytes ={ (byte)0x0, (byte)0x0,(byte) 0x0, (byte)0x0,(byte) 0x0,(byte)
0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0, (byte) 0x0,(byte)
0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0 };
//random.nextBytes(ivBytes);
IvParameterSpec iv = new IvParameterSpec(ivBytes);
USAGE
String SECRET_KEY = "3sc3RLrpd17";
String enval= "[{""Username"": ""1234""}]";
String EncryptedRecord = encrypt(enval); //dyUW7VzcQtKRYORpTJAf2VUi5UvgPhdU3hTo/jVoSiM=
[{ "DataTicket":
"D184DB5B06F9CA39F750271C2E459FE21F7E11EB2BCC10AA56AA2FFA66597E405B9D5F191F020C91F4A107993CE
2CBA649FC280643F80C19863328B50E2D0F5C98A6E8E742D486B8F408EF46068202B8CCF92AC1692E0440257096D
2058EC060",
"EncryptedUpdateRecord": EncryptedRecord,
"BatchID": "1" }]
26
File Upload API
Daily file submission, Weekly file submission and Monthly file submission.
This Application Programming Interface allows you to send your request in JSON Object and Returns JSON
Array to you View API URL.
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/Login
1. Login
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/Login
Request: {"UserName":"YourUsername","Password":"YourPassword"}
Response: [ { "DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CA xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 618
7E92A8B0BF8924B1D8E333E9097" } ]
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/IsValidTicket
2. IsTicketValid
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/IsValidTicket
Request:
{
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6187E9
2A8B0BF8924B1D8E333E9097"
}
Response: true/false
27
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/Consumer
3. Consumer
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/Consumer
Request:
{
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6187E
92A8B0BF8924B1D8E333E9097",
"EncryptedUpdateRecord":"B3WuNHlwsHF6xGUdVCyv7k6P ezTH8ciarKXOEcdllRMdtrzRKzBYLBsqmspZhpg7K
V9 kiqx4hRWL5H3BR2XHQWvfkdEGDmd9SGe7/dRx55Ow+iQVXPlj/BoQcQBulplkXk+/J2xCUDgNSgNhZ1Jv/Ec
H1oBbE6FSsRkKd1lbSSSDhKv5Nl7h gkaVT+u8CNstD1W9Q4cDpjaEbwtv22kTGoIphM0JqFAAKtJ7mTLdJH6QH
gXWDSFY9ubcZO46ZieJ1rJGI49uCViGWOMOuTnzmLwkYHrwJ7XpwxYNd64Ao0oKlATcZ9/W5xdw65I4VKoIT
jrge0rB/KSpm58BaYv35892qhcZzLBHo7UV/Cc0SWfm0o4+hTIMVam",
"BatchID": "1"
}
Response:
[{
"TotalRecordSubmitted": "94",
"TotalMatch": "54",
"NotMatched": "40",
"MatchRate": "57%",
"Message": "Successful",
"UpdateID": "B-U202302182247112345"
}]
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/ConsumerDudCheque
4. Consumer DudCheque
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/ConsumerDudCheque
Request:
{
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CA xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 61
87E92A8B0BF8924B1D8E333E9097",
"EncryptedUpdateRecord":"B3WuNHlwsHF6xGUdVCyv7k6PezTH8ciarKXOEcdllRMdtrzRKzBYLBsqmspZhpg7K
V9kiqx4hRWL5H3BR2XHQWvfkdEGDmd9SGe7/dRx55Ow+iQVXPlj/BoQcQBulplkXk+/J2xCUDgNSgNhZ1Jv/Ec
H1oBbE6FSsRkKd1lbSSSDhKv5Nl7hgkaVT+u8CNstD1W9Q4cDpjaEbwtv22kTGoIphM0JqFAAKtJ7mTLdJH6QHg
XWDSFY9ubcZO46ZieJ1rJGI49uCViGWOMOuTnzmLwkYHrwJ7XpwxYNd64Ao0oKlATcZ9/W5xdw65I4VKoITjr
ge0rB/KSpm58BaYv35892qhcZzLBHo7UV/Cc0SWfm0o4+hTIMVam",
"BatchID": "1"
}
Response:
[{
"TotalRecordSubmitted": "94",
"TotalMatch": "54",
"NotMatched": "40",
"MatchRate": "57%",
"Message": "Successful",
"UpdateID": "B-U202302182247112345"
}]
28
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/Commercial
5. Commercial
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/Commercial
Request:
{
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx6187E92A8B0BF8924B1D8E333E9097",
"EncryptedUpdateRecord":"B3WuNHlwsHF6xGUdVCyv7k6PezTH8ciarKXOEcdllRMdtrzRKzBYLBsqmspZhpg7K
V9kiqx4hRWL5H3BR2XHQWvfkdEGDmd9SGe7/dRx55Ow+iQVXPlj/BoQcQBulplkXk+/J2xCUDgNSgNhZ1Jv/Ec
H1oBbE6FSsRkKd1lbSSSDhKv5Nl7hgkaVT+u8CNstD1W9Q4cDpjaEbwtv22kTGoIphM0JqFAAKtJ7mTLdJH6QHg
XWDSFY9ubcZO46ZieJ1rJGI49uCViGWOMOuTnzmLwkYHrwJ7XpwxYNd64Ao0oKlATcZ9/W5xdw65I4VKoITjr
ge0rB/KSpm58BaYv35892qhcZzLBHo7UV/Cc0SWfm0o4+hTIMVam",
"BatchID": "1"
}
Response:
[{
"TotalRecordSubmitted": "94",
"TotalMatch": "54",
"NotMatched": "40",
"MatchRate": "57%",
"Message": "Successful",
"UpdateID": "B-U202302182247112345"
}]
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/CommercialDudCheque
6. Commercial DudCheque
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/CommercialDudCheque
Request:
{
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxx6187E92A8B0BF8924B1D8E333E9097",
"EncryptedUpdateRecord":"B3WuNHlwsHF6xGUdVCyv7k6PezTH8ciarKXOEcdllRMdtrzRKzBYLBsqmspZhpg7KV9kiqx4
hRWL5H3BR2XHQWvfkdEGDmd9SGe7/dRx55Ow+iQVXPlj/BoQcQBulplkXk+/J2xCUDgNSgNhZ1Jv/EcH1oBbE6FSsRk
Kd1lbSSSDhKv5Nl7hgkaVT+u8CNstD1W9Q4cDpjaEbwtv22kTGoIphM0JqFAAKtJ7mTLdJH6QHgXWDSFY9ubcZO46Zie
J1rJGI49uCViGWOMOuTnzmLwkYHrwJ7XpwxYNd64Ao0oKlATcZ9/W5xdw65I4VKoITjrge0rB/KSpm58BaYv35892qhcZ
zLBHo7UV/Cc0SWfm0o4+hTIMVam",
"BatchID": "1"
}
Response:
[{
"TotalRecordSubmitted": "94", "TotalMatch": "54",
"NotMatched": "40", "MatchRate": "57%",
"Message": "Successful", "UpdateID": "B-U202302182247112345" }]
29
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/SubmitBatchUpdate
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/SubmitBatchUpdate
Request:
{
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CA xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx 6187E92A8B0BF8924B1D8E333E9097",
"EncryptedUpdateRecord":"B3WuNHlwsHF6xGUdVCyv7k6PezTH8ciarKXOEcd llRMdtrzRKzBYLBsqmspZhpg7K
V9kiqx4hRWL5H3BR2XHQWvfkdEGDmd 9SGe7/dRx55Ow+iQVXPlj/BoQcQBulplkXk+/J2xCUDgNSgNhZ1Jv/Ec
H1oBbE6FSsRkKd1lbSSSDhKv5Nl7hgkaVT+u8CNstD1W9Q4cDpjaEbwtv2 2kTGoIphM0JqFAAKtJ7mTLdJH6QH
gXWDSFY9ubcZO46ZieJ1rJGI49uCViGWOMOuTnzmLwkYHrwJ7XpwxYNd64Ao0oKlATcZ9/W5xdw65I4VKoIT
jrge0rB/KSpm58BaYv35892qhcZzLBHo7UV/Cc0SWfm0o4+hTIMVam",
"BatchID": "1"
}
Response:
[{
"TotalRecordSubmitted": "94",
"TotalMatch": "54",
"NotMatched": "40",
"MatchRate": "57%",
"Message": "Successful",
"UpdateID": "B-U202302182247112345"
}]
30
Reconciliation
Data Reconciliation
Data Reconciliation
The Reconciliation API end point is used when a certain month record is skiped or missing. The API endpoint is called
with specific Reconcile Date to insert the record for the month loan was taken or when repayment was made
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/ConsumerReconcile
1. Consumer Reconciliation
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/ConsumerReconcile
Request:
{
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6187E
92A8B0BF8924B1D8E333E9097",
"EncryptedUpdateRecord":"B3WuNHlwsHF6xGUdVCyv7k6P ezTH8ciarKXOEcdllRMdtrzRKzBYLBsqmspZhpg7K
V9 kiqx4hRWL5H3BR2XHQWvfkdEGDmd9SGe7/dRx55Ow+iQVXPlj/BoQcQBulplkXk+/J2xCUDgNSgNhZ1Jv/Ec
H1oBbE6FSsRkKd1lbSSSDhKv5Nl7h gkaVT+u8CNstD1W9Q4cDpjaEbwtv22kTGoIphM0JqFAAKtJ7mTLdJH6QH
gXWDSFY9ubcZO46ZieJ1rJGI49uCViGWOMOuTnzmLwkYHrwJ7XpwxYNd64Ao0oKlATcZ9/W5xdw65I4VKoIT
jrge0rB/KSpm58BaYv35892qhcZzLBHo7UV/Cc0SWfm0o4+hTIMVam",
"ReconcileDate": "YYYY/MM/DD" ,
"BatchID": "1"
}
Response:
[{
"TotalRecordSubmitted": "94",
"TotalMatch": "54",
"NotMatched": "40",
"MatchRate": "57%",
"Message": "Successful",
"UpdateID": "B-U202302182247112345"
}]
31
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/ConsumerDudChequeR
econcile
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/ConsumerDudChequeReconcile
Request:
{
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CA xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 61
87E92A8B0BF8924B1D8E333E9097",
"EncryptedUpdateRecord":"B3WuNHlwsHF6xGUdVCyv7k6PezTH8ciarKXOEcdllRMdtrzRKzBYLBsqmspZhpg7K
V9kiqx4hRWL5H3BR2XHQWvfkdEGDmd9SGe7/dRx55Ow+iQVXPlj/BoQcQBulplkXk+/J2xCUDgNSgNhZ1Jv/Ec
H1oBbE6FSsRkKd1lbSSSDhKv5Nl7hgkaVT+u8CNstD1W9Q4cDpjaEbwtv22kTGoIphM0JqFAAKtJ7mTLdJH6QHg
XWDSFY9ubcZO46ZieJ1rJGI49uCViGWOMOuTnzmLwkYHrwJ7XpwxYNd64Ao0oKlATcZ9/W5xdw65I4VKoITjr
ge0rB/KSpm58BaYv35892qhcZzLBHo7UV/Cc0SWfm0o4+hTIMVam",
"ReconcileDate": "YYYY/MM/DD" ,
"BatchID": "1"
}
Response:
[{
"TotalRecordSubmitted": "94",
"TotalMatch": "54",
"NotMatched": "40", "MatchRate": "57%", "Message": "Successful", "UpdateID": "B-U202302182247112345"
}]
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/ConsumerDudChequeR
econcile
3. Commercial Reconciliation
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/CommercialReconcile
Request:
{
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx6187E92A8B0BF8924B1D8E333E9097",
"EncryptedUpdateRecord":"B3WuNHlwsHF6xGUdVCyv7k6PezTH8ciarKXOEcdllRMdtrzRKzBYLBsqmspZhpg7K
V9kiqx4hRWL5H3BR2XHQWvfkdEGDmd9SGe7/dRx55Ow+iQVXPlj/BoQcQBulplkXk+/J2xCUDgNSgNhZ1Jv/Ec
H1oBbE6FSsRkKd1lbSSSDhKv5Nl7hgkaVT+u8CNstD1W9Q4cDpjaEbwtv22kTGoIphM0JqFAAKtJ7mTLdJH6QHg
XWDSFY9ubcZO46ZieJ1rJGI49uCViGWOMOuTnzmLwkYHrwJ7XpwxYNd64Ao0oKlATcZ9/W5xdw65I4VKoITjr
ge0rB/KSpm58BaYv35892qhcZzLBHo7UV/Cc0SWfm0o4+hTIMVam",
"ReconcileDate": "YYYY/MM/DD" ,
"BatchID": "1"
}
Response:
[{ "TotalRecordSubmitted": "94", "TotalMatch": "54", "NotMatched": "40", "MatchRate": "57%",
32
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/CommercialDudCheque
Reconcile
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/CommercialDudChequeReconcile
Request:
{
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx6187E92A8B0BF8924B1D8E333E9097",
"EncryptedUpdateRecord":"B3WuNHlwsHF6xGUdVCyv7k6PezTH8ciarKXOEcdllRMdtrzRKzBYLBsqmspZhpg7K
V9kiqx4hRWL5H3BR2XHQWvfkdEGDmd9SGe7/dRx55Ow+iQVXPlj/BoQcQBulplkXk+/J2xCUDgNSgNhZ1Jv/Ec
H1oBbE6FSsRkKd1lbSSSDhKv5Nl7hgkaVT+u8CNstD1W9Q4cDpjaEbwtv22kTGoIphM0JqFAAKtJ7mTLdJH6QHg
XWDSFY9ubcZO46ZieJ1rJGI49uCViGWOMOuTnzmLwkYHrwJ7XpwxYNd64Ao0oKlATcZ9/W5xdw65I4VKoITjr
ge0rB/KSpm58BaYv35892qhcZzLBHo7UV/Cc0SWfm0o4+hTIMVam",
"ReconcileDate": "YYYY/MM/DD" ,
"BatchID": "1"
}
Response:
[{
"TotalRecordSubmitted": "94",
"TotalMatch": "54",
"NotMatched": "40",
"MatchRate": "57%",
"Message": "Successful",
"UpdateID": "WL-202302182247112345"
}]
Update Output
Complete Update
{ TotalRecordSubmitted = 156, TotalMatch = 120, NotMatched = 36, MatchRate = 76%, Message = Successful, UpdateID
= WL-2021052422111169397, MissingMandatory=20, Warning=5, DataFormatFailed=4 }
33
Batch Update
Introduction
Batch update is voluminous credit record required for update periodically within a month before or after a
monthly update has been submitted. The purpose of batch update is to meet real-time credit record update
before the monthly data is submitted.
https://iremedy.firstcentralcreditbureau.com/AutoUploaderRest/restapi/SubmitBatchUpdate
ACCOUNTNO Varchar(20)/String
MONTHSINARREARS Integer
CURRENTBALANCEAMT Float
ACCOUNTSTATUSCODE Varchar(25)/String
LOANCLASSIFICATION Varchar(25)/String
AMOUNTOVERDUE float
"AccountNo":"3257634055",
"CurrentBalanceAmt":"2000",
"AmountOverdue":"0",
"Monthsinarrears":"0",
"LoanClassification":"performing",
"AccountStatusCode":"Open"
},
"AccountNo":"3257634056",
"CurrentBalanceAmt":"0",
"AmountOverdue":"0",
"Monthsinarrears":"0",
"LoanClassification":"performing",
"AccountStatusCode":"Closed"
}]
34
Record Encryption
AES encryption model is required to pass update record over the API. This method provide us with system enhanced with
end-to-end encryption for data exchange security. Below is a C-Sharp C# code for ASE encryption.
encryptor.Mode = CipherMode.CBC;
// Instantiate a new CryptoStream object to process the data and write it to the
// memory stream
CryptoStream cryptoStream = new CryptoStream(memoryStream, aesEncryptor,
CryptoStreamMode.Write);
35
Encryption Usage
string BatchUpdateRecord =
"[{'AccountNo':'3257634055','CurrentBalanceAmt':'2000','AmountOverdue':'0','Monthsinarrears':'0','Loan
Classification':'performing','AccountStatusCode':'Open'},{'AccountNo':'3257634056','CurrentBalanceAmt'
:'0','AmountOverdue':'0','Monthsinarrears':'0','LoanClassification':'performing','AccountStatusCode':'
Closed'}]";
string secreteKey = "3sc3RLrpd17";
// Create sha256 hash
SHA256 mySHA256 = SHA256Managed.Create();
byte[] key = mySHA256.ComputeHash(Encoding.ASCII.GetBytes(secreteKey));
// Create secret IV
byte[] iv = new byte[16] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0 };
The BatchUpdateRecord in JSON is gotten from your data warehouse, this is passed to EncryptString function alongside
with the secret keys.
LoginJSON
The login is required to update a batch record, the update will produce DataTicket which will be requested for adding
your encrypted record.
36
Login Request
{"UserName":"YourUersname","Password":" YourPassword"}
Response
[
{
"DataTicket": "E79878A174FCDC1AD50ACA9E3CDA21876C513107B9A2BE2FC479EFF3B2665E7E3D6AA0FC0AE6
30A154BA9F02C13205BA2B4C2BCD73C1A4FA681B645B4D5D2E443FD1E86B13383D2D857A05DEC7581EEECCE94A521EB4B2C
E8666A66B22B5471A"
}
]
SubmitBatchUpdate
37
Submission of Batch Update Request with increment in BatchID
Request:
[{
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CA xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
6187E92A8B0BF8924B1D8E333E9097",
"EncryptedUpdateRecord":"B3WuNHlwsHF6xGUdVCyv7k6PezTH8ciarKXOEcd
llRMdtrzRKzBYLBsqmspZhpg7KV9kiqx4hRWL5H3BR2XHQWvfkdEGDmd
9SGe7/dRx55Ow+iQVXPlj/BoQcQBulplkXk+/J2xCUDgNSgNhZ1Jv/EcH1oBbE6FSsRkKd1lbSSSDhKv5Nl7hgkaVT+u8CNstD1
W9Q4cDpjaEbwtv2
2kTGoIphM0JqFAAKtJ7mTLdJH6QHgXWDSFY9ubcZO46ZieJ1rJGI49uCViGWOMOuTnzmLwkYHrwJ7XpwxYNd64Ao0oKlA
TcZ9/W5xdw65I4VKoITjrge0rB/KSpm58BaYv35892qhcZzLBHo7UV/Cc0SWfm0o4+hTIMVam",
"BatchID": "1"
},
{
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CA xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
6187E92A8B0BF8924B1D8E333E9097",
"EncryptedUpdateRecord":"B3WuNHlwsHF6xGUdVCyv7k6PezTH8ciarKXOEcd
llRMdtrzRKzBYLBsqmspZhpg7KV9kiqx4hRWL5H3BR2XHQWvfkdEGDmd
9SGe7/dRx55Ow+iQVXPlj/BoQcQBulplkXk+/J2xCUDgNSgNhZ1Jv/EcH1oBbE6FSsRkKd1lbSSSDhKv5Nl7hgkaVT+u8CNstD1
W9Q4cDpjaEbwtv2
2kTGoIphM0JqFAAKtJ7mTLdJH6QHgXWDSFY9ubcZO46ZieJ1rJGI49uCViGWOMOuTnzmLwkYHrwJ7XpwxYNd64Ao0oKlA
TcZ9/W5xdw65I4VKoITjrge0rB/KSpm58BaYv35892qhcZzLBHo7UV/Cc0SWfm0o4+hTIMVam",
"BatchID": "2"
},
{
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CA xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
6187E92A8B0BF8924B1D8E333E9097",
"EncryptedUpdateRecord":"B3WuNHlwsHF6xGUdVCyv7k6PezTH8ciarKXOEcd
llRMdtrzRKzBYLBsqmspZhpg7KV9kiqx4hRWL5H3BR2XHQWvfkdEGDmd
9SGe7/dRx55Ow+iQVXPlj/BoQcQBulplkXk+/J2xCUDgNSgNhZ1Jv/EcH1oBbE6FSsRkKd1lbSSSDhKv5Nl7hgkaVT+u8CNstD1
W9Q4cDpjaEbwtv2
2kTGoIphM0JqFAAKtJ7mTLdJH6QHgXWDSFY9ubcZO46ZieJ1rJGI49uCViGWOMOuTnzmLwkYHrwJ7XpwxYNd64Ao0oKlA
TcZ9/W5xdw65I4VKoITjrge0rB/KSpm58BaYv35892qhcZzLBHo7UV/Cc0SWfm0o4+hTIMVam",
"BatchID": "3"
}, {
"DataTicket": "7BEB9DDBEF0BB83B4BF38EF69F0CA xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
6187E92A8B0BF8924B1D8E333E9097",
"EncryptedUpdateRecord":"B3WuNHlwsHF6xGUdVCyv7k6PezTH8ciarKXOEcd
llRMdtrzRKzBYLBsqmspZhpg7KV9kiqx4hRWL5H3BR2XHQWvfkdEGDmd
9SGe7/dRx55Ow+iQVXPlj/BoQcQBulplkXk+/J2xCUDgNSgNhZ1Jv/EcH1oBbE6FSsRkKd1lbSSSDhKv5Nl7hgkaVT+u8CNstD1
W9Q4cDpjaEbwtv2
2kTGoIphM0JqFAAKtJ7mTLdJH6QHgXWDSFY9ubcZO46ZieJ1rJGI49uCViGWOMOuTnzmLwkYHrwJ7XpwxYNd64Ao0oKlA
TcZ9/W5xdw65I4VKoITjrge0rB/KSpm58BaYv35892qhcZzLBHo7UV/Cc0SWfm0o4+hTIMVam",
"BatchID": "4"
}] 38
Application of Encryption on JSON data
JSON Data expected to be submitted
[{"AccountNo":"3257634055",
"CurrentBalanceAmt":"2000",
"AmountOverdue":"0",
"Monthsinarrears":"0",
"LoanClassification":"performing",
"AccountStatusCode":"Open"
}, {
"AccountNo":"3257634056",
"CurrentBalanceAmt":"0",
"AmountOverdue":"0",
"Monthsinarrears":"0",
"LoanClassification":"performing",
"AccountStatusCode":"Closed"}]
BatchID
BatchID is incremental if the total record is greater than 500. SubmitBatchUpdate will take 500 record at a time, for
every 500 batch update passed after first 500 batch update record, BatchID will be passed as incremental value.
string BatchUpdateRecord =
"[{'AccountNo':'3257634055','CurrentBalanceAmt':'2000','AmountOverdue':'0','Monthsinarrears':'0','Loan
Classification':'performing','AccountStatusCode':'Open'},{'AccountNo':'3257634056','CurrentBalanceAmt'
:'0','AmountOverdue':'0','Monthsinarrears':'0','LoanClassification':'performing','AccountStatusCode':'
Closed'}]";
string secreteKey = "3sc3RLrpd17";
// Create sha256 hash
SHA256 mySHA256 = SHA256Managed.Create();
byte[] key = mySHA256.ComputeHash(Encoding.ASCII.GetBytes(secreteKey));
// Create secret IV
byte[] iv = new byte[16] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0 };
39
Output of the encrypted JSON Data
Header Content
Content-Type: application/json; charset=utf-8
Content-Length: length
Data
[{"DataTicket":"451E879844A5EE1715B30E5227F7C42A885B35D513D6F19835FAED4F9D5340864B5B50395
6FEF8E9AE4510E40AE29E9B4718DF683EE46C928GB65D36011C4C354BACB9EE885DA7D5C9BD2C8B647311433B
28DC88F1B4E8751783AA28278AD4AEF9C926EACDFFC676CA7681E68B50E92C52D997F87FD7EFA10FDC2A49C77
2791968EA05BB8278D654D45E06D5852884C7",
"EncryptedUpdateRecord":
"qSgpcalAi7csWfwmVdgfPcmaV+3hC+vsb2I86fESKu6xP4bcAxrdjJxsHJdKoXW5bLTvI2jpC4IdvIHjapN4XlhVpsZp4RUyYR1x
Pn2UNNYAXes1pnzZEOaQ8kbKY+3nsrwYd1zlGDL/PsHwbhAX+1/WmVLTXGXJgHIS9CJ0eUOVSE/hBkqs2KEK4cixKP7EFy0
39yF7zAZfsOSxKDrj9qUQ7QaaM406be0inFojFILhH7nfx4b8l2PcrkyxIaWvWNqj4khXVdJXOqeEiPIZQ8FTI1IZZAEE9OqwCR
Fl6u1ZjB8rePZT3WrF2wTx6fqjnM3KU2sMuCClORSb+UbVKs3jfdm4OhaJDGzOcJEgR6rQPUSEfYO/YTvPlLltgPozIqrftIEREo
B3gK0KRDWRL9gzsVNiJKnnBWQJ0/snDxB5H0jRLYCE1EZQkelo/SQAglM1BPuCwTQwIVTpR2eKBA==",
"BatchID":"1"}]
// How to encrypt and decrypt byte array using PHP As show on in C# encrypted code above
$plaintext = "[{'AccountNo':'3257634055','CurrentBalanceAmt':'2000','AmountOverdue':'0','Monthsinarrears':'0','Loan
Classification':'performing','AccountStatusCode':'Open'},{'AccountNo':'3257634056','CurrentBalanceAmt'
:'0','AmountOverdue':'0','Monthsinarrears':'0','LoanClassification':'performing','AccountStatusCode':'
Closed'}]";
$password = '3sc3RLrpd17';
$method = 'aes-256-cbc';
$iv = chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) .
chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0);
// av3DYGLkwBsErphcyYp+imUW4QKs19hUnFyyYcXwURU=
echo $encrypted;
?> 40
PHP Record Decryption
<?php
$password = '3sc3RLrpd17';
$method = 'aes-256-cbc';
$iv = chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) .
chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0);
$encrypted
=”qSgpcalAi7csWfwmVdgfPcmaV+3hC+vsb2I86fESKu6xP4bcAxrdjJxsHJdKoXW5bLTvI2jpC4IdvIHjapN4XlhVpsZp4RU
yYR1xPn2UNNYAXes1pnzZEOaQ8kbKY+3nsrwYd1zlGDL/PsHwbhAX+1/WmVLTXGXJgHIS9CJ0eUOVSE/hBkqs2KEK4ci
xKP7EFy039yF7zAZfsOSxKDrj9qUQ7QaaM406be0inFojFILhH7nfx4b8l2PcrkyxIaWvWNqj4khXVdJXOqeEiPIZQ8FTI1IZ
ZAEE9OqwCRFl6u1ZjB8rePZT3WrF2wTx6fqjnM3KU2sMuCClORSb+UbVKs3jfdm4OhaJDGzOcJEgR6rQPUSEfYO/YTvPl
LltgPozIqrftIEREoB3gK0KRDWRL9gzsVNiJKnnBWQJ0/snDxB5H0jRLYCE1EZQkelo/SQAglM1BPuCwTQwIVTpR2eKBA=
=”;
?>
41
JAVA Record Encryption
try {
SecureRandom random = new SecureRandom();
byte[] salt = new byte[32];
random.nextBytes(salt);
//Define Initialization Vector
byte[] ivBytes ={ (byte)0x0, (byte)0x0,(byte) 0x0, (byte)0x0,(byte) 0x0,(byte)
0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0, (byte) 0x0,(byte)
0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0 };
//random.nextBytes(ivBytes);
IvParameterSpec iv = new IvParameterSpec(ivBytes);
USAGE
String SECRET_KEY = "3sc3RLrpd17";
String enval= "[{""Username"": ""1234""}]";
String EncryptedRecord = encrypt(enval); //dyUW7VzcQtKRYORpTJAf2VUi5UvgPhdU3hTo/jVoSiM=
[{ "DataTicket":
"D184DB5B06F9CA39F750271C2E459FE21F7E11EB2BCC10AA56AA2FFA66597E405B9D5F191F020C91F4A107993CE
2CBA649FC280643F80C19863328B50E2D0F5C98A6E8E742D486B8F408EF46068202B8CCF92AC1692E0440257096D
2058EC060",
"EncryptedUpdateRecord": EncryptedRecord,
"BatchID": "1" }]
42
Update Output
Complete Update
{ TotalRecordSubmitted = 156, TotalMatch = 120, NotMatched = 36, MatchRate = 76%, Message = Successful, UpdateID
= B-U2021052422111169397 }
43