NAME
Finance::Bank::HSBC - Extract HSBC online banking data.
SYNOPSIS
use Finance::Bank::HSBC;
my @accounts = Finance::Bank::HSBC->extract_details(
bankingid => "IBnnnnnnnnnn",
seccode => "nnnnnn",
dateofbirth => "DDMMYY",
get_statements => 0, # or 1
get_transactions => 0, # or 1
# YYYY-MM-DD
earliest_statement_date => '2006-08-31',
# full account number(s) without spaces, as shown in online banking
# e.g. sortcodeACCOUNTNUMBER e.g. 987654012345678
# can be an array of several or a single value
accounts => [ 'nnnnnnnnnnnnnn' ],
);
foreach (@accounts) {
printf "%25s : %13s / %18s : GBP %8.2f\n",
$_->{name}, $_->{type}, $_->{account}, $_->{balance};
}
DESCRIPTION
This module provides a rudimentary interface to the HSBC online banking
system at "https://www.ebank.hsbc.co.uk/". It provides the ability to
extract account information, transaction history and statements.
DEPENDENCIES
You will need either "Crypt::SSLeay" or "IO::Socket::SSL" installed for
HTTPS support to work with LWP. This module also depends on
"WWW::Mechanize" and "HTML::TokeParser" for screen-scraping.
METHODS
extract_details(%options)
Return an array of account hashes, one for each of your bank accounts.
Below is a list of all the options that this method takes.
generate_qif(\%account)
Generate a very basic QIF file from the account information stored in
\%account. This method requires that the statement information was
extracted for the account data passed in. An example would be:
my @accounts = Finance::Bank::HSBC->check_balance ( %options );
foreach ( @accounts )
{
my $ac = $_->{account};
$ac =~ s/[^0-9]+//g;
open FD, ">" . $ac . ".qif" || die ( "Can't write .qif - ". $@ );
print FD Finance::Bank::HSBC->generate_qif ( $_ );
close FD;
}
bankingid MANDATORY
Your own personal banking ID number. Along the lines of
IBnnnnnnnnnnnn.
seccode MANDATORY
The security code assigned to your bank account. Usually a 6 digit
number, though we support upto 9 digits.
dateofbirth MANDATORY
Your date of birth, in the format DDMMYY.
get_statements OPTIONAL
Defaults to 0. Whether or not the script should extract statement
information for the accounts that are being processed.
get_transactions OPTIONAL
Defaults to 0. Whether or not the script should extract recent
transaction information for the accounts that are being processed.
earliest_statement_date OPTIONAL
When defined the script will extract data from every statement that
has a "statement date" of at least "earliest_statement_date".
accounts OPTIONAL
A single value, or array reference, of account numbers that should be
processed. Only account numbers that are found will be processed, for
obvious reasons. If this option is not present then all accounts that
are listed on the main account overview page will have their details
extracted.
ACCOUNT HASH DATA
The data returned is an array reference of hashes. Each of these hashes
contains information about a particular account, explained below.
name
Name of the account, e.g. "MR M WILSON".
type
Type of the account, e.g. "STUDENT A/C".
account
Account number, as it appears in online banking, i.e. "SORTCODE
ACCOUNT_NUMBER".
balance
The current balance of the account, e.g. "123.45" or "-1.23".
transactions
The transaction key contains an array reference full of hash
references - one for each transaction in the account's recent history.
The transactions are stored from new to old.
date
The date of the transaction, e.g. "JAN 02"
type
The type of the transaction, e.g. "DD".
desc
The description associated with the transaction, e.g. "NSPCC".
paidin
The amount paid in during this transaction, which may be "", e.g.
"10.00".
paidout
The amount paid out during this transaction, which may be "", e.g.
"10.00".
balance
The account balance after this transaction occured, which may not be
present, e.g. "12.00".
statements
The statement key contains a hash reference, where each key is the
date which a statement was issued (YYYY-MM-DD), and each value is an
array reference which contains hash references - one for each
statement entry extracted. The statement entries are stored from new
to old.
date
The date of the transaction, e.g. "JAN 02"
type
The type of the transaction, e.g. "DD".
desc
The description associated with the transaction, e.g. "NSPCC".
paidin
The amount paid in during this transaction, which may be "", e.g.
"10.00".
paidout
The amount paid out during this transaction, which may be "", e.g.
"10.00".
balance
The account balance after this transaction occured, which may not be
present, e.g. "12.00".
SEE ALSO
Finance::Bank::LloydsTSB
This module was used a base for the original version of this module.
See "THANKS", below.
WARNING
This warning is from Simon Cozens' "Finance::Bank::LloydsTSB", and seems
just as apt here.
This is code for online banking, and that means your money, and that
means BE CAREFUL. You are encouraged, nay, expected, to audit the source
of this module yourself to reassure yourself that I am not doing
anything untoward with your banking data. This software is useful to me,
but is provided under NO GUARANTEE, explicit or implied.
THANKS
Simon Cozens for Finance::Bank::LloydsTSB, upon which most of the
original code was based, Andy Lester (and Skud, by continuation) for
WWW::Mechanize, Gisle Aas for HTML::TokeParser, Leon Cowle for updated
login code after HSBC changed their HTML the first time.
A special thanks to Real Programmers Ltd
for sponsoring development of the script in order to bring it up to date
(22/01/2007).
AUTHOR
Matt Wilson .
Original version by Chris Ball "chris@cpan.org".