Overview

The following document gives a basic guideline of using the Netcash Web Service for systems integration.
The Location for this web service is at: https://ws.netcash.co.za/NIWS/niws_nif.svc

This service enables a software developer to write code enabling a user to do South African Bank Account and Consumer ID Verification from the Netcash System without user interaction.

This document explains the bulk processing service. For the real-time service click here.

Developers should familiarize themselves with calling a web service and processing the return in their chosen development language.

Bank Account Verification (AVS)

Only the following banks support/offer bank account verification services:

PARTICIPATING BANKBRANCH CODEREAL-TIMEBATCH
ABSA632005YESYES
Access Bank/GRO410506YESYES
African Bank430000YESYES
Bidvest Bank462005NOYES
Bank Zero888000YESNO
Capitec Bank470010YESYES
Capitec Business Bank450105NOYES
Discovery Bank679000YESYES
First National Bank250655YESYES
Grindrod584000YESNO
Investec Bank580105YESYES
Nedbank198765YESYES
Sasfin Bank683000YESNO
Standard Bank*051001YESYES
Thyme Bank678910YESNO

* Standard Bank 11-digit account numbers can only be verified using the universal branch code 051001
* Standard Bank 10-digit account numbers can be verified using the actual branch code -or the universal branch code.

Please note: Netcash can currently only verify the abovementioned banks’ accounts. AVS requests for any other banks are charged for and will not produce results.

AVS Terms

  • Consumer: The client’s identity number and bank account details are submitted to the issuing bank to verify that the account is open, active and associated with the ZA identity number supplied.
  • Commercial: The company’s registration number and bank account details are submitted to the issuing bank to verify that the account is open, active and associated with the company registration number supplied.

Technical Information

Please ensure that the settings for Developers are correctly set before you proceed with the implementation below specification.

Process:

  1. Build the standard input file (NIF) containing the AVS enquiries according to the spec in this document.
  2. Submit the file to Netcash via the BatchFileUpload method.
  3. Retrieve the load report using the RequestFileUploadReport method.
  4. Retrieve the results of the enquiries using the RequestAVSReport method.

Call the required method in the service https://ws.netcash.co.za/NIWS/niws_nif.svc

Method NameParameters
BatchFileUpload
  • ServiceKey (Risk Services Service Key)
  • File
RequestFileUploadReport
  • ServiceKey (Risk Services Service Key)
  • FileToken (received on file upload if successful)
RequestAVSReport
  • ServiceKey (Risk Services Service Key)
  • FileToken (the same file token received)

Once you have built the file call:

Input File Structure

The file is a tab delimited text file and each file has the following mandatory records:

H – Header record identifies the upload and passes instructions to the Netcash server to determine the purpose of the file.
K – Key record must follow the header record. The key record describes the transaction records which follow. The format defined in the key record is used to validate the record structure and content.
T – Transaction records follow the key record. The fields in the transaction records must conform to the layout defined in the key.
F – Footer record must be the last record in the file and confirms that the file is complete.

Header record (H)

Every file must contain a header record as the first record in the file.

Structure

Field NameTypeValue
Record IDAH
Service KeyANGUID
VersionN1
InstructionANCD35
Batch nameANYour identifier
Action dateNCCYYMMDD
Software Vendor KeyANGUID

Field explanations

Field NameExplanation
Record Id“H” – Identifies the record as a header
Service KeyThe Risk Service Key issued to the account by Netcash
Version“1” – This is the Netcash version of the file specification
InstructionPurpose of the file (CD35 – AVS enquiry)
Batch nameThe Batch name will be returned in the Load report header to identify the batch result
Action dateCurrent date
Software Vendor KeyThe key issued by Netcash to identify the software origin of transactions. (only used by Netcash ISV‘s else use the default value: 24ade73c-98cf-47b3-99be-cc7b867b3080)

Key Record (K)

The key record is mandatory and must appear in the file between the header record and the transaction records.
The key defines the content, order and length of the transactions records in the file (similar to the column headings in a spreadsheet)
The key lists all the possible fields contained in the subsequent transaction records, even if not every transaction record contains data in all the fields.
While the file is customizable, Netcash recommends listing keys in ascending numerical order for ease of debugging and support.

