Web Connector

Your App

serverVersion

Asks your server for its current version

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
        xmlns:tns="http://developer.intuit.com"
        xmlns:types="http://developer.intuit.com/encodedTypes"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <q1:serverVersion xmlns:q1="http://developer.intuit.com/" />
  </soap:Body>
</soap:Envelope>

serverVersionResponse

Your server responds with its version (any string)

<?xml version="1.0" encoding="UTF-8" ?>
<env:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <n1:serverVersionResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        xmlns:n1="urn:ActionWebService">
      <return xsi:type="xsd:string">Your App 1.0</return>
    </n1:serverVersionResponse>
  </env:Body>
</env:Envelope>

clientVersion

The web connector tells your app it's version

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:tns="http://developer.intuit.com"
    xmlns:types="http://developer.intuit.com/encodedTypes"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <q1:clientVersion xmlns:q1="http://developer.intuit.com/">
      <strVersion xsi:type="xsd:string">2.3.0.215</strVersion>
    </q1:clientVersion>
  </soap:Body>
</soap:Envelope>

clientVersionResponse

Returning an empty string to indicate support for this version of the web connector

<?xml version="1.0" encoding="UTF-8" ?>
<env:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <n1:clientVersionResponse
        env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        xmlns:n1="urn:ActionWebService">
    </n1:clientVersionResponse>
  </env:Body>
</env:Envelope>

authenticate

The username is provided by the QWC file you gave them, their password is entered into the web connector

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
	<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
		<q1:authenticate xmlns:q1="http://developer.intuit.com/">
			<strUserName xsi:type="xsd:string">a_username_goes_here</strUserName>
			<strPassword xsi:type="xsd:string">a_password_goes_here</strPassword>
    </q1:authenticate>
	</soap:Body>
</soap:Envelope>

authenticateResponse

We generate and return a session ticket (guid), along with the authentication result (an empty string means "use the current company file and proceed")

<?xml version="1.0" encoding="UTF-8" ?>
<env:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <n1:authenticateResponse
			 env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
			 xmlns:n1="urn:QuickbooksDesktopIntegration">
      <return xmlns:n2="http://schemas.xmlsoap.org/soap/encoding/"
          n2:arrayType="xsd:string[2]"
          xsi:type="n2:Array">
        <item>abcd-qwerf-zxxcv-asdf</item>
        <item></item>
      </return>
    </n1:authenticateResponse>
  </env:Body>
</env:Envelope>

sendRequestXML

The web connector asking your app if there's anything to do, and provides some extra data about the QuickBooks account

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:tns="http://developer.intuit.com"
    xmlns:types="http://developer.intuit.com/encodedTypes"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <q1:sendRequestXML xmlns:q1="http://developer.intuit.com/">
      <ticket xsi:type="xsd:string">abcd-qwerf-zxxcv-asdf
      <!-- strHCPResponse is escaped, and only gets sent along with the first `sendRequestXML` request -->
      <strHCPResponse>
        &lt;?xml version=&quot;1.0&quot;?&gt;
