We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
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>
<?xml version="1.0"?>
<QBXML>
<QBXMLMsgsRs>
<HostQueryRs requestID="0" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<HostRet>
<ProductName>QuickBooks Desktop Pro</ProductName>
<MajorVersion>30</MajorVersion>
<MinorVersion>0</MinorVersion>
<Country>CA</Country>
<SupportedQBXMLVersion>1.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>1.1</SupportedQBXMLVersion>
<SupportedQBXMLVersion>2.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>2.1</SupportedQBXMLVersion>
<SupportedQBXMLVersion>3.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>4.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>4.1</SupportedQBXMLVersion>
<SupportedQBXMLVersion>5.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>6.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>7.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>8.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>9.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>10.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>11.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>12.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>13.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>14.0</SupportedQBXMLVersion>
<IsAutomaticLogin>false</IsAutomaticLogin>
<QBFileMode>SingleUser</QBFileMode>
</HostRet>
</HostQueryRs>
<CompanyQueryRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<CompanyRet>
<IsSampleCompany>true</IsSampleCompany>
<CompanyName>Pro Hockey School</CompanyName>
<LegalCompanyName>Pro Hockey School</LegalCompanyName>
<Address>
<Addr1>4567 Dixon</Addr1>
<City>Toronto ON</City>
<PostalCode>M4Y 2M8</PostalCode>
<Country>Canada</Country>
</Address>
<AddressBlock>
<Addr1>4567 Dixon</Addr1>
<Addr2>Toronto ON, M4Y 2M8</Addr2>
</AddressBlock>
<LegalAddress>
<Addr1>4567 Dixon</Addr1>
<City>Toronto</City>
<State>ON</State>
<PostalCode>M4Y 2M8</PostalCode>
<Country>Canada</Country>
</LegalAddress>
<Phone>416 456-7890</Phone>
<Fax>416 789-4561</Fax>
<FirstMonthFiscalYear>January</FirstMonthFiscalYear>
<FirstMonthIncomeTaxYear>January</FirstMonthIncomeTaxYear>
<CompanyType>(No Type)</CompanyType>
<TaxForm>OtherOrNone</TaxForm>
<SubscribedServices>
<Service>
<Name>QuickBooks Online Banking</Name>
<Domain>banking.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing</Name>
<Domain>billing.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Level 1 Service</Name>
<Domain>qbob1.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Level 2 Service</Name>
<Domain>qbob2.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Payment Service</Name>
<Domain>qbobpay.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Bill Payment</Name>
<Domain>billpay.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Paper Mailing Service</Name>
<Domain>qbobpaper.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Payroll Service</Name>
<Domain>payroll.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Basic Payroll Service</Name>
<Domain>payrollbsc.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Basic Disk Payroll Service</Name>
<Domain>payrollbscdisk.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Deluxe Payroll Service</Name>
<Domain>payrolldlx.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Premier Payroll Service</Name>
<Domain>payrollprm.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Basic Plus Federal</Name>
<Domain>basic_plus_fed.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Basic Plus Federal and State</Name>
<Domain>basic_plus_fed_state.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Basic Plus Direct Deposit</Name>
<Domain>basic_plus_dd.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Merchant Account Service</Name>
<Domain>mas.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
</SubscribedServices>
<AccountantCopy>
<AccountantCopyExists>false</AccountantCopyExists>
</AccountantCopy>
<DataExtRet>
<OwnerID>{57F3B9B1-86F1-4fcc-B1EE-566DE1813D20}</OwnerID>
<DataExtName>AppLock</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<DataExtValue>LOCKED:DESKTOP-DC96AO8:637506041579451907</DataExtValue>
</DataExtRet>
<DataExtRet>
<OwnerID>{57F3B9B1-86F1-4fcc-B1EE-566DE1813D20}</OwnerID>
<DataExtName>FileID</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<DataExtValue>{90A44FB5-33D9-4815-AC85-BC87A7E7D1EB}</DataExtValue>
</DataExtRet>
</CompanyRet>
</CompanyQueryRs>
<PreferencesQueryRs requestID="2" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<PreferencesRet>
<AccountingPreferences>
<IsUsingAccountNumbers>false</IsUsingAccountNumbers>
<IsRequiringAccounts>true</IsRequiringAccounts>
<IsUsingClassTracking>true</IsUsingClassTracking>
<AssignClassesTo>None</AssignClassesTo>
<IsUsingAuditTrail>true</IsUsingAuditTrail>
<IsAssigningJournalEntryNumbers>true</IsAssigningJournalEntryNumbers>
<ClosingDate>2008-09-30</ClosingDate>
</AccountingPreferences>
<FinanceChargePreferences>
<AnnualInterestRate>0.00</AnnualInterestRate>
<MinFinanceCharge>0.00</MinFinanceCharge>
<GracePeriod>0</GracePeriod>
<IsAssessingForOverdueCharges>false</IsAssessingForOverdueCharges>
<CalculateChargesFrom>DueDate</CalculateChargesFrom>
<IsMarkedToBePrinted>false</IsMarkedToBePrinted>
</FinanceChargePreferences>
<JobsAndEstimatesPreferences>
<IsUsingEstimates>true</IsUsingEstimates>
<IsUsingProgressInvoicing>true</IsUsingProgressInvoicing>
<IsPrintingItemsWithZeroAmounts>false</IsPrintingItemsWithZeroAmounts>
</JobsAndEstimatesPreferences>
<MultiCurrencyPreferences>
<IsMultiCurrencyOn>false</IsMultiCurrencyOn>
</MultiCurrencyPreferences>
<MultiLocationInventoryPreferences>
<IsMultiLocationInventoryAvailable>false</IsMultiLocationInventoryAvailable>
<IsMultiLocationInventoryEnabled>false</IsMultiLocationInventoryEnabled>
</MultiLocationInventoryPreferences>
<PurchasesAndVendorsPreferences>
<IsUsingInventory>true</IsUsingInventory>
<DaysBillsAreDue>10</DaysBillsAreDue>
<IsAutomaticallyUsingDiscounts>true</IsAutomaticallyUsingDiscounts>
<DefaultDiscountAccountRef>
<ListID>2C0000-1199214000</ListID>
<FullName>Vendor Discounts</FullName>
</DefaultDiscountAccountRef>
</PurchasesAndVendorsPreferences>
<ReportsPreferences>
<AgingReportBasis>AgeFromDueDate</AgingReportBasis>
<SummaryReportBasis>Accrual</SummaryReportBasis>
</ReportsPreferences>
<SalesAndCustomersPreferences>
<IsTrackingReimbursedExpensesAsIncome>false</IsTrackingReimbursedExpensesAsIncome>
<IsAutoApplyingPayments>true</IsAutoApplyingPayments>
<PriceLevels>
<IsUsingPriceLevels>true</IsUsingPriceLevels>
<IsRoundingSalesPriceUp>true</IsRoundingSalesPriceUp>
</PriceLevels>
</SalesAndCustomersPreferences>
<SalesTaxPreferences>
<PaySalesTax>Annually</PaySalesTax>
<DefaultTaxableSalesTaxCodeRef>
<ListID>80000006-1193777349</ListID>
<FullName>.</FullName>
</DefaultTaxableSalesTaxCodeRef>
<DefaultNonTaxableSalesTaxCodeRef>
<ListID>80000005-1193777349</ListID>
<FullName>E</FullName>
</DefaultNonTaxableSalesTaxCodeRef>
<IsUsingVendorTaxCode>false</IsUsingVendorTaxCode>
<IsUsingCustomerTaxCode>false</IsUsingCustomerTaxCode>
<IsUsingAmountsIncludeTax>false</IsUsingAmountsIncludeTax>
</SalesTaxPreferences>
<TimeTrackingPreferences>
<FirstDayOfWeek>Monday</FirstDayOfWeek>
</TimeTrackingPreferences>
<CurrentAppAccessRights>
<IsAutomaticLoginAllowed>true</IsAutomaticLoginAllowed>
<AutomaticLoginUserName>Admin</AutomaticLoginUserName>
<IsPersonalDataAccessAllowed>false</IsPersonalDataAccessAllowed>
</CurrentAppAccessRights>
<ItemsAndInventoryPreferences>
<EnhancedInventoryReceivingEnabled>false</EnhancedInventoryReceivingEnabled>
<IsTrackingSerialOrLotNumber>None</IsTrackingSerialOrLotNumber>
<FIFOEnabled>false</FIFOEnabled>
<IsRSBEnabled>false</IsRSBEnabled>
<IsBarcodeEnabled>false</IsBarcodeEnabled>
</ItemsAndInventoryPreferences>
</PreferencesRet>
</PreferencesQueryRs>
</QBXMLMsgsRs>
</QBXML>
</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"><?xml version="1.0" encoding="utf-8"?>
<?qbxml version="16.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<CustomerQueryRq requestID="1" iterator="Start" metaData="NoMetaData">
<MaxReturned>20</MaxReturned>
<ActiveStatus>ActiveOnly</ActiveStatus>
<IncludeRetElement>ListID</IncludeRetElement>
<IncludeRetElement>FullName</IncludeRetElement>
<IncludeRetElement>Phone</IncludeRetElement>
<IncludeRetElement>Email</IncludeRetElement>
<IncludeRetElement>BillAddress</IncludeRetElement>
<IncludeRetElement>Fax</IncludeRetElement>
</CustomerQueryRq>
</QBXMLMsgsRq>
</QBXML>
</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>
<CustomerQueryRs statusCode="INTTYPE" statusSeverity="STRTYPE" statusMessage="STRTYPE" retCount="INTTYPE" iteratorRemainingCount="INTTYPE" iteratorID="UUIDTYPE">
<CustomerRet> <!-- optional, may repeat -->
<ListID >IDTYPE</ListID> <!-- required -->
<TimeCreated >DATETIMETYPE</TimeCreated> <!-- required -->
<TimeModified >DATETIMETYPE</TimeModified> <!-- required -->
<EditSequence >STRTYPE</EditSequence> <!-- required -->
<Name >STRTYPE</Name> <!-- required -->
<FullName >STRTYPE</FullName> <!-- required -->
<IsActive >BOOLTYPE</IsActive> <!-- optional -->
<ClassRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ClassRef>
<ParentRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ParentRef>
<Sublevel >INTTYPE</Sublevel> <!-- required -->
<CompanyName >STRTYPE</CompanyName> <!-- optional -->
<Salutation >STRTYPE</Salutation> <!-- optional -->
<FirstName >STRTYPE</FirstName> <!-- optional -->
<MiddleName >STRTYPE</MiddleName> <!-- optional -->
<LastName >STRTYPE</LastName> <!-- optional -->
<JobTitle >STRTYPE</JobTitle> <!-- optional -->
<BillAddress> <!-- optional -->
<Addr1 >STRTYPE</Addr1> <!-- optional -->
<Addr2 >STRTYPE</Addr2> <!-- optional -->
<Addr3 >STRTYPE</Addr3> <!-- optional -->
<Addr4 >STRTYPE</Addr4> <!-- optional -->
<Addr5 >STRTYPE</Addr5> <!-- optional -->
<City >STRTYPE</City> <!-- optional -->
<State >STRTYPE</State> <!-- optional -->
<PostalCode >STRTYPE</PostalCode> <!-- optional -->
<Country >STRTYPE</Country> <!-- optional -->
<Note >STRTYPE</Note> <!-- optional -->
</BillAddress>
<BillAddressBlock> <!-- optional -->
<Addr1 >STRTYPE</Addr1> <!-- optional -->
<Addr2 >STRTYPE</Addr2> <!-- optional -->
<Addr3 >STRTYPE</Addr3> <!-- optional -->
<Addr4 >STRTYPE</Addr4> <!-- optional -->
<Addr5 >STRTYPE</Addr5> <!-- optional -->
</BillAddressBlock>
<ShipAddress> <!-- optional -->
<Addr1 >STRTYPE</Addr1> <!-- optional -->
<Addr2 >STRTYPE</Addr2> <!-- optional -->
<Addr3 >STRTYPE</Addr3> <!-- optional -->
<Addr4 >STRTYPE</Addr4> <!-- optional -->
<Addr5 >STRTYPE</Addr5> <!-- optional -->
<City >STRTYPE</City> <!-- optional -->
<State >STRTYPE</State> <!-- optional -->
<PostalCode >STRTYPE</PostalCode> <!-- optional -->
<Country >STRTYPE</Country> <!-- optional -->
<Note >STRTYPE</Note> <!-- optional -->
</ShipAddress>
<ShipAddressBlock> <!-- optional -->
<Addr1 >STRTYPE</Addr1> <!-- optional -->
<Addr2 >STRTYPE</Addr2> <!-- optional -->
<Addr3 >STRTYPE</Addr3> <!-- optional -->
<Addr4 >STRTYPE</Addr4> <!-- optional -->
<Addr5 >STRTYPE</Addr5> <!-- optional -->
</ShipAddressBlock>
<ShipToAddress> <!-- must occur 0 - 50 times -->
<Name >STRTYPE</Name> <!-- required -->
<Addr1 >STRTYPE</Addr1> <!-- optional -->
<Addr2 >STRTYPE</Addr2> <!-- optional -->
<Addr3 >STRTYPE</Addr3> <!-- optional -->
<Addr4 >STRTYPE</Addr4> <!-- optional -->
<Addr5 >STRTYPE</Addr5> <!-- optional -->
<City >STRTYPE</City> <!-- optional -->
<State >STRTYPE</State> <!-- optional -->
<PostalCode >STRTYPE</PostalCode> <!-- optional -->
<Country >STRTYPE</Country> <!-- optional -->
<Note >STRTYPE</Note> <!-- optional -->
<DefaultShipTo >BOOLTYPE</DefaultShipTo> <!-- optional -->
</ShipToAddress>
<Phone >STRTYPE</Phone> <!-- optional -->
<AltPhone >STRTYPE</AltPhone> <!-- optional -->
<Fax >STRTYPE</Fax> <!-- optional -->
<Email >STRTYPE</Email> <!-- optional -->
<Cc >STRTYPE</Cc> <!-- optional -->
<Contact >STRTYPE</Contact> <!-- optional -->
<AltContact >STRTYPE</AltContact> <!-- optional -->
<AdditionalContactRef> <!-- must occur 0 - 8 times -->
<ContactName >STRTYPE</ContactName> <!-- required -->
<ContactValue >STRTYPE</ContactValue> <!-- required -->
</AdditionalContactRef>
<ContactsRet> <!-- optional, may repeat -->
<ListID >IDTYPE</ListID> <!-- required -->
<TimeCreated >DATETIMETYPE</TimeCreated> <!-- required -->
<TimeModified >DATETIMETYPE</TimeModified> <!-- required -->
<EditSequence >STRTYPE</EditSequence> <!-- required -->
<Contact >STRTYPE</Contact> <!-- optional -->
<Salutation >STRTYPE</Salutation> <!-- optional -->
<FirstName >STRTYPE</FirstName> <!-- required -->
<MiddleName >STRTYPE</MiddleName> <!-- optional -->
<LastName >STRTYPE</LastName> <!-- optional -->
<JobTitle >STRTYPE</JobTitle> <!-- optional -->
<AdditionalContactRef> <!-- must occur 0 - 5 times -->
<ContactName >STRTYPE</ContactName> <!-- required -->
<ContactValue >STRTYPE</ContactValue> <!-- required -->
</AdditionalContactRef>
</ContactsRet>
<CustomerTypeRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</CustomerTypeRef>
<TermsRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</TermsRef>
<SalesRepRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</SalesRepRef>
<Balance >AMTTYPE</Balance> <!-- optional -->
<TotalBalance >AMTTYPE</TotalBalance> <!-- optional -->
<SalesTaxCodeRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</SalesTaxCodeRef>
<ItemSalesTaxRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ItemSalesTaxRef>
<!-- SalesTaxCountry may have one of the following values: Australia, Canada [DEFAULT], UK, US -->
<SalesTaxCountry >ENUMTYPE</SalesTaxCountry> <!-- optional -->
<ResaleNumber >STRTYPE</ResaleNumber> <!-- optional -->
<AccountNumber >STRTYPE</AccountNumber> <!-- optional -->
<CreditLimit >AMTTYPE</CreditLimit> <!-- optional -->
<PreferredPaymentMethodRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</PreferredPaymentMethodRef>
<CreditCardInfo> <!-- optional -->
<CreditCardNumber >STRTYPE</CreditCardNumber> <!-- optional -->
<ExpirationMonth >INTTYPE</ExpirationMonth> <!-- optional -->
<ExpirationYear >INTTYPE</ExpirationYear> <!-- optional -->
<NameOnCard >STRTYPE</NameOnCard> <!-- optional -->
<CreditCardAddress >STRTYPE</CreditCardAddress> <!-- optional -->
<CreditCardPostalCode >STRTYPE</CreditCardPostalCode> <!-- optional -->
</CreditCardInfo>
<!-- JobStatus may have one of the following values: Awarded, Closed, InProgress, None [DEFAULT], NotAwarded, Pending -->
<JobStatus >ENUMTYPE</JobStatus> <!-- optional -->
<JobStartDate >DATETYPE</JobStartDate> <!-- optional -->
<JobProjectedEndDate >DATETYPE</JobProjectedEndDate> <!-- optional -->
<JobEndDate >DATETYPE</JobEndDate> <!-- optional -->
<JobDesc >STRTYPE</JobDesc> <!-- optional -->
<JobTypeRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</JobTypeRef>
<Notes >STRTYPE</Notes> <!-- optional -->
<AdditionalNotesRet> <!-- optional, may repeat -->
<NoteID >INTTYPE</NoteID> <!-- required -->
<Date >DATETYPE</Date> <!-- required -->
<Note >STRTYPE</Note> <!-- required -->
</AdditionalNotesRet>
<!-- PreferredDeliveryMethod may have one of the following values: None [Default], Email, Fax -->
<PreferredDeliveryMethod >ENUMTYPE</PreferredDeliveryMethod> <!-- optional -->
<PriceLevelRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</PriceLevelRef>
<ExternalGUID >GUIDTYPE</ExternalGUID> <!-- optional -->
<TaxRegistrationNumber >STRTYPE</TaxRegistrationNumber> <!-- optional -->
<CurrencyRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</CurrencyRef>
<DataExtRet> <!-- optional, may repeat -->
<OwnerID >GUIDTYPE</OwnerID> <!-- optional -->
<DataExtName >STRTYPE</DataExtName> <!-- required -->
<!-- DataExtType may have one of the following values: AMTTYPE, DATETIMETYPE, INTTYPE, PERCENTTYPE, PRICETYPE, QUANTYPE, STR1024TYPE, STR255TYPE -->
<DataExtType >ENUMTYPE</DataExtType> <!-- required -->
<DataExtValue >STRTYPE</DataExtValue> <!-- required -->
</DataExtRet>
</CustomerRet>
</CustomerQueryRs>
</response>
</q1:receiveResponseXML>
</soap:Body>
</soap:Envelope>
receiveResponseXMLResponse
We respond with a number less than 100 to indicate we're not 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">99</return>
</n1:receiveResponseXMLResponse>
</env:Body>
</env:Envelope>
sendRequestXML
It asks for the next request
<?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>
<?xml version="1.0"?>
<QBXML>
<QBXMLMsgsRs>
<HostQueryRs requestID="0" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<HostRet>
<ProductName>QuickBooks Desktop Pro</ProductName>
<MajorVersion>30</MajorVersion>
<MinorVersion>0</MinorVersion>
<Country>CA</Country>
<SupportedQBXMLVersion>1.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>1.1</SupportedQBXMLVersion>
<SupportedQBXMLVersion>2.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>2.1</SupportedQBXMLVersion>
<SupportedQBXMLVersion>3.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>4.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>4.1</SupportedQBXMLVersion>
<SupportedQBXMLVersion>5.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>6.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>7.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>8.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>9.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>10.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>11.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>12.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>13.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>14.0</SupportedQBXMLVersion>
<IsAutomaticLogin>false</IsAutomaticLogin>
<QBFileMode>SingleUser</QBFileMode>
</HostRet>
</HostQueryRs>
<CompanyQueryRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<CompanyRet>
<IsSampleCompany>true</IsSampleCompany>
<CompanyName>Pro Hockey School</CompanyName>
<LegalCompanyName>Pro Hockey School</LegalCompanyName>
<Address>
<Addr1>4567 Dixon</Addr1>
<City>Toronto ON</City>
<PostalCode>M4Y 2M8</PostalCode>
<Country>Canada</Country>
</Address>
<AddressBlock>
<Addr1>4567 Dixon</Addr1>
<Addr2>Toronto ON, M4Y 2M8</Addr2>
</AddressBlock>
<LegalAddress>
<Addr1>4567 Dixon</Addr1>
<City>Toronto</City>
<State>ON</State>
<PostalCode>M4Y 2M8</PostalCode>
<Country>Canada</Country>
</LegalAddress>
<Phone>416 456-7890</Phone>
<Fax>416 789-4561</Fax>
<FirstMonthFiscalYear>January</FirstMonthFiscalYear>
<FirstMonthIncomeTaxYear>January</FirstMonthIncomeTaxYear>
<CompanyType>(No Type)</CompanyType>
<TaxForm>OtherOrNone</TaxForm>
<SubscribedServices>
<Service>
<Name>QuickBooks Online Banking</Name>
<Domain>banking.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing</Name>
<Domain>billing.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Level 1 Service</Name>
<Domain>qbob1.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Level 2 Service</Name>
<Domain>qbob2.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Payment Service</Name>
<Domain>qbobpay.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Bill Payment</Name>
<Domain>billpay.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Paper Mailing Service</Name>
<Domain>qbobpaper.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Payroll Service</Name>
<Domain>payroll.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Basic Payroll Service</Name>
<Domain>payrollbsc.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Basic Disk Payroll Service</Name>
<Domain>payrollbscdisk.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Deluxe Payroll Service</Name>
<Domain>payrolldlx.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Premier Payroll Service</Name>
<Domain>payrollprm.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Basic Plus Federal</Name>
<Domain>basic_plus_fed.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Basic Plus Federal and State</Name>
<Domain>basic_plus_fed_state.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Basic Plus Direct Deposit</Name>
<Domain>basic_plus_dd.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Merchant Account Service</Name>
<Domain>mas.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
</SubscribedServices>
<AccountantCopy>
<AccountantCopyExists>false</AccountantCopyExists>
</AccountantCopy>
<DataExtRet>
<OwnerID>{57F3B9B1-86F1-4fcc-B1EE-566DE1813D20}</OwnerID>
<DataExtName>AppLock</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<DataExtValue>LOCKED:DESKTOP-DC96AO8:637506041579451907</DataExtValue>
</DataExtRet>
<DataExtRet>
<OwnerID>{57F3B9B1-86F1-4fcc-B1EE-566DE1813D20}</OwnerID>
<DataExtName>FileID</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<DataExtValue>{90A44FB5-33D9-4815-AC85-BC87A7E7D1EB}</DataExtValue>
</DataExtRet>
</CompanyRet>
</CompanyQueryRs>
<PreferencesQueryRs requestID="2" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<PreferencesRet>
<AccountingPreferences>
<IsUsingAccountNumbers>false</IsUsingAccountNumbers>
<IsRequiringAccounts>true</IsRequiringAccounts>
<IsUsingClassTracking>true</IsUsingClassTracking>
<AssignClassesTo>None</AssignClassesTo>
<IsUsingAuditTrail>true</IsUsingAuditTrail>
<IsAssigningJournalEntryNumbers>true</IsAssigningJournalEntryNumbers>
<ClosingDate>2008-09-30</ClosingDate>
</AccountingPreferences>
<FinanceChargePreferences>
<AnnualInterestRate>0.00</AnnualInterestRate>
<MinFinanceCharge>0.00</MinFinanceCharge>
<GracePeriod>0</GracePeriod>
<IsAssessingForOverdueCharges>false</IsAssessingForOverdueCharges>
<CalculateChargesFrom>DueDate</CalculateChargesFrom>
<IsMarkedToBePrinted>false</IsMarkedToBePrinted>
</FinanceChargePreferences>
<JobsAndEstimatesPreferences>
<IsUsingEstimates>true</IsUsingEstimates>
<IsUsingProgressInvoicing>true</IsUsingProgressInvoicing>
<IsPrintingItemsWithZeroAmounts>false</IsPrintingItemsWithZeroAmounts>
</JobsAndEstimatesPreferences>
<MultiCurrencyPreferences>
<IsMultiCurrencyOn>false</IsMultiCurrencyOn>
</MultiCurrencyPreferences>
<MultiLocationInventoryPreferences>
<IsMultiLocationInventoryAvailable>false</IsMultiLocationInventoryAvailable>
<IsMultiLocationInventoryEnabled>false</IsMultiLocationInventoryEnabled>
</MultiLocationInventoryPreferences>
<PurchasesAndVendorsPreferences>
<IsUsingInventory>true</IsUsingInventory>
<DaysBillsAreDue>10</DaysBillsAreDue>
<IsAutomaticallyUsingDiscounts>true</IsAutomaticallyUsingDiscounts>
<DefaultDiscountAccountRef>
<ListID>2C0000-1199214000</ListID>
<FullName>Vendor Discounts</FullName>
</DefaultDiscountAccountRef>
</PurchasesAndVendorsPreferences>
<ReportsPreferences>
<AgingReportBasis>AgeFromDueDate</AgingReportBasis>
<SummaryReportBasis>Accrual</SummaryReportBasis>
</ReportsPreferences>
<SalesAndCustomersPreferences>
<IsTrackingReimbursedExpensesAsIncome>false</IsTrackingReimbursedExpensesAsIncome>
<IsAutoApplyingPayments>true</IsAutoApplyingPayments>
<PriceLevels>
<IsUsingPriceLevels>true</IsUsingPriceLevels>
<IsRoundingSalesPriceUp>true</IsRoundingSalesPriceUp>
</PriceLevels>
</SalesAndCustomersPreferences>
<SalesTaxPreferences>
<PaySalesTax>Annually</PaySalesTax>
<DefaultTaxableSalesTaxCodeRef>
<ListID>80000006-1193777349</ListID>
<FullName>.</FullName>
</DefaultTaxableSalesTaxCodeRef>
<DefaultNonTaxableSalesTaxCodeRef>
<ListID>80000005-1193777349</ListID>
<FullName>E</FullName>
</DefaultNonTaxableSalesTaxCodeRef>
<IsUsingVendorTaxCode>false</IsUsingVendorTaxCode>
<IsUsingCustomerTaxCode>false</IsUsingCustomerTaxCode>
<IsUsingAmountsIncludeTax>false</IsUsingAmountsIncludeTax>
</SalesTaxPreferences>
<TimeTrackingPreferences>
<FirstDayOfWeek>Monday</FirstDayOfWeek>
</TimeTrackingPreferences>
<CurrentAppAccessRights>
<IsAutomaticLoginAllowed>true</IsAutomaticLoginAllowed>
<AutomaticLoginUserName>Admin</AutomaticLoginUserName>
<IsPersonalDataAccessAllowed>false</IsPersonalDataAccessAllowed>
</CurrentAppAccessRights>
<ItemsAndInventoryPreferences>
<EnhancedInventoryReceivingEnabled>false</EnhancedInventoryReceivingEnabled>
<IsTrackingSerialOrLotNumber>None</IsTrackingSerialOrLotNumber>
<FIFOEnabled>false</FIFOEnabled>
<IsRSBEnabled>false</IsRSBEnabled>
<IsBarcodeEnabled>false</IsBarcodeEnabled>
</ItemsAndInventoryPreferences>
</PreferencesRet>
</PreferencesQueryRs>
</QBXMLMsgsRs>
</QBXML>
</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 next 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"><?xml version="1.0" encoding="utf-8"?>
<?qbxml version="16.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<CustomerQueryRq requestID="1" iterator="Continue" iteratorID="abcd-efgh-ijkl-mnop" metaData="NoMetaData">
<MaxReturned>20</MaxReturned>
<ActiveStatus>ActiveOnly</ActiveStatus>
<IncludeRetElement>ListID</IncludeRetElement>
<IncludeRetElement>FullName</IncludeRetElement>
<IncludeRetElement>Phone</IncludeRetElement>
<IncludeRetElement>Email</IncludeRetElement>
<IncludeRetElement>BillAddress</IncludeRetElement>
<IncludeRetElement>Fax</IncludeRetElement>
</CustomerQueryRq>
</QBXMLMsgsRq>
</QBXML>
</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>
<CustomerQueryRs statusCode="INTTYPE" statusSeverity="STRTYPE" statusMessage="STRTYPE" retCount="INTTYPE" iteratorRemainingCount="INTTYPE" iteratorID="UUIDTYPE">
<CustomerRet> <!-- optional, may repeat -->
<ListID >IDTYPE</ListID> <!-- required -->
<TimeCreated >DATETIMETYPE</TimeCreated> <!-- required -->
<TimeModified >DATETIMETYPE</TimeModified> <!-- required -->
<EditSequence >STRTYPE</EditSequence> <!-- required -->
<Name >STRTYPE</Name> <!-- required -->
<FullName >STRTYPE</FullName> <!-- required -->
<IsActive >BOOLTYPE</IsActive> <!-- optional -->
<ClassRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ClassRef>
<ParentRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ParentRef>
<Sublevel >INTTYPE</Sublevel> <!-- required -->
<CompanyName >STRTYPE</CompanyName> <!-- optional -->
<Salutation >STRTYPE</Salutation> <!-- optional -->
<FirstName >STRTYPE</FirstName> <!-- optional -->
<MiddleName >STRTYPE</MiddleName> <!-- optional -->
<LastName >STRTYPE</LastName> <!-- optional -->
<JobTitle >STRTYPE</JobTitle> <!-- optional -->
<BillAddress> <!-- optional -->
<Addr1 >STRTYPE</Addr1> <!-- optional -->
<Addr2 >STRTYPE</Addr2> <!-- optional -->
<Addr3 >STRTYPE</Addr3> <!-- optional -->
<Addr4 >STRTYPE</Addr4> <!-- optional -->
<Addr5 >STRTYPE</Addr5> <!-- optional -->
<City >STRTYPE</City> <!-- optional -->
<State >STRTYPE</State> <!-- optional -->
<PostalCode >STRTYPE</PostalCode> <!-- optional -->
<Country >STRTYPE</Country> <!-- optional -->
<Note >STRTYPE</Note> <!-- optional -->
</BillAddress>
<BillAddressBlock> <!-- optional -->
<Addr1 >STRTYPE</Addr1> <!-- optional -->
<Addr2 >STRTYPE</Addr2> <!-- optional -->
<Addr3 >STRTYPE</Addr3> <!-- optional -->
<Addr4 >STRTYPE</Addr4> <!-- optional -->
<Addr5 >STRTYPE</Addr5> <!-- optional -->
</BillAddressBlock>
<ShipAddress> <!-- optional -->
<Addr1 >STRTYPE</Addr1> <!-- optional -->
<Addr2 >STRTYPE</Addr2> <!-- optional -->
<Addr3 >STRTYPE</Addr3> <!-- optional -->
<Addr4 >STRTYPE</Addr4> <!-- optional -->
<Addr5 >STRTYPE</Addr5> <!-- optional -->
<City >STRTYPE</City> <!-- optional -->
<State >STRTYPE</State> <!-- optional -->
<PostalCode >STRTYPE</PostalCode> <!-- optional -->
<Country >STRTYPE</Country> <!-- optional -->
<Note >STRTYPE</Note> <!-- optional -->
</ShipAddress>
<ShipAddressBlock> <!-- optional -->
<Addr1 >STRTYPE</Addr1> <!-- optional -->
<Addr2 >STRTYPE</Addr2> <!-- optional -->
<Addr3 >STRTYPE</Addr3> <!-- optional -->
<Addr4 >STRTYPE</Addr4> <!-- optional -->
<Addr5 >STRTYPE</Addr5> <!-- optional -->
</ShipAddressBlock>
<ShipToAddress> <!-- must occur 0 - 50 times -->
<Name >STRTYPE</Name> <!-- required -->
<Addr1 >STRTYPE</Addr1> <!-- optional -->
<Addr2 >STRTYPE</Addr2> <!-- optional -->
<Addr3 >STRTYPE</Addr3> <!-- optional -->
<Addr4 >STRTYPE</Addr4> <!-- optional -->
<Addr5 >STRTYPE</Addr5> <!-- optional -->
<City >STRTYPE</City> <!-- optional -->
<State >STRTYPE</State> <!-- optional -->
<PostalCode >STRTYPE</PostalCode> <!-- optional -->
<Country >STRTYPE</Country> <!-- optional -->
<Note >STRTYPE</Note> <!-- optional -->
<DefaultShipTo >BOOLTYPE</DefaultShipTo> <!-- optional -->
</ShipToAddress>
<Phone >STRTYPE</Phone> <!-- optional -->
<AltPhone >STRTYPE</AltPhone> <!-- optional -->
<Fax >STRTYPE</Fax> <!-- optional -->
<Email >STRTYPE</Email> <!-- optional -->
<Cc >STRTYPE</Cc> <!-- optional -->
<Contact >STRTYPE</Contact> <!-- optional -->
<AltContact >STRTYPE</AltContact> <!-- optional -->
<AdditionalContactRef> <!-- must occur 0 - 8 times -->
<ContactName >STRTYPE</ContactName> <!-- required -->
<ContactValue >STRTYPE</ContactValue> <!-- required -->
</AdditionalContactRef>
<ContactsRet> <!-- optional, may repeat -->
<ListID >IDTYPE</ListID> <!-- required -->
<TimeCreated >DATETIMETYPE</TimeCreated> <!-- required -->
<TimeModified >DATETIMETYPE</TimeModified> <!-- required -->
<EditSequence >STRTYPE</EditSequence> <!-- required -->
<Contact >STRTYPE</Contact> <!-- optional -->
<Salutation >STRTYPE</Salutation> <!-- optional -->
<FirstName >STRTYPE</FirstName> <!-- required -->
<MiddleName >STRTYPE</MiddleName> <!-- optional -->
<LastName >STRTYPE</LastName> <!-- optional -->
<JobTitle >STRTYPE</JobTitle> <!-- optional -->
<AdditionalContactRef> <!-- must occur 0 - 5 times -->
<ContactName >STRTYPE</ContactName> <!-- required -->
<ContactValue >STRTYPE</ContactValue> <!-- required -->
</AdditionalContactRef>
</ContactsRet>
<CustomerTypeRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</CustomerTypeRef>
<TermsRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</TermsRef>
<SalesRepRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</SalesRepRef>
<Balance >AMTTYPE</Balance> <!-- optional -->
<TotalBalance >AMTTYPE</TotalBalance> <!-- optional -->
<SalesTaxCodeRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</SalesTaxCodeRef>
<ItemSalesTaxRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ItemSalesTaxRef>
<!-- SalesTaxCountry may have one of the following values: Australia, Canada [DEFAULT], UK, US -->
<SalesTaxCountry >ENUMTYPE</SalesTaxCountry> <!-- optional -->
<ResaleNumber >STRTYPE</ResaleNumber> <!-- optional -->
<AccountNumber >STRTYPE</AccountNumber> <!-- optional -->
<CreditLimit >AMTTYPE</CreditLimit> <!-- optional -->
<PreferredPaymentMethodRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</PreferredPaymentMethodRef>
<CreditCardInfo> <!-- optional -->
<CreditCardNumber >STRTYPE</CreditCardNumber> <!-- optional -->
<ExpirationMonth >INTTYPE</ExpirationMonth> <!-- optional -->
<ExpirationYear >INTTYPE</ExpirationYear> <!-- optional -->
<NameOnCard >STRTYPE</NameOnCard> <!-- optional -->
<CreditCardAddress >STRTYPE</CreditCardAddress> <!-- optional -->
<CreditCardPostalCode >STRTYPE</CreditCardPostalCode> <!-- optional -->
</CreditCardInfo>
<!-- JobStatus may have one of the following values: Awarded, Closed, InProgress, None [DEFAULT], NotAwarded, Pending -->
<JobStatus >ENUMTYPE</JobStatus> <!-- optional -->
<JobStartDate >DATETYPE</JobStartDate> <!-- optional -->
<JobProjectedEndDate >DATETYPE</JobProjectedEndDate> <!-- optional -->
<JobEndDate >DATETYPE</JobEndDate> <!-- optional -->
<JobDesc >STRTYPE</JobDesc> <!-- optional -->
<JobTypeRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</JobTypeRef>
<Notes >STRTYPE</Notes> <!-- optional -->
<AdditionalNotesRet> <!-- optional, may repeat -->
<NoteID >INTTYPE</NoteID> <!-- required -->
<Date >DATETYPE</Date> <!-- required -->
<Note >STRTYPE</Note> <!-- required -->
</AdditionalNotesRet>
<!-- PreferredDeliveryMethod may have one of the following values: None [Default], Email, Fax -->
<PreferredDeliveryMethod >ENUMTYPE</PreferredDeliveryMethod> <!-- optional -->
<PriceLevelRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</PriceLevelRef>
<ExternalGUID >GUIDTYPE</ExternalGUID> <!-- optional -->
<TaxRegistrationNumber >STRTYPE</TaxRegistrationNumber> <!-- optional -->
<CurrencyRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</CurrencyRef>
<DataExtRet> <!-- optional, may repeat -->
<OwnerID >GUIDTYPE</OwnerID> <!-- optional -->
<DataExtName >STRTYPE</DataExtName> <!-- required -->
<!-- DataExtType may have one of the following values: AMTTYPE, DATETIMETYPE, INTTYPE, PERCENTTYPE, PRICETYPE, QUANTYPE, STR1024TYPE, STR255TYPE -->
<DataExtType >ENUMTYPE</DataExtType> <!-- required -->
<DataExtValue >STRTYPE</DataExtValue> <!-- required -->
</DataExtRet>
</CustomerRet>
</CustomerQueryRs>
</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>