Structure

K 101 126 127 131 132 133 134 135 136

 

Transaction Record (T)

There must be at least one transaction record in the file
The transaction records must conform to the order of the fields as described in the key record.
(In the example, the account reference (field id 101) is defined as the first field in the record therefore every transaction record MUST have the account reference as the first field or it will fail validation)
Every transaction record must have the same number of fields as defined in the key record (K). A blank tab (or the default value defined for the field) should replace empty fields.

Structure

FieldTypeValueMandatory
Record IdAT
101ANAccount reference
126ANAVS check number
127N1Is ID number
131N1Banking detail type
132ANBank account name
133N1Bank account type
134AN6Branch code
135N1Filler
136N11Bank account number
301ANExtra 1
302ANExtra 2
303ANExtra 3

 

Field explanations

KeyField NameExplanation
101Account referenceThe unique reference for this record
126AVS check numberSA ID number / Passport number/ Company registration
127Is ID number1 = This is an SA ID number. The system will validate the AVS check number supplied in 126 before submitting for verification
0 = company registration or passport number
131Banking detail type1 = Bank account
132Bank account nameAccount holder surname or company name. The bank will verify that the account name is as it appears in their records
133Bank account type1 = Current
2 = Savings
3 – Transmission
134Branch code6-digit branch code. Prefill with zeroes if less than 6
135Filler0
136Bank account numberBank account number
301Extra 1Custom user-defined data*
302Extra 2Custom user-defined data*
303Extra 3Custom user-defined data*
  • The content of the “Extra” fields will be included in downloaded statement data.

Footer record (F)

The footer record indicates that the file is complete. It must be the last record in the file. If the record is not present, the system will fail the file without processing any transaction records.

Structure

Field NameTypeValue
Record IdentifierAF
No of transactionsNA count of the transaction records
Sum of amountsN0
End-of-file indicatorN9999

 

Input file example

H C74EF975-5429-4663-85FB-2A64CA0FB9EF 1 CD35 Test AVS Batch 20180730 24ade73c-98cf-47b3-99be-cc7b867b3080
K 101 126 127 131 132 133 134 135 136 301 302 303
T Ref001 199102191024089 1 1 NEL 2 051001 0 10011234099 Extra data 1 Extra 2 Extra 3
F 1 0 9999

 

Output

The web service has a 3-tiered output:

  • The method call is validated
  • The file content is validated and a load report is produced
  • The results of the enquiries are returned in a response file

Method call output

Successful request

If the method call was successful, the web service will process the file and return a file token. Use the file token returned to retrieve the load report.

Example:

20000000.2550236530.0483.2.2

Unsuccessful request

If the method call fails, the web service will return an error code:

CodeDescription
100Authentication failure. Ensure that the Service Key in the method call is correct
102Parameter error. One or more of the parameters in the string is incorrect
200General code exception. Please contact Netcash Technical Support

Load Report

To retrieve the load report call:

Only errors are reported in the file. If all the entries in the file are successfully validated, the Load report header will contain “SUCCESSFUL” and there will be no detail messages.

File structure

The report is tab-delimited with a linefeed character as line terminator.

Load report header (occurs once at the start of each load report)

FieldNameTypeValue
1Record identifierAN8###BEGIN
2Batch nameAN{your batch name}
3Result of uploadA13SUCCESSFUL / UNSUCCESSFUL /
SUCCESSFUL WITH ERRORS
4Start time of reportAN8HH:MM AM/PM
5Batch ValueAN15TOTAL OF BATCH
6Action DateAN8CCYYMMDD


Load report message
(occurs multiple times – once per error record)

FieldNameTypeValue
1Account referenceAN58Acc Ref :{your account reference}
2Line numberANLine :{line in your file where error was found}
3Error messageANThe error message
OR
1Record identifierAN8###ERROR
2Error messageANThe error message


Load report trailer
(occurs once – the last line in the report)

FieldNameTypeValue
1Record identifierAN6###END
2End time of reportAN8HH:MM AM/PM

 