&lt;QBXML&gt;
  &lt;QBXMLMsgsRs&gt;
    &lt;HostQueryRs requestID=&quot;0&quot; statusCode=&quot;0&quot; statusSeverity=&quot;Info&quot; statusMessage=&quot;Status OK&quot;&gt;
      &lt;HostRet&gt;
        &lt;ProductName&gt;QuickBooks Desktop Pro&lt;/ProductName&gt;
        &lt;MajorVersion&gt;30&lt;/MajorVersion&gt;
        &lt;MinorVersion&gt;0&lt;/MinorVersion&gt;
        &lt;Country&gt;CA&lt;/Country&gt;
        &lt;SupportedQBXMLVersion&gt;1.0&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;1.1&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;2.0&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;2.1&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;3.0&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;4.0&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;4.1&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;5.0&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;6.0&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;7.0&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;8.0&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;9.0&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;10.0&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;11.0&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;12.0&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;13.0&lt;/SupportedQBXMLVersion&gt;
        &lt;SupportedQBXMLVersion&gt;14.0&lt;/SupportedQBXMLVersion&gt;
        &lt;IsAutomaticLogin&gt;false&lt;/IsAutomaticLogin&gt;
        &lt;QBFileMode&gt;SingleUser&lt;/QBFileMode&gt;
      &lt;/HostRet&gt;
    &lt;/HostQueryRs&gt;
    &lt;CompanyQueryRs requestID=&quot;1&quot; statusCode=&quot;0&quot; statusSeverity=&quot;Info&quot; statusMessage=&quot;Status OK&quot;&gt;
      &lt;CompanyRet&gt;
        &lt;IsSampleCompany&gt;true&lt;/IsSampleCompany&gt;
        &lt;CompanyName&gt;Pro Hockey School&lt;/CompanyName&gt;
        &lt;LegalCompanyName&gt;Pro Hockey School&lt;/LegalCompanyName&gt;
        &lt;Address&gt;
          &lt;Addr1&gt;4567 Dixon&lt;/Addr1&gt;
          &lt;City&gt;Toronto ON&lt;/City&gt;
          &lt;PostalCode&gt;M4Y 2M8&lt;/PostalCode&gt;
          &lt;Country&gt;Canada&lt;/Country&gt;
        &lt;/Address&gt;
        &lt;AddressBlock&gt;
          &lt;Addr1&gt;4567 Dixon&lt;/Addr1&gt;
          &lt;Addr2&gt;Toronto ON, M4Y 2M8&lt;/Addr2&gt;
        &lt;/AddressBlock&gt;
        &lt;LegalAddress&gt;
          &lt;Addr1&gt;4567 Dixon&lt;/Addr1&gt;
          &lt;City&gt;Toronto&lt;/City&gt;
          &lt;State&gt;ON&lt;/State&gt;
          &lt;PostalCode&gt;M4Y 2M8&lt;/PostalCode&gt;
          &lt;Country&gt;Canada&lt;/Country&gt;
        &lt;/LegalAddress&gt;
        &lt;Phone&gt;416 456-7890&lt;/Phone&gt;
        &lt;Fax&gt;416 789-4561&lt;/Fax&gt;
        &lt;FirstMonthFiscalYear&gt;January&lt;/FirstMonthFiscalYear&gt;
        &lt;FirstMonthIncomeTaxYear&gt;January&lt;/FirstMonthIncomeTaxYear&gt;
        &lt;CompanyType&gt;(No Type)&lt;/CompanyType&gt;
        &lt;TaxForm&gt;OtherOrNone&lt;/TaxForm&gt;
        &lt;SubscribedServices&gt;
          &lt;Service&gt;
            &lt;Name&gt;QuickBooks Online Banking&lt;/Name&gt;
            &lt;Domain&gt;banking.qb&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;QuickBooks Online Billing&lt;/Name&gt;
            &lt;Domain&gt;billing.qb&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;QuickBooks Online Billing Level 1 Service&lt;/Name&gt;
            &lt;Domain&gt;qbob1.qbn&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;QuickBooks Online Billing Level 2 Service&lt;/Name&gt;
            &lt;Domain&gt;qbob2.qbn&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;QuickBooks Online Billing Payment Service&lt;/Name&gt;
            &lt;Domain&gt;qbobpay.qbn&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;QuickBooks Bill Payment&lt;/Name&gt;
            &lt;Domain&gt;billpay.qb&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;QuickBooks Online Billing Paper Mailing Service&lt;/Name&gt;
            &lt;Domain&gt;qbobpaper.qbn&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;QuickBooks Payroll Service&lt;/Name&gt;
            &lt;Domain&gt;payroll.qb&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;QuickBooks Basic Payroll Service&lt;/Name&gt;
            &lt;Domain&gt;payrollbsc.qb&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;QuickBooks Basic Disk Payroll Service&lt;/Name&gt;
            &lt;Domain&gt;payrollbscdisk.qb&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;QuickBooks Deluxe Payroll Service&lt;/Name&gt;
            &lt;Domain&gt;payrolldlx.qb&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;QuickBooks Premier Payroll Service&lt;/Name&gt;
            &lt;Domain&gt;payrollprm.qb&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;Basic Plus Federal&lt;/Name&gt;
            &lt;Domain&gt;basic_plus_fed.qb&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;Basic Plus Federal and State&lt;/Name&gt;
            &lt;Domain&gt;basic_plus_fed_state.qb&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;Basic Plus Direct Deposit&lt;/Name&gt;
            &lt;Domain&gt;basic_plus_dd.qb&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
          &lt;Service&gt;
            &lt;Name&gt;Merchant Account Service&lt;/Name&gt;
            &lt;Domain&gt;mas.qbn&lt;/Domain&gt;
            &lt;ServiceStatus&gt;Never&lt;/ServiceStatus&gt;
          &lt;/Service&gt;
        &lt;/SubscribedServices&gt;
        &lt;AccountantCopy&gt;
          &lt;AccountantCopyExists&gt;false&lt;/AccountantCopyExists&gt;
        &lt;/AccountantCopy&gt;
        &lt;DataExtRet&gt;
          &lt;OwnerID&gt;{57F3B9B1-86F1-4fcc-B1EE-566DE1813D20}&lt;/OwnerID&gt;
          &lt;DataExtName&gt;AppLock&lt;/DataExtName&gt;
          &lt;DataExtType&gt;STR255TYPE&lt;/DataExtType&gt;
          &lt;DataExtValue&gt;LOCKED:DESKTOP-DC96AO8:637506041579451907&lt;/DataExtValue&gt;
        &lt;/DataExtRet&gt;
        &lt;DataExtRet&gt;
          &lt;OwnerID&gt;{57F3B9B1-86F1-4fcc-B1EE-566DE1813D20}&lt;/OwnerID&gt;
          &lt;DataExtName&gt;FileID&lt;/DataExtName&gt;
          &lt;DataExtType&gt;STR255TYPE&lt;/DataExtType&gt;
          &lt;DataExtValue&gt;{90A44FB5-33D9-4815-AC85-BC87A7E7D1EB}&lt;/DataExtValue&gt;
        &lt;/DataExtRet&gt;
      &lt;/CompanyRet&gt;
    &lt;/CompanyQueryRs&gt;
    &lt;PreferencesQueryRs requestID=&quot;2&quot; statusCode=&quot;0&quot; statusSeverity=&quot;Info&quot; statusMessage=&quot;Status OK&quot;&gt;
      &lt;PreferencesRet&gt;
        &lt;AccountingPreferences&gt;
          &lt;IsUsingAccountNumbers&gt;false&lt;/IsUsingAccountNumbers&gt;
          &lt;IsRequiringAccounts&gt;true&lt;/IsRequiringAccounts&gt;
          &lt;IsUsingClassTracking&gt;true&lt;/IsUsingClassTracking&gt;
          &lt;AssignClassesTo&gt;None&lt;/AssignClassesTo&gt;
          &lt;IsUsingAuditTrail&gt;true&lt;/IsUsingAuditTrail&gt;
          &lt;IsAssigningJournalEntryNumbers&gt;true&lt;/IsAssigningJournalEntryNumbers&gt;
          &lt;ClosingDate&gt;2008-09-30&lt;/ClosingDate&gt;
        &lt;/AccountingPreferences&gt;
        &lt;FinanceChargePreferences&gt;
          &lt;AnnualInterestRate&gt;0.00&lt;/AnnualInterestRate&gt;
          &lt;MinFinanceCharge&gt;0.00&lt;/MinFinanceCharge&gt;
          &lt;GracePeriod&gt;0&lt;/GracePeriod&gt;
          &lt;IsAssessingForOverdueCharges&gt;false&lt;/IsAssessingForOverdueCharges&gt;
          &lt;CalculateChargesFrom&gt;DueDate&lt;/CalculateChargesFrom&gt;
          &lt;IsMarkedToBePrinted&gt;false&lt;/IsMarkedToBePrinted&gt;
        &lt;/FinanceChargePreferences&gt;
        &lt;JobsAndEstimatesPreferences&gt;
          &lt;IsUsingEstimates&gt;true&lt;/IsUsingEstimates&gt;
          &lt;IsUsingProgressInvoicing&gt;true&lt;/IsUsingProgressInvoicing&gt;
          &lt;IsPrintingItemsWithZeroAmounts&gt;false&lt;/IsPrintingItemsWithZeroAmounts&gt;
        &lt;/JobsAndEstimatesPreferences&gt;
        &lt;MultiCurrencyPreferences&gt;
          &lt;IsMultiCurrencyOn&gt;false&lt;/IsMultiCurrencyOn&gt;
        &lt;/MultiCurrencyPreferences&gt;
        &lt;MultiLocationInventoryPreferences&gt;
          &lt;IsMultiLocationInventoryAvailable&gt;false&lt;/IsMultiLocationInventoryAvailable&gt;
          &lt;IsMultiLocationInventoryEnabled&gt;false&lt;/IsMultiLocationInventoryEnabled&gt;
        &lt;/MultiLocationInventoryPreferences&gt;
        &lt;PurchasesAndVendorsPreferences&gt;
          &lt;IsUsingInventory&gt;true&lt;/IsUsingInventory&gt;
          &lt;DaysBillsAreDue&gt;10&lt;/DaysBillsAreDue&gt;
          &lt;IsAutomaticallyUsingDiscounts&gt;true&lt;/IsAutomaticallyUsingDiscounts&gt;
          &lt;DefaultDiscountAccountRef&gt;
            &lt;ListID&gt;2C0000-1199214000&lt;/ListID&gt;
            &lt;FullName&gt;Vendor Discounts&lt;/FullName&gt;
          &lt;/DefaultDiscountAccountRef&gt;
        &lt;/PurchasesAndVendorsPreferences&gt;
        &lt;ReportsPreferences&gt;
          &lt;AgingReportBasis&gt;AgeFromDueDate&lt;/AgingReportBasis&gt;
          &lt;SummaryReportBasis&gt;Accrual&lt;/SummaryReportBasis&gt;
        &lt;/ReportsPreferences&gt;
        &lt;SalesAndCustomersPreferences&gt;
          &lt;IsTrackingReimbursedExpensesAsIncome&gt;false&lt;/IsTrackingReimbursedExpensesAsIncome&gt;
          &lt;IsAutoApplyingPayments&gt;true&lt;/IsAutoApplyingPayments&gt;
          &lt;PriceLevels&gt;
            &lt;IsUsingPriceLevels&gt;true&lt;/IsUsingPriceLevels&gt;
            &lt;IsRoundingSalesPriceUp&gt;true&lt;/IsRoundingSalesPriceUp&gt;
          &lt;/PriceLevels&gt;
        &lt;/SalesAndCustomersPreferences&gt;
        &lt;SalesTaxPreferences&gt;
          &lt;PaySalesTax&gt;Annually&lt;/PaySalesTax&gt;
          &lt;DefaultTaxableSalesTaxCodeRef&gt;
            &lt;ListID&gt;80000006-1193777349&lt;/ListID&gt;
            &lt;FullName&gt;.&lt;/FullName&gt;
          &lt;/DefaultTaxableSalesTaxCodeRef&gt;
          &lt;DefaultNonTaxableSalesTaxCodeRef&gt;
            &lt;ListID&gt;80000005-1193777349&lt;/ListID&gt;
            &lt;FullName&gt;E&lt;/FullName&gt;
          &lt;/DefaultNonTaxableSalesTaxCodeRef&gt;
          &lt;IsUsingVendorTaxCode&gt;false&lt;/IsUsingVendorTaxCode&gt;
          &lt;IsUsingCustomerTaxCode&gt;false&lt;/IsUsingCustomerTaxCode&gt;
          &lt;IsUsingAmountsIncludeTax&gt;false&lt;/IsUsingAmountsIncludeTax&gt;
        &lt;/SalesTaxPreferences&gt;
        &lt;TimeTrackingPreferences&gt;
          &lt;FirstDayOfWeek&gt;Monday&lt;/FirstDayOfWeek&gt;
        &lt;/TimeTrackingPreferences&gt;
        &lt;CurrentAppAccessRights&gt;
          &lt;IsAutomaticLoginAllowed&gt;true&lt;/IsAutomaticLoginAllowed&gt;
          &lt;AutomaticLoginUserName&gt;Admin&lt;/AutomaticLoginUserName&gt;
          &lt;IsPersonalDataAccessAllowed&gt;false&lt;/IsPersonalDataAccessAllowed&gt;
        &lt;/CurrentAppAccessRights&gt;
        &lt;ItemsAndInventoryPreferences&gt;
          &lt;EnhancedInventoryReceivingEnabled&gt;false&lt;/EnhancedInventoryReceivingEnabled&gt;
          &lt;IsTrackingSerialOrLotNumber&gt;None&lt;/IsTrackingSerialOrLotNumber&gt;
          &lt;FIFOEnabled&gt;false&lt;/FIFOEnabled&gt;
          &lt;IsRSBEnabled&gt;false&lt;/IsRSBEnabled&gt;
          &lt;IsBarcodeEnabled&gt;false&lt;/IsBarcodeEnabled&gt;
        &lt;/ItemsAndInventoryPreferences&gt;
      &lt;/PreferencesRet&gt;
    &lt;/PreferencesQueryRs&gt;
  &lt;/QBXMLMsgsRs&gt;
