Hi, For those of you interested, here's how to connect via SOAP::Lite: Code: #!/usr/bin/perl #=============================================================================== # # FILE: invoices.pl # # USAGE: ./invoices.pl # # DESCRIPTION: KashFLow API to check and generate invoices # # OPTIONS: --- # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: Gavin Henry (GH), <ghenry@suretecsystems.com> # COMPANY: Suretec Systems Ltd. # VERSION: 1.0 # CREATED: 17/06/09 14:00:32 BST # REVISION: --- #=============================================================================== use strict; use warnings; use Data::Dumper; # By default, SOAP::Lite generates a SOAPAction header with the structure of # [URI]#[method]. We need KashFlow/method, hence we use on_action # use SOAP::Lite on_action => sub { sprintf '%s/%s', @_ }; # Need tomake sure they are definitely strings. my $user = SOAP::Data->type('string')->name( UserName => 'suretec' ); my $pass = SOAP::Data->type('string')->name( Password => 'testing_password' ); my $kfapi = SOAP::Lite->uri('KashFlow') ->proxy('https://secure.kashflow.co.uk/api/service.asmx')->on_fault( sub { my ( $soap, $res ) = @_; die ref $res ? $res->faultdetail : $soap->transport->status, "\n"; } ); my $cust_email = SOAP::Data->type('string') ->name( CustomerEmail => 'enquiries@suretecsystems.com' ); my $cust = $kfapi->GetCustomerByEmail( $user, $pass, $cust_email )->result; print 'Customers name is ' . $cust->{'Name'}, "\n" if $cust;