Response File

To retrieve the response file call:

The response file contains a record per enquiry as it is returned from the bank.

File structure
The report is tab delimited with a linefeed character as line terminator.

AVS report header (occurs once at the start of the AVS report)

FieldField nameCD35
Record identifierAN8###BEGIN
File TokenNThe polling id returned in the original response
TypeA6REPORT
Start time of reportAN8HH:MM AM / PM

Key record (occurs once between header and transaction records)

FieldTypeValue
Record identifierAN6###KEY
Field 1AACCOUNTREFERENCE
Field 2ABANKACCOUNTNUMBERVALID
Field 3AIDNUMBERVALID
Field 4ALASTNAMEMATCH
Field 5AACCOUNTACTIVE
Field 6APERIODACTIVE
Field 7AACCEPTSDEBITS
Field 8AACCEPTSCREDITS
Field 9AACCOUNTDORMANT
Field 10AERRORMESSAGE
Field 11ANEXTRA1
Field 12ANEXTRA2
Field 13ANEXTRA3

AVS transaction (occurs multiple times – once per account number)

FieldTypeValue
Account referenceAAcc Ref :{your account reference}
Bank account numberAVALID / INVALID
AVS check numberAVALID / INVALID
(AVS check number matches account number)
Last name match *AVALID / INVALID or N/A
Account active *AVALID / INVALID or N/A
Period active *AY = account active for longer than 6 months
N = account not active
N/A
Accepts debits *AVALID / INVALID or N/A
Accepts credits *AVALID / INVALID or N/A
Account dormant *AVALID / INVALID or N/A
Error messageAAny error message received from the bank
Extra 1AUser defined data which was sent in the request file
Extra 2AUser defined data which was sent in the request file
Extra 3AUser defined data which was sent in the request file

* : Not all banks are able to supply all the data fields. Where fields cannot be populated by the participating bank, they are returned as N/A.

AVS report trailer (occurs once – the last line in the report)

FieldTypeValue
Record identifierAN6###END
End time of reportAN8HH:MM AM / PM


AVS Submit Example

call the BatchFileUpload method equal to a string variable string Request =
    client.BatchFileUpload(ServiceKey, File);

// close client after response is received
client.Close();

switch (Request) {
  case "100":  // Authentication failure
    break;
  case "102":  // Parameter error
    break;
  case "200":  // General code exception.
    break;
  default:  // successfull
    return Request;
}

Request File Upload Report Example

    public string RequestFileUploadReport(string ServiceKey, string FileToken) {
  // initialise client
  NIWS_NIF.NIWS_NIFClient client = new NIWS_NIF.NIWS_NIFClient();

  // call the RequestFileUploadReport method equal to a string variable
  // the same Service Key used for the bactch file upload
  string Request = client.RequestFileUploadReport(ServiceKey, FileToken);

  // close client after response is received
  client.Close();

  // use response to output to UI
  // service will respond with the result of the file upload
  return Request;
}

 

Request AVS Response Example

public string RequestAVSReport(string pServiceKey, string pFileToken) {
  // initialise client
  NIWS_NIF.NIWS_NIFClient client = new NIWS_NIF.NIWS_NIFClient();

  // call the RequestAVSReport method equal to a string variable
  // the same Service Key used for the bactch file upload
  string Request = client.RequestAVSReport(pServiceKey, pFileToken);

  // close client after response is received
  client.Close();

  // use response to output to UI
  // service will respond with the result of the file upload
  return Request;
}

 

Identity Number Verification & Risk Reports

Credit Bureaus verify SA ID numbers against Home Affairs data where it exists.
Risk reports are available from a number of different credit bureaus – see reports available here

Process:
Build the standard input file (NIF) containing the IDV enquiries according to the spec in this document.
Submit the file to Netcash via the BatchFileUpload method.
Retrieve the load report using the RequestFileUploadReport method.
Retrieve the results of the enquiries using the RequestCreditDataReport method.

Accessing the service:

Call the required method in the service https://ws.netcash.co.za/NIWS/niws_nif.svc

Method NameParameters
BatchFileUpload
  • ServiceKey (Risk Services Service Key)
  • File
