The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

ACH::Builder - Tools for Building ACH (Automated Clearing House) Files

SYNOPSIS

  use ACH::Builder;
  
  my $ach = ACH::Builder->new( { 

      # (required) Company Identification, Fed Tax ID
      company_id        => '11-111111',
      
      # (required) This will appear on the receiver's bank statement
      company_name      => 'MY COMPANY',
       
      # (required) a brief description of the nature of the 
      # payments this will apper on the receiver's bank statement
      entry_description => 'TV-TELCOM',

      # (required)
      destination       => '123123123',
      destination_name  => 'COMMERCE BANK',
      
      # (required)
      origin            => '12312311',
      origin_name       => 'MYCOMPANY',
      
      # (optional)
      company_note      => 'BILL',
      
      # (optional)
      effective_date    => 'yymmdd',
        
  } );

  # I've included some sample detail records 
  my @samples = $ach->sample_detail_records();
  
  # build file header record
  $ach->make_file_header_record();

  # build batch for web entries
  $ach->set_entry_class_code( 'WEB' );
  $ach->make_batch( \@samples );

  # build batch for telephone entries
  $ach->set_entry_class_code( 'TEL' );
  $ach->make_batch( \@samples );

  # build file control record
  $ach->make_file_control_record();

  print $ach->to_string;
  

DESCRIPTION

ACH File Structure

This module is tool to help construct ACH files, which are fixed width formatted files accpected by most banks. ACH (Automated Clearing House) is an electronic banking network operating system in the United States. ACH processes large volumes of both credit and debit transactions which are originated in batches. Rules and regulations governing the ACH network are established by the National Automated Clearing House Association (NACHA) and the Federal Reserve (Fed).

ACH credit transfers include direct deposit payroll payments and payments to contractors and vendors. ACH debit transfers include consumer payments on insurance premiums, mortgage loans, and other kinds of bills.

DETAIL RECORD FORMAT

Detail Record Format

     { customer_name    => 'JOHN SMITH',  
       customer_acct    => '0000-0111111', 
       amount           => '2501',
       routing_number   => '010010101'
       bank_account     => '103030030' }

METHODS

new (constructor)

params: Hash Ref { company_id => '...', company_note ... }

** set methods are also provided for these parameters

     service_class_code
     destination_name 
     origination_name 
     destination   
     origination      
     entry_class_code
     entry_description
     company_id  
     company_name     
     company_note
     file_id_modifier
     record_size
     blocking_factor
     format_code
make_file_header_record

Called to create the File Header record. This should be called before "make_batch".

make_file_control_record

Called to create the File Control Record. This should be called after "make_batch".

make_batch

params: AoH Records

Called the create and stash a batch of ACH entries. This method requires an AoH records. See "sample_detail_records" from record specifications.

format_rules

Hash of ACH format rules.

sample_detail_records

AoH of sample detail records

Detail Record Format

     { customer_name    => 'JOHN SMITH',  
       customer_acct    => '0000-0111111', 
       amount           => '2501',
       routing_number   => '010010101'
       bank_account     => '103030030' }
to_string

returns the built ACH file

METHOD Setters

set_service_class_code
set_destination_name
set_destination
set_origination_name
set_origination
set_entry_class_code
set_entry_description
set_company_id
set_company_name
set_company_note
set_file_id_modifier
set_record_size
set_format_code

NOTES

ACH File structure.

 File Header 
   Batch Header
     Entries
   Batch Control
   Batch Header
     Entries
   Batch Control
  File Control

LIMITATIONS

Only supports the ACH format.

AUTHOR

Tim Keefer <tkeefer@gmail.com>

COPYRIGHT

Tim Keefer