Introduction

The AFD BankFinder iOS API is easy to use and quick to implement in any Objective C application, while balancing that with providing full flexibility. A static library (libAfdBank.a) provides access to BankFinder functionality once added to your project.

Getting Started

We recommend that for the most rapid development and to help you know where to start that you take a look at our sample program to see how BankFinder is integrated. Once you run that in XCode you will need to copy your licence file to the applications Documents folder on your device (unless using evaluation data). The data file (bacs.afd and bacsi.afd) will also need to be present. To simplify this you can transfer the licence file using the SaveLicense method supplying it a Base64 encoded string and you can obtain the latest data files automatically by using the update functionality if you have an Internet connection.

When you are ready to integrate BankFinder into your own Project simply add the libAfdBank.a library and the AfdBank.h header file to your project. You can then create an instance of the AfdBank class to access AFD BankFinder functionality.

If you are transferring evaluation data files to the device and using the simulator the following code may be helpful, this retrieves the Documents folder into which the licence file should be placed:

NSArray *paths =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString * documentsDirectoryPath = [paths objectAtIndex:0

When deploying evaluation data to an actual device you can save the licence and data files to the Documents folder by any means you wish.

To transfer the file easily by iTunes do the following:

  • In XCode click on your pInfo.plist Supporting File and ensure “Application supports iTunes file sharing.” Is shown as YES. If not add a new Key “UIFileSharingEnabled” and set it to YES.
  • Deploy the application to your device
  • With your device connected in iTunes, select the ‘Apps’ tab, under File Sharing, select your application and then drag and drop the afdbank.lic file to this folder.

For non-evaluation purposes we recommend using the automatic update functionality to obtain the latest data files and using the SaveLicense method to save the licence from a Base64 encoded string.

Using the Sample Application

A sample application demonstrating AFD BankFinder functionality is provided with the SDK.

To use this, load the project in XCode, select the device (or the simulator) to deploy too and then click Run to start the application on the selected device.

For Evaluation data, copy that data to the Documents folder on the device. Do this by copying it to the Documents folder for the simulator or using iTunes File Sharing on a real device (see the previous section “Getting Started”).

For Full data, either transfer the afdbank.lic licence file to the device, or use the SaveLicense method to generate the file from a Base64 string that AFD will have supplied. Then use the CheckForUpdates function to obtain the latest data.

How To...

Lookup or Search for Bank Records

The BankGetFirst and BankGetNext methods allow bank records to quickly be located.

This is typically done as follows:

  • Call the clear method to clear any previous search criteria  Set the appropriate search properties with the criteria to use. (e.g. setSearchLookup to specify a fast-find string to look for, e.g. a sort code)
  • Call BankGetFirst to retrieve the first matching record, specifying the clearing system you wish to use (e.g. AFD_ALL_RECORDS or AFD_UK_ONLY).
  • If BankGetFirst < 0 report an error, otherwise call BankGetNext repeatedly until END_OF_SEARCH is returned to return all matching records.
  • If the return value is SUCCESS, read the required properties from the record returned to obtain the required data. If the return value is RECORD_BREAK no new record data will be returned so continue to call BankGetNext

See the appropriate function and property references for full details of these methods and properties.

An example lookup is as follows:

// Create an instance of the AfdBank object
AFDBank *details = [AfdBank new];
// Set the search criteria
[details clear];
[details setSearchLookup:@”560035”];
// Do the lookup
NSInteger retVal = [details BankGetFirst:AFD_ALL_RECORDS];
// Display any error
if (retVal < 0) {
 UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Error"
message:[details ErrorText: retVal]
delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
 [alert show];
 [alert release];
 return;
}
// Retrieve the results
while (retVal >= 0) {
 if (retVal != AFD_RECORD_BREAK) {
NSString* bankName = [details getBankOwnerBankFullName];
NSString* branchTitle = [details getBankFullBranchTitle];
NSString* sortCode = [details getBankSortCode];
// do something with this data
 }
 retVal = [details BankGetNext];
}

Retrieve Record

The JumpToRecord method enables records to be quickly retrieved again (from a list displayed to the user, for example) using its record key.

This is typically done as follows:

  • Store the result of the getRecordKey function along with the item at the time of original retrieval.
  • Call JumpToRecord with key of the record you wish to retrieve
  • If JumpToRecord < 0 report an error
  • If the return value is SUCCESS, read the required properties from the record returned to obtain the required data.

See the appropriate function and property references for full details of this method and properties.

An example retrieve is as follows, where recordKey is the result of calling getRecordKey for the record you originally retrieved:

// Create an instance of the AfdBank object
AFDBank *details = [AfdBank new];
// Do the lookup
NSInteger retVal = [details JumpToRecord:recordKey];
// Display any error
if (retVal < 0) {
 UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Error"
message:[details ErrorText: retVal]
delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
 [alert show];
 [alert release];
 return;
}
// Retrieve the result
NSString* bankName = [details getBankOwnerBankFullName];
NSString* branchTitle = [details getBankFullBranchTitle];
NSString* sortCode = [details getBankSortCode];
// do something with this data

Validate Account Details

The ValidateAccount method enables bank account details to be validated.

This is typically done as follows:

  • Call the ValidateAccount with the account number and sort code to be validated.
  • If ValidateAccount returns < 0 report an error, otherwise report success

See the ValidateAccount reference for full details of this method.

An example account validation is as follows:

// Create an instance of the AfdBank object
AFDBank *details = [AfdBank new];
// define variables to pass to the ValidateAccount function
NSInteger flags;
NSString* sortCode;
NSString* accountNumber;
NSInteger typeOfAccountCode;
NSString* rollNumber;
NSInteger needRollNUmber;
NSString* iban;
NSString* countryName;
// Set parameters to validate
flags = AFD_ALL_RECORDS;
sortCode = @“774814”;
accountNumber = @“24782346”;
typeOfAccountCode = 0;
rollNUmber = @””;
needRollNUmber = 0;
iban = @””;
countryName = @””;
// Carry out the validation
NSInteger retVal = [details ValidateAccount :&flags: &sortCode:
&accountNumber: &typeOfAccountCode: &rollNumber: &needRollNumber:
&iban: &countryName];
/* Display the result – note that the sortcode and account number may
have been updated if account translation was necessary (e.g. a nonstandard
length account number was supplied) */
If (retVal >= 0) {
 UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Account Details Validated"
message:@”Account Number Valid”
delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
 [alert show];
 [alert release];
}
else {
 UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Error"
message:[details ErrorText: retVal]
delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
 [alert show];
 [alert release];
}

Validate Card Number

The ValidateCard method enables card numbers to be validated.

This is typically done as follows:

  • Call ValidateCard with the card number (and optionally expiry date) to be validated.
  • If ValidateCard returns < 0 report an error, otherwise report the card type

See the ValidateCard reference for full details of this method. An example card validation is as follows:

// Create an instance of the AfdBank object
AFDBank *details = [AfdBank new];
// define variables to pass to the ValidateCard function
NSInteger revisionId;
NSString* cardNumber;
NSString* expiryDate;
// Set parameters to validate
revisionID = 2; // for future proofing
cardNumber = @“ 5155744836273941”;
expiryDate = @“”; // only pass if you wish to do a date range check
on it
// Carry out the validation
NSInteger retVal = [details ValidateCard :&revisionID: &cardNumber:
&expiryDate];
/* Display the result */
If (retVal >= 0) {
 UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Card Details Validated"
message[details CardType:retVal]
delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
 [alert show];
 [alert release];
}
else {
 UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Error"
message:[details ErrorText: retVal]
delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
 [alert show];
 [alert release];
}

Saving the License File (Non-Evaluation Only)

To use full data with AFD BankFinder you will need to purchase a License from AFD. This is provided in two forms, a file afdbank.lic and a Base64 encoded version to make entry or transfer easier.

Either save the afdbank.lic file in the applications documents folder, or use the SaveLicense method to pass the supplied base64 encoded text string to apply the license for you.

The process to do this is typically as follows:

  • Obtain the licence data, e.g. by user entry, a file you supply etc. (Do not hard-code this unless you can update your application each year with the new license details).
  • Call SaveLicense supplying the licence string as a parameter. If this does not return 1 then the string was invalid.
  • Test BankFinder functionality to ensure the licence is valid.

An example of doing this is as follows:

NSInteger applied = [details SaveLicense: licenseString];
if (applied == 1) {
// success
}
else {
// license string not valid
}

Updating Data Files (Non-Evaluation Only)

It is important that BankFinder data is always up to date for correct validation. Data files should be updated weekly to ensure you always have the latest data. If that is impractical, applying an update monthly is the mandatory minimum.

To update the BankFinder data the files bacs.afd and bacsi.afd need to be replaced in the applications Documents folder with the latest versions available from our server.

This can be done automatically using instance functions of the AfdBank class provided for updating.

The process to do this is typically as follows:

  • Call CheckForUpdate. If this does not return 1 then no update is available so abort
  • When convenient call DownloadUpdate to commence downloading the file. This function returns a response immediately so that you can continue using the software whilst the download progresses. If it returns 0 then no update is available, -1 indicates it couldn’t connect to the update server.
  • Check periodically by calling IsDownloadComplete to determine if the download has completed, when it returns 1 the download has completed, <0 indicates an error downloading
  • Once downloaded call ApplyUpdate at an appropriate time to apply and load the new dataset.

An example of doing this is as follows:

NSInteger needUpdate = [details CheckForUpdate];
If (needUpdate == 1) {
startedDownload = [details DownloadUpdate];
if (startedDownload == 1) {
 while (isDownloadComplete == 0) {
 // wait for download to complete – can carry on with other
tasks
 }
}

Function Reference

Clear

Clears the search properties ready to start a new search

-(void) Clear

This function takes no parameters and returns no value.

BankGetFirst

Starts a lookup or search and returns the first record

Prior to calling this function, call Clear and set the appropriate search parameters to specify the fields you wish to search for (e.g. setSearchLookup).

-(NSInteger) BankGetFirst:(NSInteger)flags;

flags is an NSInteger and specifies which clearing systems to use. The possible options are:

  • AFD_ALL_RECORDS - Return all records (both systems)
  • AFD_UK_ONLY - Only return records on the BACS system
  • AFD_IRISH_ONLY - Only return records on the IPSO system

The function returns one of the following values:

  • AFD_SUCCESS - Successful lookup (result returned)
  • AFD_RECORD_BREAK - Search in progress call BankGetNext to get the next result
  • AFD_NOT_FOUND - No matching records found
  • AFD_ERROR_OPENING_FILES - Error opening BankFinder data files
  • AFD_DATA_LICENSE_ERROR - Data Licence Error
  • AFD_NO_SEARCH_DATA- No search parameters were set (or all set to empty strings)

If AFD_SUCCESS is returned you can then call any of the properties to obtain the fields for the returned record, e.g. getBankSortCode.

If AFD_SUCCESS or AFD_RECORD_BREAK is returned you should call BankGetNext to retrieve each subsequent record until AFD_END_OF_SEARCH is returned.

BankGetNext

Continues a lookup or search, returning the next matching record

-(NSInteger) BankGetNext

This function takes no parameters.

The function returns one of the following values:

  • AFD_SUCCESS - Successful lookup (result returned)
  • AFD_RECORD_BREAK - Search in progress call BankGetNext again to get the next result
  • AFD_ERROR_OPENING_FILES - Error opening BankFinder data files
  • AFD_DATA_LICENSE_ERROR - Data Licence Error
  • AFD_END_OF_SEARCH - End of Search Reached

If AFD_SUCCESS is returned you can then call any of the properties to obtain the fields for the returned record, e.g. getBankSortCode.

If AFD_SUCCESS or AFD_RECORD_BREAK is returned you should continue to call BankGetNext to retrieve each subsequent record until AFD_END_OF_SEARCH is returned.

JumpToRecord

Returns data for the record key supplied

-(NSInteger) JumpToRecord:(NSInteger)recordNumber;

The recordNumber parameter is the key of the record to be retrieved. This would have been returned by using the getRecordKey method following a previous call to BankGetFirst or BankGetNext. Note this key should not be stored as it is not maintained across data updates; it is designed for reretrieving a record following a list being provided to the user.

The function returns one of the following values:

  • AFD_SUCCESS - Successful lookup (result returned)
  • AFD_NOT_FOUND - No matching records found (key must be incorrect)
  • AFD_ERROR_OPENING_FILES - Error opening BankFinder data files
  • AFD_DATA_LICENSE_ERROR - Data Licence Error

If AFD_SUCCESS is returned, any of the properties can be called to obtain the fields for the returned record, e.g. getBankSortCode.

ValidateAccount

Used to validate a sortcode and account number (or IBAN) to check it passes validation.

  • -(NSInteger) ValidateAccount:(NSInteger*)flags: (NSString**)sortCode:
  • (NSString*)accountNumber: (NSInteger)typeOfAccountCode:
  • (NSString)rollNumber: (NSInteger*)needRollNumber: (NSString)iban:
  • (NSString**)countryName;

Parameters are all passed by reference and should be initialised to zero or a blank string as appropriate if unused.

flags is an NSInteger and specifies which clearing systems to use. The possible options are:

AFD_ALL_RECORDS - Return all records (both systems)
AFD_UK_ONLY - Only return records on the BACS system
AFD_IRISH_ONLY - Only return records on the IPSO system

On return this value will be one of the following which can be useful when validating through both systems:

  • 1 - On UK Clearing System
  • 2 - On Irish Clearing System
  • 3 - On Both Clearing Systems

sortCode is a NSString used to specify the sort code to be validated. On return it may be updated if account number translation is required, e.g. for non-standard length account numbers. The returned value should be the one submitted to BACS.

accountNumber is a NSString used to specify the account number to be validated. It should be specified along with the sort code. Like the sortcode it may be updated on return if account number translation is required.

typeOfAccountCode is an NSInteger which returns the value required for the type of account code field on BACS. This is normally zero but is required in some cases when account numbers are translated from non-standard lengths.

rollNumber is an NSString which is used to specify the Roll Number for validation. This is required along with the sortcode and account number for credits made to some building society accounts.

needRollNumber is an NSInteger which on return specifies if a roll number is required for the sortcode and account number specified. This will be one of the following values:

  • -1 - No Roll Number required, but one was supplied
  • 0 - No Roll Number required
  • 1 - Roll Number required, but not supplied
  • 2 - Roll Number required and one was supplied

iban is an NSString which can be used in-place of passing a sortcode and accountnumber to validate an International Bank Account Number. If a sortcode and account number is validated it will return the corresponding IBAN were possible.

country is an NSString which returns the country name corresponding to an IBAN passed for validation.

If the function returns a positive value (>=0) this should be taken to be valid.

The function returns one of the following values:

  • AFD_SUCCESS - Successful lookup (result returned)
  • AFD_VALIDATION_NOT_AVAILABLE – Successful, but validation isn’t available for this sortcode.
  • AFD_NOT_FOUND - Sortcode specified not found
  • AFD_ERROR_OPENING_FILES - Error opening BankFinder data files
  • AFD_DATA_LICENSE_ERROR - Data Licence Error
  • AFD_INVALID_SORTCODE - Sort code supplied is invalid
  • AFD_INVALID_ACCOUNT_NUMBER - Account number supplied is invalid
  • AFD_INVALID_ROLL_NUMBER - Roll number supplied is invalid
  • AFD_INVALID_IBAN - Invalid IBAN Supplied
  • AFD_UNRECOGNISED_COUNTRY - IBAN contained an unrecognised country code
  • AFD_IBAN_MISMATCH - Both a sort code, account number and IBAN were passed for validation but these did not match.

ValidateCard

Used to validate a card number to check it passes validation.

-(NSInteger) ValidateCard:(NSInteger*)revisionID: (NSString**)cardNumber:

(NSString**)expiryDate;

revisionID is an NSInteger and should be set to 2. It is provided for future proofing.

cardNumber is a NSString used to specify the card number you wish to validate.

expiryDate is a NSString used to specify the expiry date you wish to validate.

This is optional but if specified a check will be made that the card is in date.

This should be in the format MM/YY.

On return a positive value indicates the card is valid. The return value will indicate the type of card as follows:

  • AFD_MASTERCARD Mastercard
  • AFD_VISA Visa
  • AFD_AMERICAN_EXPRESS American Express
  • AFD_VISA_DEBIT Visa Debit
  • AFD_VISA_UK_ELECTRON UK Electron Card
  • AFD_VISA_PURCHASING Visa Purchasing Card
  • AFD_UK_MAESTRO UK Issued Maestro Card
  • AFD_INTERNATIONAL_MAESTRO Maestro Card
  • AFD_SOLO_AND_MAESTRO Solo and Maestro (combined) Card
  • AFD_JCB JCB Card
  • AFD_CHARITIES_AID_FOUNDATION Charities Aid Foundation Card
  • AFD_MASTERCARD_DEBIT Mastercard Debit Card

A negative return value indicates an error has occurred and could be any of the following:

  • AFD_ERROR_OPENING_FILES - Error opening BankFinder data files
  • AFD_DATA_LICENSE_ERROR - Data Licence Error
  • AFD_INVALID_EXPIRY - Expiry date specified is invalid (should be in format MM/YY)
  • AFD_CARD_EXPIRED - Card has expired
  • AFD_INVALID_CARD_NUMBER - Card Number supplied is invalid
  • AFD_VISA_ATM_ONLY - Visa card is valid for use in an ATM only
  • AFD_UNRECOGNISED_CARD - Card type is unrecognised.

ErrorText

Used to retrieve text to display a friendly error message to go with an error code returned from the search or validation functions (return value less than zero).

-(NSString) ErrorText:(NSInteger)errorCode;

errorCode is an NSInteger and should be set to the return value from a previous function call.

On return a description for the error is returned which can be stored or displayed for the user.

CardText

Used to retrieve text to display or store the card type returned from the ValidateCard function.

-(NSString) CardText:(NSInteger)cardType;

cardType is an NSInteger and should be set to the return value from the ValidateCard function when that function returns a positive value.

On return a description for the card is returned, e.g. Mastercard or Visa Debit.

SaveLicense

Used to save a license file on the device from a Base64 encoded string representation.

-(NSInteger) SaveLicense: (NSString*) base64License;

Base64License is the string containing the base64 encoded license data.

Returns:

  • 0 Successfully applied license
  • -7 Data License Error (string is invalid)

CheckForUpdate

Used to check if an update to the BankFinder data files is available.

-(NSInteger) CheckForUpdate;

Returns:

  • 1 Update Available
  • 0 No Update Available (already on latest data)
  • -1 Error getting data (normally Internet connection issue)

DownloadUpdate

Used to start downloading a data update.

-(NSInteger) DownloadUpdate;

Returns:

  • 1 Update started downloading
  • 0 No Update Available (already on latest data)
  • -1 Error getting data (normally connection issue)

When the function returns data continues to download in the background so your application can continue running. Poll with IsDownloadComplete periodically to determine when the download has finished.

IsDownloadComplete

Used to indicate when a data download has completed downloading

-(NSInteger) IsDownloadComplete;

Returns:

  • 1 Download Complete
  • 0 Download still in progress
  • -1 No download started
  • -2 Download failed (call DownloadUpdate to retry)

ApplyUpdate

Used to update data files following a successful download and loads the new dataset.

-(NSInteger) ApplyUpdate;

Returns:

  • 1 Update Successful
  • 0 Download in progress or failed
  • -1 No update present to apply

Properties Reference

Methods are provided to set properties for searches and to get the resulting record details following a match. These are as follows:

Field Name Description
Search Fields (Any of these can be set prior to a call to BankGetFirst)
setSearchLookup Specify sort code, postcode and fast-find lookup string’s here for lookup operations. No other search fields should be set when this is used.
setSearchSortCode Bank’s Sortcode
setSearchBankBIC Bank’s BIC Code
setSearchBranchBIC Branch BIC Code (should be used in conjunction with Bank BIC)
setSearchPostcode Royal Mail Postcode for correspondence for the bank
setSearchBranchName Branch Name
setSearchBankName Owner Bank Name
setSearchTown Town or Location of the bank
setSearchPhone Phone Number
SearchText Specify text to search for within any of the BankFinder fields
General Bank Fields
getRecordKey Returns a record key (integer) to use for subsequent retrieval of the record with JumpToRecord. Note this should not be stored as it does not persist across data updates.
getBankSortCode Bank’s Sortcode
getBankBIC Bank BIC Code [1]
getBranchBIC Branch BIC Code [1]
getBankSubBranchSuffix Allows a branch to be uniquely identified where there is a cluster of branches sharing the same Sort Code [1]
getBankShortBranchTitle The official title of the branch
getBankCentralBankCountryCode The ISO Country code for beneficiary banks in other countries
getBankSupervisoryBody Indicates the supervisory body for an institution that is an agency in any of the clearings. [2]
getBankDeletedDate Specifies the date the branch was closed if it is not active
getBankBranchTypeIndicator The branch type - Main Branch, Sub or NAB Branch, Linked Branch
getBankMainBranchSortCode Set for linked branches in a cluster. It identifies the main branch for the cluster. For IPSO records this is set to the branch that would handle transactions for this sortcode when the branch has been amalgamated with another.
getBankMajorLocationName Where present helps indicate the physical location of the branch.
getBankMinorLocationName Where present helps indicate the physical location of the branch.
getBankBranchName Defines the actual name or place of the branch
getBankBranchName2 An alternative name or place for the branch where applicable.
getBankFullBranchTitle Extended title for the institution
getBankOwnerBankShortName Short version of the name of the Owning Bank
getBankOwnerBankFullName Full version of the name of the Owning Bank
getBankOwnerBankCode The four digit bank code of the Owning Bank [1]
getBankProperty Bank Postal Address: Property (Building)
getBankStreet Bank Postal Address: Street
getBankLocality Bank Postal Address: Locality
getBankTown Bank Postal Address: Town
getBankCounty Bank Postal Address: County (Optional)
getBankPostcode The Royal Mail Postcode for this address
getBankSTDCode STD Code for the Bank Phone number
getBankPhone Phone number
getBankFaxSTDCode STD Code for the Bank Fax Number
getBankFax Fax number (where held)
getBankCountryIndicator Returns ‘U’ if the record is on the BACS system, or ‘I’ if the record is on IPSO.
getBankSTDCode2 STD Code for a secondary Bank Phone number
getBankPhone2 Secondary Phone number (where held)
getBankList Returns a formatted line for list insertion containing elements of the Bank record. Useful when displaying a list of branch results for the user to choose from.
BACS Related Fields (Not applicable to IPSO Records)
getBACSStatus Indicates the BACS Clearing Status [4]
getBACSLastChange Date on which BACS data was last amended
getBACSClosedClearing Indicates the date the branch is closed in BACS clearing if applicable.
getBACSRedirectedFromFlag Set to R if other branches are redirected to this sort code.
getBACSRedirectedToSortCode This specifies the sort code to which BACS should redirect payments addressed to this sort code if applicable.
getBACSSettlementBankCode BACS Bank Code of the bank that will settle payments for this branch.
getBACSSettlementBankShortName Short form name of the settlement bank
getBACSSettlementBankFullName Full form name of the settlement bank
getBACSSettlementBankSection Numeric data required for BACS to perform its settlement.
getBACSSettlementBankSubSection Numeric data required for BACS to perform its settlement.
getBACSHandlingBankCode BACS Bank Code of the member that will take BACS output from this branch.
getBACSHandlingBankShortName Short form name of the handling bank
getBACSHandlingBankFullName Full form name of the handling bank
getBACSHandlingBankStream Numeric code defining the stream of output within the Handling Bank that will be used or payments to this branch.
getBACSAccountNumbered Set to 1 if bank has transferrable account numbers
getBACSDDIVoucher Set to 1 if Paper Vouchers have to be printed for Direct Debit Instructions.
getBACSDirectDebits Set to 1 if branch accepts Direct Debits
getBACSBankGiroCredits Set to 1 if branch accepts Bank Giro Credits
getBACSBuildingSocietyCredits Set to 1 if branch accepts Building Society Credits.
getBACSDividendInterestPayments Set to 1 if branch accepts Dividend Interest Payments.
getBACSDirectDebitInstructions Set to 1 if branch accepts Direct Debit Instructions.
getBACSUnpaidChequeClaims Set to 1 if branch accepts Unpaid Cheque Claims.
CHAPS Related Fields (Not applicable to IPSO Records)
getCHAPSPStatus Indicates the CHAPS Sterling clearing Status [5]
getCHAPSPStatusDescription Provides a description for the status [5]
getCHAPSPLastChange Date on which CHAPS Sterling data was last amended
getCHAPSPClosedClearing Indicates the date the branch is closed in CHAPS Sterling clearing if applicable.
getCHAPSPSettlementBankCode CHAPS ID of the bank that will settle payments for this branch,
getCHAPSPSettlementBankShortName Short form of the name of the settlement bank
getCHAPSPSettlementBankFullName Full form of the name of the settlement bank
C&CCC Related Fields (Not applicable to IPSO Records)
getCCCCStatus Indicates the C&CCC clearing Status [6]
getCCCCLastChange Date on which C&CCC data was last amended
getCCCCClosedClearing Indicates the date the branch is closed in C&CCC clearing if applicable.
getCCCCSettlementBankCode BACS generated code of the bank that will settle payments for this branch.
getCCCCSettlement BankShortName Short form of the name of the settlement bank
getCCCCSettlement BankFullName Full form of the name of the settlement bank
getCCCCDebitAgencySortCode When the Status field is set to 'D' this specifies where cheque clearing is handled for this branch.
getCCCCReturnIndicator Set if this is the branch that other banks should return paper to. It will only be set for a sort code of a Member.
getCCCCGBNIIndicator Set if this is the branch that other banks should return paper to. It will only be set for a sort code of a Member.
FPS Related Fields (Not applicable to IPSO Records)
getFPSStatus Indicates the FPS clearing Status [7]
getFPSLastChange Date on which FPS data was last amended
getFPSClosedClearing Indicates the date the branch is closed in FPS clearing if applicable.
getFPSRedirectedFromFlag Set to R if other branches are redirected to this sort code.
getFPSRedirectedToSortCode This specifies the sort code to which FPS should redirect payments addressed to this sort code if applicable.
getFPSSettlementBankConnection Two digit connectivity code (will be 01 FPS Member)
getFPSSettlementBankCode Bank Code of the bank that will settle payments for this branch.
getFPSSettlementBankShortName Short form name of the settlement bank
getFPSSettlementBankFullName Full form name of the settlement bank
getFPSHandlingBankConnection Two digit connectivity code
getFPSHandlingBankCode Bank Code of the bank that will handle payments for this branch.
getFPSHandlingBankShortName Short form name of the handling bank
getFPSHandlingBankFullName Full form name of the handling bank
getFPSAccountNumberedFlag Set to 1 if bank has transferrable account numbers
getFPSAgencyType If getFPSStatus is ‘A’ this will be set to either ‘D’ for a direct agency or ‘I’ for an indirect agency.

Notes:

  • [1] Does not apply to records in the IPSO (Irish Payment Services Organisation) clearing system.

  • [2] The supervisory body code can be any of the following:

    • A. Bank of England
    • B. Building Society Commission
    • C. Jersey, Guernsey or Isle of Man authorities
    • D. Other
  • [3] The clearing system property can have one of the following values

    • United Kingdom (BACS) – For branch records for the UK clearing system
    • Ireland (IPSO) – For branch records on the Irish Payment Services Organisation
    • Clearing System
    • Both UK and Irish – Returned by Account Number Validation only when a branch is on both systems.

    Note, that you should only accept account numbers validated on the Irish system if you can clear through both the Irish (IPSO) system as well as the UK (BACS) system.

  • [4] Possible values for the BACS Status fields are as follows:

    • M. Branch of a BACS Member
    • A. Branch of an Agency Bank
    • I. Member of the Irish Clearing Services (IPSO)
    • Does not accept BACS Payments
  • [5] Possible values for the CHAPS Sterling Status fields are as follows:

    • M. Direct Branch of a CHAPS £ Member that Accepts CHAPS £ Payments
    • A. Branch of an Agency Bank that Accepts CHAPS £ Payments
    • I. Indirect Branch of a Member or Agency Bank that Accepts CHAPS £ Payments
    • Does not accept CHAPS £ Payments
  • [6] Possible values for the C&CCC Status fields are as follows:

    • M. Branch of a C&CCC Member
    • F. Full Agency Bank Branch
    • D. Debit Agency Branch Only
    • Not Part of the C&CCC Clearing
  • [7] Possible values for the FPS Status fields are as follows:

    • M. Bank office of FPS member, accepts FPS payments
    • A. Bank office of FPS agency bank, accepts FPS payments
    • N. Bank office does not accept FPS payments.