RequestFileUploadReport
  • ServiceKey (Risk Services Service Key)
  • FileToken (received on file upload if successful)
RequestCreditDataReport
  • ServiceKey (risk service – Service Key)
  • FileToken (the same file token received)

Once you have built the file call:

Input File Structure

The file is a tab delimited text file and each file has the following mandatory records:
H – Header record identifies the upload and passes instructions to the Netcash server to determine the purpose of the file.
K – Key record must follow the header record. The key record describes the transaction records which follow. The format defined in the key record is used to validate the record structure and content.
T – Transaction records follow the key record. The fields in the transaction records must conform to the layout defined in the key.
F – Footer record must be the last record in the file and confirms that the file is complete.

Header record (H)

Every file must contain a header record as the first record in the file.

Structure

Field NameTypeValue
Record IDAH
Service KeyANGUID
VersionN1
InstructionANCD14 or other report type
Batch nameANYour identifier
Action dateNCCYYMMDD
Software Vendor KeyANGUID


Field explanations

Field NameExplanation
Record Id“H” – Identifies the record as a header
Service KeyThe Risk Service – Service Key issued to the account by Netcash
Version“1” – This is the Netcash version of the file specification
InstructionPurpose of the file
(CD14 – IDV enquiry)
See other types available here
Batch nameThe Batch name will be returned in the Load report header to identify the batch result
Action dateToday’s date
Software Vendor KeyThe key issued by Netcash to identify the software origin of transactions. (only used by Netcash ISV‘s else use the default value: 24ade73c-98cf-47b3-99be-cc7b867b3080)


Key Record (K)

The key record is mandatory and must appear in the file between the header record and the transaction records.
The key defines the content, order and length of the transactions records in the file (similar to the column headings in a spreadsheet)
The key lists all the possible fields contained in the subsequent transaction records, even if not every transaction record contains data in all the fields.
While the file is customizable, Netcash recommends listing keys in ascending numerical order for ease of debugging and support.

Structure

K 101 111 113 114 450

 

Transaction Record (T)

There must be at least one transaction record in the file
The transaction records must conform to the order of the fields as described in the key record.
(In the example, the account reference (field id 101) is defined as the first field in the record therefore every transaction record MUST have the account reference as the first field or it will fail validation)
Every transaction record must have the same number of fields as defined in the key record (K). A blank tab (or the default value defined for the field) should replace empty fields.

Structure

FieldTypeValueMandatory
Record IdAT
101ANAccount reference
111NSA ID number
113ASurname
114N1First name
450N2Reason code*
301Extra 1
302Extra 2
303Extra 3


Field explanations

KeyField NameExplanation
101Account referenceThe unique reference for this record
111SA ID number13-digit ID number.
113SurnameNo special characters permitted
114First nameNo special characters permitted
450Reason code*Required by the credit bureau. See the table below
301Extra 1Custom user-defined data*
302Extra 2Custom user-defined data*
303Extra 3Custom user-defined data*

* The content of the “Extra” fields will be included in the downloaded statement data.
This is a list of the reason codes for use in Field 450 when requesting a Risk Services enquiry. The reason code is a mandatory field required by the Credit Bureaus and must be included in every request.

