Intuit's statement about IIF files: “The core problem with IIF (#1), is that it bypasses the QB business logic and because of this, it is known to have corrupted the QB company file in some cases. Intuit does not support IIF and has not been updating it so there are many QuickBooks features that it does not support. IDN strongly advises against using IIF imports.”

CSV/Excel import/export: Excel and CSV imports (#2) don't bypass business logic, so they don't have the corruption issues, but neither do they update accounting data! Also, when using QuickBooks' mechanism for Excel & CSV imports, end users will need to indicate which spreadsheet fields map to which QuickBooks fields. So the process implicitly relies on users doing the right thing. In addition to those limitations, these (and most other file import tools) can not react to dynamic situations (see 1-4 below). IDN advises against using Excel/CSV import.

The QuickBooks Web Connector: The Web Connector is essentially a SOAP-based web service which allows your website to exchange data (add, update, query, etc.) with QuickBooks. It's a lot more powerful than a simple import/export mechanism, but with power comes some complexity.

It's a good choice for connecting QuickBooks to your website. Note that if you're building a SaaS application, you may want to consider IPP/IDS, which is similar in implementation, but makes some things a bit less complex for some situations.

Intuit now provides their version of an “app store” for QuickBooks, complete with the ability to access QuickBooks data over REST and XML calls. If you're building a Software as a Service application, you should be using this method.

COM / DCOM / QBFC: If you're building an application that lives on the same machine as QuickBooks, you can use COM / DCOM / QuickBooks Foundation Classes to communicate with QuickBooks via qbXML or OOP wrappers that the QuickBooks SDK provides. The COM / DCOM / QBFC classes are somewhat Microsoft-specific, so they work best from within a Microsoft language (C#, VB .NET, etc.) but can be accessed by any other language that supports COM as well (PHP, Ruby, Java, etc.).

Remote Data Sharing: Remote Data Sharing for QuickBooks is a solution meant to allow access to QuickBooks from another machine within the same local LAN network. It is not supported for remote connections over a WAN (i.e. the Internet).

The very first time you run and register you application with QuickBooks, your company file must be open.

You will be prompted to grant access to the company file for the integrated application. If you then choose to allow access even when QuickBooks is not open, you will no longer need to have QuickBooks open to exchange data with the your integrated application.