I have a homemade C++ app built using the Quickbooks SDK version 13. The purpose of the app is to allow me to talk to Quickbooks by receiving an XML string from a network port. I'm able to communicate using qbXML version 2.1. It's talking to Quickbooks Enterprise version 16. I'm surprised, then, that when I run a host query...
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="2.1"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<HostQueryRq></HostQueryRq>
</QBXMLMsgsRq>
</QBXML>
...that the output is this:
<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<HostQueryRs statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<HostRet>
<ProductName>Intuit QuickBooks Enterprise Solutions: Manufacturing and Wholesale 16.0</ProductName>
<MajorVersion>26</MajorVersion>
<MinorVersion>0</MinorVersion>
<SupportedQBXMLVersion>1.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>1.1</SupportedQBXMLVersion>
<SupportedQBXMLVersion>2.0</SupportedQBXMLVersion>
<SupportedQBXMLVersion>2.1</SupportedQBXMLVersion>
</HostRet>
</HostQueryRs>
</QBXMLMsgsRs>
</QBXML>
Version 13 of the SDK is obviously supposed to be able to use version 13 of qbXML, and Quickbooks Enterprise 16 is supposed to be compatible with qbXML higher than 2.1. There is a feature of qbXML that I need to use that is only available after qbXML 2.1. These release notes from Intuit state that Quickbooks Enterprise 14.0 is compatible with qbXML versions 13.0, 12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0, 4.1, 4.0, 3.0, 2.1, 2.0, 1.1, and 1.0. Of course, later versions like 16 would also be compatible with those.
Why is Quickbooks telling me it can only use qbXML 2.1? What can I do to use a newer version?
Edit: Sorry I forgot to mention before that changing <?qbxml version="2.1"?>
to <?qbxml version="13.0"?>
or any value above 2.1 returns an error of 80040428
which means "The current request processor does not support the request." Also, if I use <?qbxml version="2.0"?>
, I still get <SupportedQBXMLVersion>2.1</SupportedQBXMLVersion>
.