CodeReason nameExplanation
32Credit applicationUndertaking a credit assessment in respect of a consumer, as required by Section 81 (2) of the Act;
33Credit limit managementUndertaking a credit assessment in respect of a consumer, as required by Section 81 (2) of the Act;
34Insurance applicationAssessing an application for insurance, provided that the consent of the consumer has been obtained prior to the report being requested; (Regulation 18(4)(f) of the National Credit Act Regulations)
35Employment checkConsidering a candidate for employment in a position that requires trust and honesty and entails the handling of cash or finances, provided that the consent of the consumer has been obtained prior to the report being requested; OR Verifying educational qualifications and employment provided that the consent of the consumer has been obtained prior to the report being requested; (Regulation 18(4)(g) of the National Credit Act Regulations)
38Fraud, corruption, or theft investigationAn investigation into fraud, corruption or theft, provided that the South African Police Service or any other statutory enforcement agency conducts such an investigation; (Regulation 18(4)(a) of the National Credit Act Regulations)
39Fraud detection and preventionFraud detection and fraud prevention services; (Regulation 18(4)(b) of the National Credit Act Regulations)
40Continuous service provision limitSetting a limit in respect of the supply of goods, services or utilities, provided that the consent of the consumer has been obtained prior to the report being requested; (Regulation 18(4)(e) of the National Credit Act Regulations)
42Unclaimed funds distributionObtaining consumer information to distribute unclaimed funds, including pension funds and insurance claims; (Regulation 18(4)(h) of the National Credit Acts Regulations)
43Financial means assessmentUndertaking a credit assessment in respect of a consumer, as required by Section 81 (2) of the Act;
44Propensity to repayUndertaking an affordability assessment in respect of a consumer, as required by Section 79 of the Act;
48Debt Counseling

Footer record (F)

The footer record indicates that the file is complete. It must be the last record in the file. If the record is not present, the system will fail the file without processing any transaction records.

Structure

Field NameTypeValue
Record IdentifierAF
No of transactionsNA count of the transaction records
Sum of amountsN0
End-of-file indicatorN9999


Input file example

 

H	C74EF975-5429-4663-85FB-2A64CA0FB9EF	1	CD35	Test	AVS	Batch	20180730	24ade73c-98cf-47b3-99be-cc7b867b3080
K	101	126	127	131	132	133	134	135	136	301	302	303
T	Ref001	199102191024089	1	1	NEL	2	051001	0	10011234099	Extra	data	1	Extra	2	Extra	3
F	1	0	9999

 

Output

The web service has a 3-tiered output:

  • The method call is validated
  • The file content is validated and a load report is produced
  • The results of the enquiries are returned in a response file

Method call output

Successful request

If the method call was successful, the web service will process the file and return a file token. Use the file token returned to retrieve the load report.

Example:

20000000.2550236530.0483.2.2

Unsuccessful request

If the method call fails, the web service will return an error code:

CodeDescription
100Authentication failure. Ensure that the Service Key in the method call is correct
102Parameter error. One or more of the parameters in the string is incorrect
200General code exception. Please contact Netcash Technical Support

Load Report

To retrieve the load report call:

Only errors are reported in the file. If all the entries in the file are successfully validated, the Load report header will contain “SUCCESSFUL” and there will be no detail messages.

File structure

The report is tab delimited with a linefeed character as line terminator.

Load report header (occurs once at the start of each load report)

FieldNameTypeValue
1Record identifierAN8###BEGIN
2Batch nameAN{your batch name}
3Result of uploadA13SUCCESSFUL / UNSUCCESSFUL /
SUCCESSFUL WITH ERRORS
4Start time of reportAN8HH:MM AM/PM
5Batch ValueAN15TOTAL OF BATCH
6Action DateAN8CCYYMMDD


Load report message
(occurs multiple times – once per error record)

FieldNameTypeValue
1Account referenceAN58Acc Ref :{your account reference}
2Line numberANLine :{line in your file where error was found}
3Error messageANThe error message
OR
1Record identifierAN8###ERROR
2Error messageANThe error message


Load report trailer
(occurs once – the last line in the report)

FieldNameTypeValue
1Record identifierAN6###END
2End time of reportAN8HH:MM AM/PM

Response file

To retrieve the response file call:

The response file is a base64-encoded PDF file.

Netcash brand guidelines

Please refer to the Netcash brand guidelines here when using any logos, images, icons, labels, descriptions, and references to Netcash in your software.

Testing

See the Testing section for more details. If you require any integration assistance contact our technical support team

Netcash may provide example/sample/demo ‘code snippets’ and/or external links in this Technical Document. Such are for guidance purposes only and may not function on every developer’s system/s. Netcash disclaims any and all liability for the usage of guidance resources provided -and you as the Developer; must accept full responsibility for the usage of such. While every possible effort has been taken to ensure compatibility across multiple system configurations, the contents of this document cannot be guaranteed to work on all systems, with all operating systems -and/or with all system configuration/s.