In the past, to integrate with QuickBooks financials, it was necessary to code a Windows Service or Windows Form application to access and modify accounting information.
Thankfully, this is no longer the case. There are other options.
One of which is using QuickBooks Web Connector in combination with a web service with a compatible interface. In Web Connector, Intuit has provided a generic client to handle message exchange. One limitation to this approach is that QuickBooks Web Connector has to poll your web service on a scheduled basis, so that it is not suitable for real-time messaging (If this is necessary or there is enough message volume, it might be a better idea to look at a more scalable accounting system or QuickBooks Enterprise anyways). However, for instances where a multi-second or multi-minute delay is permissible, it works fine.
The basic operation is that on a scheduled basis QuickBooks Web Connector contacts your web service, goes through authentication and other plumbing steps, and then runs a message loop where XML documents are exchanged as request/response pairs.
QB SDK 7.0 offers an example of a compatible web service, but the .NET example web service ("WCWebService") leaves a bit to be desired for a QuickBooks novice.
Namely, it constructs the example XML messages using XmlDocument-esque code rather than demonstrating how to use the QB SDK 7.0 object model in order to save time and ensure properly formulated XML messages. I wouldn't recommend implementing your Web Service without using the Object Model.
Creating Request XML from a Request Object:
QBSessionManager
_sessionManager = new QBSessionManager();
IMsgSetRequest invoiceSetRequest = _sessionManager.CreateMsgSetRequest(QBSettings.QBEdition, QBSettings.MajorVersion, QBSettings.MinorVersion);
IInvoiceAdd addInvoice = invoiceSetRequest.AppendInvoiceAddRq();
//Assign the invoice to a customer. Add line items, set values for the Invoice in your code here, etc.
//Call ToXMLString() to get the message you wish to return from the
//sendRequestXML Service operation in your Web Connector compatible web service.
string xmlToSendOver=invoiceSetRequest.ToXMLString();
Parsing Response XML into an Response Object:
IMsgSetResponse
msgResponse=_sessionManager.ToMsgSetResponse(Response,QBSettings.QBEdition,QBSettings.MajorVersion,QBSettings.MinorVersion);
if (msgResponse.ResponseList.Count > 0){
IResponse response = msgResponse.ResponseList.GetAt(0);
if (response.StatusCode == 0) {if (response.Detail is IInvoiceRet){
IInvoiceRet invoiceReceipt = (IInvoiceRet)response.Detail;
//Example of getting the Transaction Id in order to query QuickBooks later about this Invoice's payment status, etc.
TrxId = invoiceReceipt.TxnID.GetValue();}
}else{
//Exception
}
...
Things to note, you can anticipate the type of response object from the message sent. I used a Stack primarily as the data structure to store the wrapper objects controlling the QuickBooks Object Model code. The SDK example uses a plain ole' .NET V1.0 List.