Hi, These are working for me, feel free to use them at your own risk PHP: class MSSoapClient extends SoapClient { private $namespace; function __doRequest($request, $location, $action, $version) { $request = preg_replace('/<ns1:(\w+)/', '<$1 xmlns="'.$this->namespace.'"', $request, 1); $request = preg_replace('/<ns1:(\w+)/', '<$1', $request); $request = str_replace(array('/ns1:', 'xmlns:ns1="'.$this->namespace.'"'), array('/', ''), $request); // parent call return parent::__doRequest($request, $location, $action, $version); } function setNamespace($sNamespace) { $this->namespace=$sNamespace; } } To make a new customer - I'm only you can extend the function to add other details to the record. PHP: function newKashflowCustomer($soapClient,$idAccount,$name,$address,$town,$postcode,$country,$email){ //returns customer id if ok else 0 $today = date("Y-m-d",mktime()); $customerArray = array( "CustomerID"=>"", "Code"=>"", "Name"=>"$name", "Contact"=>"", "Telephone"=>"", "Mobile"=>"", "Fax"=>"", "Email"=>"$email", "Address1"=>"$address", "Address2"=>"", "Address3"=>"$town", "Address4"=>"$country", "Postcode"=>"$postcode", "Website"=>"", "EC"=>"0", "Notes"=>"", "Source"=>"", "Discount"=>"0", "ShowDiscount"=>"0", "PaymentTerms"=>"0", "ExtraText1"=>"1", "ExtraText2"=>"1", "CheckBox1"=>"1", "CheckBox2"=>"1", "Created"=>"$today", "Updated"=>"$today"); $args = array ("UserName"=>"your username here", "Password"=>"your password here","custr"=>$customerArray); $oResponse = $soapClient->InsertCustomer($args); //handle any errors if($oResponse->Status != "OK") { echo $oResponse->StatusDetail; $return = 0; } else { $id = $oResponse->InsertCustomerResult; $return = $id; } return $return;}