&lt;/QBXML&gt;

      </strHCPResponse>
      <strCompanyFileName xsi:type="xsd:string">C:\\Users\\Garrett Lancaster\\Documents\\QB files\\Sample_Pro.QBW</strCompanyFileName>
      <qbXMLCountry xsi:type="xsd:string">US</qbXMLCountry>
      <qbXMLMajorVers xsi:type="xsd:int">14</qbXMLMajorVers>
      <qbXMLMinorVers xsi:type="xsd:int">0</qbXMLMinorVers>
    </q1:sendRequestXML>
  </soap:Body>
</soap:Envelope>

sendRequestXMLResponse

We respond with the QBXML we want the web connector to process

<?xml version="1.0" encoding="UTF-8" ?>
<env:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <n1:sendRequestXMLResponse
        env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        xmlns:n1="urn:QuickbooksDesktopIntegration">
      <return xsi:type="xsd:string">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;?qbxml version=&quot;16.0&quot;?&gt;
&lt;QBXML&gt;
  &lt;QBXMLMsgsRq onError=&quot;stopOnError&quot;&gt;
    &lt;CustomerAddRq&gt;
      &lt;CustomerAdd&gt;
        &lt;Name&gt;&lt;/Name&gt;
        &lt;CompanyName&gt;Acme Corp&lt;/CompanyName&gt;
        &lt;FirstName&gt;John&lt;/FirstName&gt;
        &lt;MiddleName&gt;Q.&lt;/MiddleName&gt;
        &lt;LastName&gt;Public&lt;/LastName&gt;
        &lt;JobTitle&gt;CEO&lt;/JobTitle&gt;
        &lt;BillAddress&gt;
          &lt;Addr1&gt;123 Main St.&lt;/Addr1&gt;
          &lt;Addr2&gt;Suite 100&lt;/Addr2&gt;

          &lt;City&gt;Austin&lt;/City&gt;
          &lt;State&gt;TX&lt;/State&gt;
          &lt;PostalCode&gt;78701&lt;/PostalCode&gt;
          &lt;Country&gt;USA&lt;/Country&gt;
        &lt;/BillAddress&gt;

        &lt;Phone&gt;512-555-1212&lt;/Phone&gt;

        &lt;Fax&gt;512-555-1212&lt;/Fax&gt;
        &lt;Email&gt;foo@acmecorp.com&lt;/Email&gt;
      &lt;/CustomerAdd&gt;
    &lt;/CustomerAddRq&gt;
  &lt;/QBXMLMsgsRq&gt;
