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">
<InvoiceAddRq>
<InvoiceAdd>
<CustomerRef>
<ListID>1</ListID>
</CustomerRef>
<InvoiceLineAdd>
<ItemRef>
<ListID>1</ListID>
</ItemRef>
<Desc>
Some description of the line item
</Desc>
<Quantity>1.0</Quantity>
<Rate>100.0</Rate>
</InvoiceLineAdd>
</InvoiceAdd>
</InvoiceAddRq>
</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>
<?xml version="1.0"?>
<?qbxml version="16.0"?>
<QBXML>
<InvoiceAddRs statusCode="INTTYPE" statusSeverity="STRTYPE" statusMessage="STRTYPE">
<InvoiceRet> <!-- optional -->
<TxnID >IDTYPE</TxnID> <!-- required -->
<TimeCreated >DATETIMETYPE</TimeCreated> <!-- required -->
<TimeModified >DATETIMETYPE</TimeModified> <!-- required -->
<EditSequence >STRTYPE</EditSequence> <!-- required -->
<TxnNumber >INTTYPE</TxnNumber> <!-- optional -->
<CustomerRef> <!-- required -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</CustomerRef>
<ClassRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ClassRef>
<ARAccountRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ARAccountRef>
<TemplateRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</TemplateRef>
<TxnDate >DATETYPE</TxnDate> <!-- required -->
<RefNumber >STRTYPE</RefNumber> <!-- 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>
<IsPending >BOOLTYPE</IsPending> <!-- optional -->
<IsFinanceCharge >BOOLTYPE</IsFinanceCharge> <!-- optional -->
<PONumber >STRTYPE</PONumber> <!-- optional -->
<TermsRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</TermsRef>
<DueDate >DATETYPE</DueDate> <!-- optional -->
<SalesRepRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</SalesRepRef>
<FOB >STRTYPE</FOB> <!-- optional -->
<ShipDate >DATETYPE</ShipDate> <!-- optional -->
<ShipMethodRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ShipMethodRef>
<Subtotal >AMTTYPE</Subtotal> <!-- optional -->
<ItemSalesTaxRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ItemSalesTaxRef>
<SalesTaxPercentage >PERCENTTYPE</SalesTaxPercentage> <!-- optional -->
<SalesTaxTotal >AMTTYPE</SalesTaxTotal> <!-- optional -->
<AppliedAmount >AMTTYPE</AppliedAmount> <!-- optional -->
<BalanceRemaining >AMTTYPE</BalanceRemaining> <!-- optional -->
<CurrencyRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</CurrencyRef>
<ExchangeRate >FLOATTYPE</ExchangeRate> <!-- optional -->
<BalanceRemainingInHomeCurrency >AMTTYPE</BalanceRemainingInHomeCurrency> <!-- optional -->
<Memo >STRTYPE</Memo> <!-- optional -->
<IsPaid >BOOLTYPE</IsPaid> <!-- optional -->
<CustomerMsgRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</CustomerMsgRef>
<IsToBePrinted >BOOLTYPE</IsToBePrinted> <!-- optional -->
<IsToBeEmailed >BOOLTYPE</IsToBeEmailed> <!-- optional -->
<IsTaxIncluded >BOOLTYPE</IsTaxIncluded> <!-- optional -->
<CustomerSalesTaxCodeRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</CustomerSalesTaxCodeRef>
<SuggestedDiscountAmount >AMTTYPE</SuggestedDiscountAmount> <!-- optional -->
<SuggestedDiscountDate >DATETYPE</SuggestedDiscountDate> <!-- optional -->
<Other >STRTYPE</Other> <!-- optional -->
<ExternalGUID >GUIDTYPE</ExternalGUID> <!-- optional -->
<LinkedTxn> <!-- optional, may repeat -->
<TxnID >IDTYPE</TxnID> <!-- required -->
<!-- TxnType may have one of the following values: ARRefundCreditCard, Bill, BillPaymentCheck, BillPaymentCreditCard, BuildAssembly, Charge, Check, CreditCardCharge, CreditCardCredit, CreditMemo, Deposit, Estimate, InventoryAdjustment, Invoice, ItemReceipt, JournalEntry, LiabilityAdjustment, Paycheck, PayrollLiabilityCheck, PurchaseOrder, ReceivePayment, SalesOrder, SalesReceipt, SalesTaxPaymentCheck, Transfer, VendorCredit, YTDAdjustment -->
<TxnType >ENUMTYPE</TxnType> <!-- required -->
<TxnDate >DATETYPE</TxnDate> <!-- required -->
<RefNumber >STRTYPE</RefNumber> <!-- optional -->
<!-- LinkType may have one of the following values: AMTTYPE, QUANTYPE -->
<LinkType >ENUMTYPE</LinkType> <!-- optional -->
<Amount >AMTTYPE</Amount> <!-- required -->
</LinkedTxn>
<!-- BEGIN OR -->
<InvoiceLineRet> <!-- optional -->
<TxnLineID >IDTYPE</TxnLineID> <!-- required -->
<ItemRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ItemRef>
<Desc >STRTYPE</Desc> <!-- optional -->
<Quantity >QUANTYPE</Quantity> <!-- optional -->
<UnitOfMeasure >STRTYPE</UnitOfMeasure> <!-- optional -->
<OverrideUOMSetRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</OverrideUOMSetRef>
<!-- BEGIN OR -->
<Rate >PRICETYPE</Rate> <!-- optional -->
<!-- OR -->
<RatePercent >PERCENTTYPE</RatePercent> <!-- optional -->
<!-- END OR -->
<ClassRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ClassRef>
<Amount >AMTTYPE</Amount> <!-- optional -->
<InventorySiteRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</InventorySiteRef>
<InventorySiteLocationRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</InventorySiteLocationRef>
<!-- BEGIN OR -->
<SerialNumber >STRTYPE</SerialNumber> <!-- optional -->
<!-- OR -->
<LotNumber >STRTYPE</LotNumber> <!-- optional -->
<!-- END OR -->
<ServiceDate >DATETYPE</ServiceDate> <!-- optional -->
<SalesTaxCodeRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</SalesTaxCodeRef>
<Other1 >STRTYPE</Other1> <!-- optional -->
<Other2 >STRTYPE</Other2> <!-- optional -->
<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>
</InvoiceLineRet>
<!-- OR -->
<InvoiceLineGroupRet> <!-- optional -->
<TxnLineID >IDTYPE</TxnLineID> <!-- required -->
<ItemGroupRef> <!-- required -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ItemGroupRef>
<Desc >STRTYPE</Desc> <!-- optional -->
<Quantity >QUANTYPE</Quantity> <!-- optional -->
<UnitOfMeasure >STRTYPE</UnitOfMeasure> <!-- optional -->
<OverrideUOMSetRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</OverrideUOMSetRef>
<IsPrintItemsInGroup >BOOLTYPE</IsPrintItemsInGroup> <!-- required -->
<TotalAmount >AMTTYPE</TotalAmount> <!-- required -->
<InvoiceLineRet> <!-- optional, may repeat -->
<TxnLineID >IDTYPE</TxnLineID> <!-- required -->
<ItemRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ItemRef>
<Desc >STRTYPE</Desc> <!-- optional -->
<Quantity >QUANTYPE</Quantity> <!-- optional -->
<UnitOfMeasure >STRTYPE</UnitOfMeasure> <!-- optional -->
<OverrideUOMSetRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</OverrideUOMSetRef>
<!-- BEGIN OR -->
<Rate >PRICETYPE</Rate> <!-- optional -->
<!-- OR -->
<RatePercent >PERCENTTYPE</RatePercent> <!-- optional -->
<!-- END OR -->
<ClassRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ClassRef>
<Amount >AMTTYPE</Amount> <!-- optional -->
<InventorySiteRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</InventorySiteRef>
<InventorySiteLocationRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</InventorySiteLocationRef>
<!-- BEGIN OR -->
<SerialNumber >STRTYPE</SerialNumber> <!-- optional -->
<!-- OR -->
<LotNumber >STRTYPE</LotNumber> <!-- optional -->
<!-- END OR -->
<ServiceDate >DATETYPE</ServiceDate> <!-- optional -->
<SalesTaxCodeRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</SalesTaxCodeRef>
<Other1 >STRTYPE</Other1> <!-- optional -->
<Other2 >STRTYPE</Other2> <!-- optional -->
<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>
</InvoiceLineRet>
<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>
</InvoiceLineGroupRet>
<!-- END OR -->
<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>
</InvoiceRet>
<ErrorRecovery> <!-- optional -->
<!-- BEGIN OR -->
<ListID >IDTYPE</ListID> <!-- optional -->
<!-- OR -->
<OwnerID >GUIDTYPE</OwnerID> <!-- optional -->
<!-- OR -->
<TxnID >IDTYPE</TxnID> <!-- optional -->
<!-- END OR -->
<TxnNumber >INTTYPE</TxnNumber> <!-- optional -->
<EditSequence >STRTYPE</EditSequence> <!-- optional -->
<ExternalGUID >GUIDTYPE</ExternalGUID> <!-- optional -->
</ErrorRecovery>
</InvoiceAddRs>
</QBXML>
</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>