KYC Check Request

An explanation of the Request object for the KYCCheck method

Request

  1. Full Request
  2. Bundle Data
  3. Query Data
  4. Query Options
  5. Service Authorisation
  6. Uploaded Files

Here is a complete request for the API. Which fields are required will depend on which service(s) are being called.

A Note on Field Ordering

If you're using a development environment other than Microsoft Visual Studio, or are crafting your requests manually, then you must ensure that all fields are passed in Alphabetical Order - i.e. in the order shown in the example above. This is due to the way that the de-serialisation works on the server side, and is a mandatory requirement.

If you pass the fields in a different order, you will see a Null Reference exception thrown by the service.

<soapenv:Envelope>
   <soapenv:Header/>
   <soapenv:Body>
      <KYCCheck>
         <serviceRequest>
            <BundleData>
               <BundleName>?</BundleName>
            </BundleData>
            <QueryData>
               <AgeVerificationPassIf>?</neur:AgeVerificationPassIf>
               <AgeVerificationThreshold>?</neur:AgeVerificationThreshold>
               <City>?</City>
               <Country>?</Country>
               <County>?</County>
               <DateOfBirthMatchThreshold>?</DateOfBirthMatchThreshold>
               <DayOfBirth>?</DayOfBirth>
               <DrivingLicenceNumber>?</DrivingLicenceNumber>
<Email>?</Email> <Flat>?</Flat> <Forename>?</Forename> <Gender>?</Gender>
<HouseName>?</HouseName>
<HouseNumber>?</HouseNumber> <HouseNameNumber>?</HouseNameNumber>
<IP>?</IP> <IdCardNumber>?</IdCardNumber>
<MRZ>?</MRZ> <Maiden>?</Maiden> <MiddleNames>?</MiddleNames> <MobileNumber>?</MobileNumber> <MonthOfBirth>?</MonthOfBirth> <NameQuery>?</NameQuery> <NameQueryMatchThreshold>?</NameQueryMatchThreshold> <NationalId>?</NationalId> <PassportNumber>?</PassportNumber>
<PersonalId>?</PersonalId> <PhoneNumber>?</PhoneNumber> <PlaceOfBirth>?</PlaceOfBirth> <Postcode>?</Postcode> <ProfileId>?</ProfileId> <Region>?</Region> <Street>?</Street> <Surname>?</Surname> <TaxCode>?</TaxCode>
<Title>?</Title> <TravelVisaNumber>?</TravelVisaNumber> <YearOfBirth>?</YearOfBirth> </QueryData> <!--Optional:--> <QueryOptions> <KeyValueOfstringstring> <Key>?</Key> <Value>?</Value> </KeyValueOfstringstring> </QueryOptions> <ServiceAuthorisation> <APIKey>?</APIKey> <ClientReference>?</ClientReference> <ClientSubaccount>?</ClientSubaccount> <ClientUser>?</ClientUser> <RefersToServiceCallReference>?</RefersToServiceCallReference> </ServiceAuthorisation> <!--Optional:--> <UploadedFiles> <!--Zero or more repetitions:--> <UploadedFile> <DocumentReference>?</DocumentReference> <DocumentUID>?</DocumentUID> <Group>?</Group> <Index>?</Index> <Service>?</Service> </UploadedFile> </UploadedFiles> </serviceRequest> </KYCCheck> </soapenv:Body> </soapenv:Envelope>

The bundle data tag indicates which bundle you are calling and is mandatory for every service call. A bundle is a collection of services which will be agreed with W2 Support.

<BundleData>
    <BundleName>{You bundle name here e.g. TEST_KYC_SIS}</BundleName>
</BundleData>

The Query Data tag contains all the information about the individual or organisation you are querying. Which fields you need to include will be different for each service and many of them are only used for specific services. See the service page for each service you are calling.

