/quickbooks-desktop-api

QuickBooks Desktop API for Python, Node.js, TypeScript, and REST

Primary LanguageTypeScriptMIT LicenseMIT

Conductor logo

QuickBooks Desktop API for Node.js, TypeScript, and REST

Quickstart   •   Website   •   Docs   •   Examples   •   Twitter

NPM download count Package version Code coverage License

What is Conductor?

Conductor is a real-time, fully-typed API for QuickBooks Desktop (sometimes called QuickBooks Enterprise), available via TypeScript, Node.js, and REST. In just a few lines, get real-time access to fetch, create, or update any QuickBooks Desktop object type and receive a fully-typed response. Check out the documentation to get started.

Conductor, the company, is building a data integration platform for vertical SaaS companies, starting with QuickBooks Desktop. Our team has spent over a decade building companies, scaling vast software systems, and obsessing over quality.

QuickBooks Desktop autocomplete

Key features

  • Any data type: Query, create, or update any QuickBooks Desktop data type.
  • Real-time: Get real-time updates on your QuickBooks Desktop data. No queues, no polling.
  • Modern API: JSON-based REST API, replacing the old XML-based SOAP model.
  • Typed Node.js client: Fully typed library with autocomplete, inline docs, and type validation for endpoints, parameters, and responses.
  • Request handling: Invisibly manages queues, timeouts, retries, and pagination.
  • Multi-company support: Connects to multiple QuickBooks Desktop company files.
  • Validation: Sanitizes and validates all inputs and outputs.
  • Unified error handling: Streamlines error handling across the QuickBooks stack.
  • Authentication flow UI: Simple UI for securely connecting QuickBooks Desktop accounts.
  • Dashboard: UI to monitor and manage your QuickBooks Desktop connections and data.
  • Error resolution: Detailed guides and instructions for resolving errors and handling edge cases.

What is this repo?

This repository is a library for conveniently accessing Conductor's QuickBooks Desktop API from TypeScript or JavaScript. The library is a wrapper around the Conductor REST API, providing a fully-typed, easy-to-use interface for fetching, creating, and updating QuickBooks Desktop objects.

Requirements

  1. A Conductor API key pair: one secret key, one publishable key. Please sign up to join the beta.
  2. Node.js v16 or later.

Documentation

  1. Get Started
  2. Quickstart
  3. Node.js / TypeScript API
  4. REST API
  5. API Reference
  6. Error Handling

Installation

npm install conductor-node
# or
yarn add conductor-node

Usage

The full API documentation is available here along with many code examples. The following is a quickstart example:

import Conductor from "conductor-node";

const conductor = new Conductor("{{YOUR_SECRET_KEY}}");

async function main() {
  // 1. Create a new EndUser.
  const endUser = await conductor.endUsers.create({
    companyName: "{{END_USER_COMPANY_NAME}}",
    sourceId: "{{UNIQUE_ID_FROM_YOUR_DB}}",
    email: "{{END_USER_EMAIL}}",
  });
  console.log("Save this EndUser ID to auth future requests:", endUser.id);

  // 2. Create an AuthSession to establish the QuickBooks Desktop connection.
  const authSession = await conductor.authSessions.create({
    publishableKey: "{{YOUR_PUBLISHABLE_KEY}}",
    endUserId: endUser.id,
  });
  console.log("Complete the QuickBooks Desktop auth:", authSession.authFlowUrl);

  // 3. Get a list of invoices from this EndUser's QuickBooks Desktop.
  const qbdInvoices = await conductor.qbd.customer.query(endUser.id, {
    MaxReturned: 10,
  });
  console.log("QuickBooks Desktop invoices:", qbdInvoices);
}

main();

More documentation

Please see our full documentation site for more docs, guides, and code examples.