Ainda assim está um pouco confuso, pois em um momento você fala POST mas no exemplo usa SOAP.   Você deve verificar o arquivo WSDL, pois ele descreve tudo que é necessário passar. Se o XML acima passado é a descrição de um método, indentando-o você encontrará tudo que é necessário:         Para passar os dados, você possui algumas formas, como arrays associativos, standard class ou mapeamento de classes.   Como exemplo vou usar uma standard class, supondo que o nome do método é purchaseService: $purchaseService = new stdClass(); $authentication = new stdClass(); $authentication->username = "usuario"; $authentication->password = "senha"; $authentication->merchantID = "id"; $purchaseService->arg0->authentication = $authentication; /** exemplo compacto de várias compras **/ /** é preferível utilizar \ArrayObject ao invés de array() **/ $purchases = new \ArrayObject(); $purchase = new stdClass(); $purchase->terminalID = "string"; $purchase->merchantTrackID = "string"; $purchase->amount = "string"; $purchase->currencycode = "string"; $purchase->instType = "string"; /** demais configurações **/ /** adiciona-se o tipo especificado como SoapVar **/ $purchases->append(new \SoapVar($purchase , SOAP_ENC_OBJECT , null , null , 'purchase')); /** suponha-se que existe $purchase1 e $purchase2 **/ $purchases->append(new \SoapVar($purchase1 , SOAP_ENC_OBJECT , null , null , 'purchase')); $purchases->append(new \SoapVar($purchase2 , SOAP_ENC_OBJECT , null , null , 'purchase')); $purchaseService->arg0->purchases = new \SoapVar($purchases , SOAP_ENC_OBJECT , null , null , 'purchases'); /** varíavel criada no seu exemplo **/ $return = $client->purchaseService($purchaseService); Perceba que somente no momento em que eu criei uma lista de compras, eu fiz uso de SoapVar, e na hora da autenticação não. Isso se faz necessário para uma melhor interpretação da lista no XML, uma vez que em nenhum momento é definido que é uma lista do objeto "purchase", apenas "purchases".É interessante ler sobre o erro da tag BOGUS