NAME

Finance::Bank::CooperativeUKPersonal - Access to UK Cooperative personal bank accounts

SYNOPSIS

  use Finance::Bank::CooperativeUKPersonal

  my $conf = {
	sortCode => $sortCode,            # numeric, without dashes,
	accountNumber => $accountNumber, 
	securityCode => $securityCode,
	memorableDate => $memorableDate,  # dd/mm/yyyy
	memorableName => $memorableName,
	firstSchool => $firstSchool,
	lastSchool => $lastSchool,
	birthPlace => $birthplace
  };
  
  # Connect to bank & login
  my $bank = Finance::Bank::CooperativeUKPersonal->new($conf);
  $bank->connect();
  
  # get account summary (all accounts table)
  my $accounts = $bank->accountSummary();
  
  # get available statements for an account
  # includes dated statements & recent items statement
  my $statements = $bank->availableStatements( $accounts->[0] );

  # fetch a statement - dated or recent items
  my $transactions = $bank->statement( $statements->[0] );

DESCRIPTION

This module provides an interface to the Co-operative UK personal online banking website, with access to recent transactions and statements.

METHODS

new, connect - combine to start your session

  my $conf = {
	sortCode => $sortCode,            # numeric, without dashes,
	accountNumber => $accountNumber, 
	securityCode => $securityCode,
	memorableDate => $memorableDate,  # dd/mm/yyyy
	memorableName => $memorableName,
	firstSchool => $firstSchool,
	lastSchool => $lastSchool,
	birthPlace => $birthplace
  };
  
  # Connect to bank & login
  my $bank = Finance::Bank::CooperativeUKPersonal->new($conf);
  $bank->connect();

new() configures your connection, connect() connects to the co-op website. The co-op expires sessions after 10 minutes of inactivity, so connect() can be used at any point to reconnect.

accountSummary - summary listing of bank accounts

Parses the initial account summary table shown after logging into the Co-Op bank website. Returns a reference to an array of account hashrefs. e.g.

$accounts = $bank->accountSummary();

returns

$accounts = [
  {
      'accountNumber' => $accountNumber,
      'sortCode' => $sortCode,
      'href' => $href,
      'name' => $name,
      'availableBalance' => $balance
  }
];

If your balance is in credit, the co-op appends 'CR' to the available balance. I do not know how they indicate overdrawn accounts.

availableStatements - list of availalable statements for an account

Returns a list of available statements for an account as a reference to an array of hashrefs.

$statements = $bank->availableStatements($accounts->[0]);

returns

$statements = [
  {
      'name' => $name, 
      'href' => $href
  }
];

In the returned hashref, 'name' is either 'Recent Items' or the statement's issued date in dd/mm/yyyy format.

statement - list of transaction rows in a statement

Returns a list of transactions in a statement as a reference to an array of hashrefs.

$transactions = $bank->statement($statements->[1]);

returns

$transactions = [
 	{
      'reference' => $referenceString,
      'date' => $date,  # 'dd/mm/yyyy',
      'withdrawal' => $withdrawal
      'deposit' => $deposit,
      'balance' => $balance  # not present in recent items statement
   },
];

If your balance is in credit, the co-op appends 'CR' to the available balance. I do not know how they indicate overdrawn accounts.

CAVEATS

As this module accesses your bank account, you should ensure you store your configuration data and any received transaction information in a secure place.

AUTHOR

Stephen Patterson <steve@patter.me.uk>