Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/conductor-is/quickbooks-desktop-api

QuickBooks Desktop API for Node.js, TypeScript, and REST
https://github.com/conductor-is/quickbooks-desktop-api

javascipt nodejs qb-desktop qb-enterprise qbd qbdesktop qbdt qbe qbenterprise qbwc qbwebconnector quickbooks quickbooks-api quickbooks-desktop quickbooks-enterprise quickbooks-sync quickbooks-web-connector typescript

Last synced: 3 days ago
JSON representation

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

Awesome Lists containing this project

README

        





Conductor logo


QuickBooks Desktop API for Python, 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 Node.js/TypeScript, Python, and REST. In just a few lines, get real-time access to fetch, create, or update [_any_ QuickBooks Desktop object type](https://docs.conductor.is/qbd/api#supported-object-types) and receive a fully-typed response. Check out [the documentation](https://docs.conductor.is) 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](https://73a5v9t55ed.typeform.com/to/VRX7rfrN).**
2. Node.js v16 or later.

## Documentation

1. [Get Started](https://docs.conductor.is/overview/get-started)
2. [Quickstart](https://docs.conductor.is/overview/quickstart)
3. [Node.js / TypeScript API](https://docs.conductor.is/qbd/api)
4. [REST API](https://docs.conductor.is/qbd/rest)
5. [API Reference](https://docs.conductor.is/apis)
6. [Error Handling](https://docs.conductor.is/usage/error-handling)

## Installation

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

## Usage

The full API documentation is available [here](https://docs.conductor.is) along with many code examples. The following is a quickstart example:

```ts
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](https://docs.conductor.is) for more docs, guides, and code examples.