&lt;/QBXML&gt;
</return>
    </n1:sendRequestXMLResponse>
  </env:Body>
</env:Envelope>

receiveResponseXML

The web connector sends the response back to your app

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:tns="http://developer.intuit.com"
    xmlns:types="http://developer.intuit.com/encodedTypes"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <q1:receiveResponseXML xmlns:q1="http://developer.intuit.com/">
      <ticket xsi:type="xsd:string">abcd-qwerf-zxxcv-asdf</ticket>
      <response>
        &lt;?xml version=&quot;1.0&quot;?&gt;
&lt;?qbxml version=&quot;16.0&quot;?&gt;
&lt;QBXML&gt;
&lt;CustomerAddRs statusCode=&quot;INTTYPE&quot; statusSeverity=&quot;STRTYPE&quot; statusMessage=&quot;STRTYPE&quot;&gt;
&lt;CustomerRet&gt; &lt;!-- optional --&gt;
&lt;ListID &gt;IDTYPE&lt;/ListID&gt; &lt;!-- required --&gt;
&lt;TimeCreated &gt;DATETIMETYPE&lt;/TimeCreated&gt; &lt;!-- required --&gt;
&lt;TimeModified &gt;DATETIMETYPE&lt;/TimeModified&gt; &lt;!-- required --&gt;
&lt;EditSequence &gt;STRTYPE&lt;/EditSequence&gt; &lt;!-- required --&gt;
&lt;Name &gt;STRTYPE&lt;/Name&gt; &lt;!-- required --&gt;
&lt;FullName &gt;STRTYPE&lt;/FullName&gt; &lt;!-- optional --&gt;
&lt;IsActive &gt;BOOLTYPE&lt;/IsActive&gt; &lt;!-- optional --&gt;
&lt;Sublevel &gt;INTTYPE&lt;/Sublevel&gt; &lt;!-- optional --&gt;
&lt;CompanyName &gt;STRTYPE&lt;/CompanyName&gt; &lt;!-- optional --&gt;
&lt;Salutation &gt;STRTYPE&lt;/Salutation&gt; &lt;!-- optional --&gt;
&lt;FirstName &gt;STRTYPE&lt;/FirstName&gt; &lt;!-- optional --&gt;
&lt;MiddleName &gt;STRTYPE&lt;/MiddleName&gt; &lt;!-- optional --&gt;
&lt;LastName &gt;STRTYPE&lt;/LastName&gt; &lt;!-- optional --&gt;
&lt;JobTitle &gt;STRTYPE&lt;/JobTitle&gt; &lt;!-- optional --&gt;
&lt;BillAddress&gt; &lt;!-- optional --&gt;
        &lt;Addr1 &gt;STRTYPE&lt;/Addr1&gt; &lt;!-- optional --&gt;
        &lt;Addr2 &gt;STRTYPE&lt;/Addr2&gt; &lt;!-- optional --&gt;
        &lt;Addr3 &gt;STRTYPE&lt;/Addr3&gt; &lt;!-- optional --&gt;
        &lt;Addr4 &gt;STRTYPE&lt;/Addr4&gt; &lt;!-- optional --&gt;
        &lt;Addr5 &gt;STRTYPE&lt;/Addr5&gt; &lt;!-- optional --&gt;
        &lt;City &gt;STRTYPE&lt;/City&gt; &lt;!-- optional --&gt;
        &lt;State &gt;STRTYPE&lt;/State&gt; &lt;!-- optional --&gt;
        &lt;PostalCode &gt;STRTYPE&lt;/PostalCode&gt; &lt;!-- optional --&gt;
        &lt;Country &gt;STRTYPE&lt;/Country&gt; &lt;!-- optional --&gt;
        &lt;Note &gt;STRTYPE&lt;/Note&gt; &lt;!-- optional --&gt;