<QueryData>
    <AgeVerificationPassIf>?</neur:AgeVerificationPassIf>
    <AgeVerificationThreshold>?</neur:AgeVerificationThreshold>
    <City>?</City>
    <Country>?</Country>
    <County>?</County>
    <DateOfBirthMatchThreshold>?</DateOfBirthMatchThreshold>
    <DayOfBirth>?</DayOfBirth>
    <DrivingLicenceNumber>?</DrivingLicenceNumber>
    <Email>?</Email>
    <Flat>?</Flat>
    <Forename>?</Forename>
    <Gender>?</Gender>
    <HouseName>?</HouseName>
    <HouseNumber>?</HouseNumber>
    <HouseNameNumber>?</HouseNameNumber>
    <IP>?</IP>
    <IdCardNumber>?</IdCardNumber>
    <MRZ>?</MRZ>
    <Maiden>?</Maiden>
    <MiddleNames>?</MiddleNames>
    <MobileNumber>?</MobileNumber>
    <MonthOfBirth>?</MonthOfBirth>
    <NameQuery>?</NameQuery>
    <NameQueryMatchThreshold>?</NameQueryMatchThreshold>
    <NationalId>?</NationalId>
    <PassportNumber>?</PassportNumber>
    <PersonalId>?</PersonalId>
    <PhoneNumber>?</PhoneNumber>
    <PlaceOfBirth>?</PlaceOfBirth>
    <Postcode>?</Postcode>
    <ProfileId>?</ProfileId>
    <Region>?</Region>
    <Street>?</Street>
    <Surname>?</Surname>
    <TaxCode>?</TaxCode>
    <Title>?</Title>
    <TravelVisaNumber>?</TravelVisaNumber>
    <YearOfBirth>?</YearOfBirth>
</QueryData>

For example, for our SIS (Standard International Sanctions) service it would look similar to this:

<QueryData>
    <DayOfBirth>{e.g. 21}</DayOfBirth>
    <MonthOfBirth>{e.g. 02}</MonthOfBirth>
    <NameQuery>{e.g. Robert Mugabe}</NameQuery>
    <YearOfBirth>{e.g. 1924}</YearOfBirth>
</QueryData>
 

These are optional parameters for some extra fields not covered in the Query Data. The whole section is optional. The most common use is to set Sandbox mode, where you can call the service and get standard responses. For further information, each service has examples of how to structure a call to the sandbox.

An example for a sandbox request might look like this:

<QueryOptions>
   <KeyValueOfstringstring>
   	<Key>Sandbox</Key>
        <Value>True</Value>
    </KeyValueOfstringstring>
</QueryOptions>

This section is mandatory for all API calls as it identifies and authenticates you as a user of this service.

<ServiceAuthorisation>
   <APIKey>
   	Your API key provided by W2.
    </APIKey>
    <!--Optional:-->
    <ClientReference>
   	A reference identifying this call i.e. My Company Testing.
      </ClientReference>
    <!--Optional:-->
    <ClientSubaccount>
        An optional reference to identify which of your client accounts this call was made for.
    </ClientSubaccount>
    <!--Optional:-->
    <ClientUser>
    	An optional reference to identify which individual user made this call. If specified,
this value must be the email address of a known user account assigned to your company
currently in the W2 Global Database. If a value is specified here that can't be validated
as an existing account, then the call will fail with an Invalid Client User error. </ClientUser> <!--Optional:--> <RefersToServiceCallReference>
Links this call to a previous call by specifying the previous ServiceCallReference.
</RefersToServiceCallReference> </ServiceAuthorisation>

This element is provided to supply the details of documents that are required for a service in the bundle to complete its work. For example, when using the IDDocumentCheck service, an image of the document must be associated with the call. This association is performed by adding the Unique ID of the document that was returned when it was uploaded to an item in this array.

<UploadedFiles>
  <!--Zero or more repetitions:-->
  <neur:UploadedFile>
    <DocumentReference>
        A client-provided reference to help identify the document.
    </DocumentReference>
    <DocumentUID>
The Unique identifier returned from the Document Upload service when uploading this document.
</DocumentUID> <Group>
An optional identifier used to group documents.
</Group> <Index>
An optional value used to indicate the index of this document
within its group (if provided) or overall if no group is specified
</Index> <Service>
Indicates which service in the specified bundle this document should be associated with
</Service> </UploadedFile> </UploadedFiles>