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 <[email protected]>