&lt;/BillAddress&gt;
&lt;BillAddressBlock&gt; &lt;!-- optional --&gt;
        &lt;Addr1 &gt;STRTYPE&lt;/Addr1&gt; &lt;!-- optional --&gt;
        &lt;Addr2 &gt;STRTYPE&lt;/Addr2&gt; &lt;!-- optional --&gt;
        &lt;Addr3 &gt;STRTYPE&lt;/Addr3&gt; &lt;!-- optional --&gt;
        &lt;Addr4 &gt;STRTYPE&lt;/Addr4&gt; &lt;!-- optional --&gt;
        &lt;Addr5 &gt;STRTYPE&lt;/Addr5&gt; &lt;!-- optional --&gt;
&lt;/BillAddressBlock&gt;
&lt;ShipAddress&gt; &lt;!-- optional --&gt;
        &lt;Addr1 &gt;STRTYPE&lt;/Addr1&gt; &lt;!-- optional --&gt;
        &lt;Addr2 &gt;STRTYPE&lt;/Addr2&gt; &lt;!-- optional --&gt;
        &lt;Addr3 &gt;STRTYPE&lt;/Addr3&gt; &lt;!-- optional --&gt;
        &lt;Addr4 &gt;STRTYPE&lt;/Addr4&gt; &lt;!-- optional --&gt;
        &lt;Addr5 &gt;STRTYPE&lt;/Addr5&gt; &lt;!-- optional --&gt;
        &lt;City &gt;STRTYPE&lt;/City&gt; &lt;!-- optional --&gt;
        &lt;State &gt;STRTYPE&lt;/State&gt; &lt;!-- optional --&gt;
        &lt;PostalCode &gt;STRTYPE&lt;/PostalCode&gt; &lt;!-- optional --&gt;
        &lt;Country &gt;STRTYPE&lt;/Country&gt; &lt;!-- optional --&gt;
        &lt;Note &gt;STRTYPE&lt;/Note&gt; &lt;!-- optional --&gt;
