Some of the more involved Lecayla data structures for Ruby Soap implementation @auth_header = { :authenticationHeader => { :user => {:xmlattr_id => login_id, :xmlattr_password => login_password}}} createCustomer: billing_period = { :xmlattr_unit => period, :xmlattr_dayOffset => day } # Period is MONTH, WEEK, YEAR billing_address = { :line1 => bill_line_1, :line2 => bill_line_2, :city => bill_city, :stateCounty => bill_state, :postalCode => bill_zip, :countryCode => bill_country, :phone => bill_phone} credit_card = { :type => bill_cc_type, :number => ccnumber, :holderName => bill_cc_holder_name, # type is VISA, AMEX, MASTERCARD :expiryDate => expire_year+'-'+expire_month, :securityCode => cvv, :billingAddress => billing_address } payment_method = { :xmlattr_name => 'CREDIT CARD (TEST)', :creditCard => credit_card } # name is the method Lecayla sets up for you contact_address = { :line1 => contact_line_1, :line2 => contact_line_2, :city => contact_city, :stateCounty => contact_state, :postalCode => contact_zip, :countryCode => contact_country, :phone => contact_phone } # country code is the ISO formatted 2 letter country code customer_data = { :name => account_company_name, :customerAlias => customer_alias, :emailAddress => account_email, :accountTimeZone => 'CST6CDT', :billingPeriod => billing_period, :vendorDistributionEmails => 'support@something.com', :customerDistributionEmails => account_email, :externalAccountId => client_id, :contactAddress => contact_address, :paymentMethod => payment_method } params = @auth_header.merge(:customerData => customerData) createCustomerContract: customerContract = {:customerContractData => { :customerAlias => customerAlias, :name => name, :productKey => @product_key, :tariffPlanName => product, :duration => { :value => 50, :unit => 'YEAR' }}} params = @auth_header.merge(customerContract) sendUsageEvent: This one completely depends upon what your resources are. In our example it is called Widgets usageEvent = {:xmlattr_type => 'Widgets', :field => [ {:name => 'resourceName', :value => userName}, {:name => 'resourceInstance', :value => id}, {:name => 'customerAlias', :value => customerAlias}, {:name => 'state', :value => status}, ] } params = @auth_header.merge(:productKey => @product_key, :usageEvent => usageEvent)