The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
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>