idvCheck allows a client to submit details for sanction checking, electronic kyc and manual kyc using the same api call.
The api can be set up using one of five modes. Depending on the mode in use the api will return a result out of a possible list. The result is composed of 3 parts: ErrorCode, Error description, Data. Data is only used when error code 0021 is returned.
Mode 1 - Sanctions check only
0020 Sanctions - No Match 0021 Sanctions - Requires Investigation
Mode 2 - Sanctions check, electronic kyc, manual kyc
0018 eKYC Approved 0019 eKYC Pending 0021 Sanctions - Requires Investigation
Mode 3 - Sanctions check, manual kyc
0020 Sanctions - No Match 0021 Sanctions - Requires Investigation
Mode 4 - Electronic kyc, manual kyc
0018 eKYC Approved 0019 eKYC Pending
Mode 5 - Manual kyc
0000 Successful submission.
For all modes
Any other code returned would signify that an error had occurred during the call of the service. An exhaustive list of codes is found here. An exhaustive list of keywords retuned in the data field can be found here. Calling the idvcheck api also results in an aysynchrons call (postback) to the client. This call contains more details of the result. Information about this call can be found here.
This document outlines a method that can be used to rapidly integrate to idvcheck. In order to integrate you need to create two modules. The first module is used to register an application to idvcheck. The UniqueId field identifies each application. No two submitted applications by same organisation can contain the same UniqueId field. The application can contain the documents that need to be verified by idvcheck, or the documents can be sent in subsequent calls to api. If documents are sent in subsequent calls of the api, the calls must share the same UniqueId field. The second module is used to receive results from idvcheck once the verification process is completed. idv will post the result of the verification to a URL of your choice into a parameter called DATA. The data submitted will include all the data used for verification plus a new field with the result of the verification.
//Create RIK object using credentials supplied by idvcheck RIK.IDV apply = new RIK.IDV( "username", "password"); //Generate a unique reference code. This reference code needs to be //used whenever you need to refer to this //application in subsequent calls to api. string UniqueID = "Client1." + DateTime.Now.ToString("yyyyMMddHHmmssfff"); //First step is to get RIK to download settings from the idvcheck environment. apply.Client.APIType = RIK.API.RIKSettings; apply.Send(); apply.New(); apply.Client.APIType = RIK.API.NewApplication; apply.Client.FirstName = "Joe"; apply.Client.LastName = "Bloggs"; apply.Client.CountryOfOrigin = "Ireland"; apply.Client.DateOfBirth = new DateTime(1950, 1, 16); apply.Client.AddEmail("[email protected]"); apply.Client.AddUDF("1235"); apply.Client.AddMobile("35361203501"); apply.Client.AddPhone("1850605747"); apply.Client.AddFile(@"Pathtofile"); apply.Client.UniqueID = UniqueID; RIK.Address a = new RIK.Address(); a.Address1 = "My Addy"; a.Address2 = "St James's Gate"; a.City = "Dublin 8"; a.AddressType = "Primary"; a.Country = "Ireland"; a.CountryCode = "IE"; a.PostCode = "none"; //RIK supports more than one address, to add more than one address //simply create a new address object and call the //following method a second time. apply.Client.AddAddress(a); //Sending the API request to idvcheck apply.Send(); //Ensuring that the request was successful if (apply.Response.ErrorCode != "0000") { Console.Write("failed"); }
<system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IService" /> </basicHttpBinding> <basicHttpsBinding> <binding name="BasicHttpsBinding_IService" /> </basicHttpsBinding> </bindings> <client> <endpoint address="http://stagingportal.idvcheck.com/api/service.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService" contract="IDVAPI.IService" name="BasicHttpBinding_IService" /> </client> </system.serviceModel>
//Create RIK object using credentials supplied by idvcheck RIK.IDV apply = new RIK.IDV( "username", "password"); //This refernce code needs to be the same as the one used to register the application string UniqueID = "client100233123"; //First step is to get RIK to download settings from the idvcheck environment. apply.Client.APIType = RIK.API.RIKSettings; apply.Send(); apply.New(); apply.Client.APIType = RIK.API.AddFile; apply.Client.UniqueID = UniqueID; //UniqueID used in original application apply.Client.AddFile(@"PathtoFile"); //Sending the API request to idvcheck apply.Send(); //Ensuring that the request was successful if (apply.Response.ErrorCode != "0000") { Console.Write("failed"); }
<system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IService" /> </basicHttpBinding> <basicHttpsBinding> <binding name="BasicHttpsBinding_IService" /> </basicHttpsBinding> </bindings> <client> <endpoint address="http://stagingportal.idvcheck.com/api/service.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService" contract="IDVAPI.IService" name="BasicHttpBinding_IService" /> </client> </system.serviceModel>
if (!IsPostBack) { HttpContext context = null; HttpRequest httpRequest = null; HttpResponse httpResponse = null; try { context = new HttpContext(Request, Response); httpRequest = context.Request; httpResponse = context.Response; if (httpRequest["DATA"] != null) { string data = HttpUtility.UrlDecode(httpRequest["DATA"].ToString()); RIK.ApplicationResponse AppResponse = new RIK.ApplicationResponse(data); if (AppResponse.AppReply.ErrorCode == "0000") { Response.Write(AppResponse.UniqueID); //Get the unique id specified when sending the request to IDV Response.Write(AppResponse.Response); //Get the idvcheck result for application //List all entries in UDF field. Note that if status is pending last item of UDF fiels will contain reason why the application was placed in pending status foreach (string value in AppResponse.UDF.Items) { Response.Write(value); } } else { Response.Write(AppResponse.AppReply.ErrorCode + ":" + AppResponse.AppReply.ErrorDesc); httpResponse.StatusCode = 201; } } else Response.Write("0003"); } catch (Exception ex) { //Notify IDV IT Support of fail. Message will automatically be reposted by IDV httpResponse.StatusCode = 201; Response.Write("0002:HTTP Post failed: " + ex.Message.ToString()); } }
The outcome of the verification will be placed in field AppResponse.Response. AppResponse.Response can contain one of the following values:
Only some of the above values of AppResponse.Response might be returned to the client depending on the service on offer.
If the status sent back by idv is the Pending status, further information about the application can be obtained by checking the UDF fields. The UDF fields can contain one of:
Client can use the AddFile method (see Sending files in subsequent call) to send additional documentation for the application.
If information about an application changes once an application is approved an update application call can be placed to update the information as follows:
//Create RIK object using credentials supplied by idvcheck RIK.IDV apply = new RIK.IDV( "username", "password"); //This reference code needs to be the same as the one used to register the application string UniqueID = "client100233123"; //First step is to get RIK to download settings from the idvcheck environment. apply.Client.APIType = RIK.API.RIKSettings; apply.Send(); apply.New(); apply.Client.APIType = RIK.API.UpdateApplication; apply.Client.LastName = "Whatever"; apply.Client.AddEmail("[email protected]"); apply.Client.OverWriteEmail(true); // overwrite email ensures that the old email is replaced by the new email. apply.Client.AddMobile("35361223501"); apply.Client.OverWriteMobile(true); apply.Client.UniqueID = UniqueID; RIK.Address a = new RIK.Address(); a.Address1 = "New Addy"; a.Address2 = "St Philip's Gate"; a.City = "London"; a.AddressType = "Primary"; a.Country = "Ireland"; a.CountryCode = "IE"; a.PostCode = "none"; apply.Client.AddAddress(a); apply.Client.Address.overwrite=true; //old address is overwritten //Sending the API request to idvcheck apply.Send(); //Ensuring that the request was successful if (apply.Response.ErrorCode != "0000") { Console.Write("failed"); Console.Write(apply.Response.ErrorCode); Console.Write(apply.Response.ErrorDesc); }
<system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IService" /> </basicHttpBinding> <basicHttpsBinding> <binding name="BasicHttpsBinding_IService" /> </basicHttpsBinding> </bindings> <client> <endpoint address="http://stagingportal.idvcheck.com/api/service.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService" contract="IDVAPI.IService" name="BasicHttpBinding_IService" /> </client> </system.serviceModel>
0000 Successful 0001 Authentication Failed Check username/password 0002 Operation Failed 0003 Data Incorrect 0004 Application already exists (value of UniqueId field was used before) 0005 Files did not save (Resend an addfileapi with file for the same uniqueid) 0007 Application does not exists (Addfile or Updateapplication was submitted with a UniqueId field which was not sent previously) 0011 Application status does not allow to add file 0012 File addition failed (Resend an addfileapi with file for the same uniqueid) 0013 File base64 string is invalid (Please check that the file is being sent as a valid base 64 string) 0014 XML validation failed 0016 Invalid file extension 0017 Error Connecting to eKYC service 0018 eKYC Approved 0019 eKYC Pending 0020 Sanctions - No Match 0021 Sanctions - Requires Investigation 0022 Sanctions - Potential Match 0023 PEP - Potential Match 0024 Adverse Media - Potential Match
sanction warning fitness-probity pep pep-class-1 pep-class-2 pep-class-3 pep-class-4 adverse-media adverse-media-financial-crime adverse-media-violent-crime adverse-media-sexual-crime adverse-media-terrorism adverse-media-fraud adverse-media-narcotics adverse-media-general