&lt;/ShipAddress&gt;
&lt;ShipAddressBlock&gt; &lt;!-- optional --&gt;
        &lt;Addr1 &gt;STRTYPE&lt;/Addr1&gt; &lt;!-- optional --&gt;
        &lt;Addr2 &gt;STRTYPE&lt;/Addr2&gt; &lt;!-- optional --&gt;
        &lt;Addr3 &gt;STRTYPE&lt;/Addr3&gt; &lt;!-- optional --&gt;
        &lt;Addr4 &gt;STRTYPE&lt;/Addr4&gt; &lt;!-- optional --&gt;
        &lt;Addr5 &gt;STRTYPE&lt;/Addr5&gt; &lt;!-- optional --&gt;
&lt;/ShipAddressBlock&gt;
&lt;Phone &gt;STRTYPE&lt;/Phone&gt; &lt;!-- optional --&gt;
&lt;AltPhone &gt;STRTYPE&lt;/AltPhone&gt; &lt;!-- optional --&gt;
&lt;Fax &gt;STRTYPE&lt;/Fax&gt; &lt;!-- optional --&gt;
&lt;Email &gt;STRTYPE&lt;/Email&gt; &lt;!-- optional --&gt;
&lt;Contact &gt;STRTYPE&lt;/Contact&gt; &lt;!-- optional --&gt;
&lt;AltContact &gt;STRTYPE&lt;/AltContact&gt; &lt;!-- optional --&gt;
&lt;CustomerTypeRef&gt; &lt;!-- optional --&gt;
        &lt;ListID &gt;IDTYPE&lt;/ListID&gt; &lt;!-- optional --&gt;
        &lt;FullName &gt;STRTYPE&lt;/FullName&gt; &lt;!-- optional --&gt;
