QuickBooks SDK is a time tested option while doing custom programming against any flavor of QuickBooks Desktop edition. This SDK is based on COM with two interfaces: QBFC and QBXML.
QBFC uses pre-defined objects to build XML requests, whereas much of the plumbing has to be done by you with QBXML that includes XML serialization and deserialization.
While it is a breeze to consume the SDK from .NET based languages, the same is not true with other popular languages/frameworks such as PHP, Java, Node.js etc., because of the SDK’s roots in COM. Common problem across programming languages/frameworks is connecting to a remote instance of QuickBooks and perform pull/push of data.