&lt;/CustomerTypeRef&gt;
&lt;TermsRef&gt; &lt;!-- optional --&gt;
        &lt;ListID &gt;IDTYPE&lt;/ListID&gt; &lt;!-- optional --&gt;
        &lt;FullName &gt;STRTYPE&lt;/FullName&gt; &lt;!-- optional --&gt;
&lt;/TermsRef&gt;
&lt;SalesRepRef&gt; &lt;!-- optional --&gt;
        &lt;ListID &gt;IDTYPE&lt;/ListID&gt; &lt;!-- optional --&gt;
        &lt;FullName &gt;STRTYPE&lt;/FullName&gt; &lt;!-- optional --&gt;
&lt;/SalesRepRef&gt;

      </response>
    </q1:receiveResponseXML>
  </soap:Body>
</soap:Envelope>

receiveResponseXMLResponse

We respond with 100 to indicate we're done

<env:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                  xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <n1:receiveResponseXMLResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        xmlns:n1="urn:QuickbooksDesktopIntegration">
      <return xsi:type="xsd:int">100</return>
    </n1:receiveResponseXMLResponse>
  </env:Body>
</env:Envelope>

closeConnection

The web connector is done, so it closes the connection

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:tns="http://developer.intuit.com"
    xmlns:types="http://developer.intuit.com/encodedTypes"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <q1:closeConnection xmlns:q1="http://developer.intuit.com/">
      <strTicket xsi:type="xsd:string">abcd-qwerf-zxxcv-asdf</strTicket>
    </q1:closeConnection>
  </soap:Body>
</soap:Envelope>

closeConnectionResponse

We respond with an arbitrary string to indicate we are done

<env:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns:xsd="http://www.w3.org/2001/XMLSchema"
              xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <n1:closeConnectionResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        xmlns:n1="urn:ActionWebService">
      <return xsi:type="xsd:string">OK</return>
    </n1:closeConnectionResponse>
  </env:Body>
</env:Envelope>