> ## Documentation Index
> Fetch the complete documentation index at: https://docs.maesn.com/llms.txt
> Use this file to discover all available pages before exploring further.

# QuickBooks

> Integrate Quickbooks easily with Maesn’s Unified API. See the documentation with detailed system coverage and setup prerequisites.

**TARGET\_SYSTEM:** `quickbooks`

<div className="integration-table">
  |                      |                          Read                          |                         Create                         |                         Update                         |                         Delete                         |                         Webhook                        |
  | -------------------- | :----------------------------------------------------: | :----------------------------------------------------: | :----------------------------------------------------: | :----------------------------------------------------: | :----------------------------------------------------: |
  | Accounts             | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> |
  | Async task           | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Bank accounts        | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Bills                | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> |
  | Bill lines           | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Booking proposals    | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Contacts             | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Customers            | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> |
  | Credit notes         | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Dimensions           | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Expenses             | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> |
  | Files                | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Fiscal years         | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Goods receipts       | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Goods receipt lines  | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Invoices             | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> |
  | Invoice lines        | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Items                | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> |
  | Journals             | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Journal entries      | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> |
  | Offers               | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Offer lines          | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Open items           | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Payments             | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> |
  | Payment terms        | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Projects             | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Purchase orders      | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Purchase order lines | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Sales orders         | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Sales order lines    | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Suppliers            | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> |
  | Tax rates            | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Transactions         | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Trial balance        | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Units                | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Users                | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Vendor credits       | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
</div>

<Icon icon="check" iconType="solid" color="#4db975" /> = Supported by Maesn <br />
<Icon icon="phone" iconType="light" color="#828282" /> = On demand - contact us<br />
<Icon icon="xmark" iconType="solid" color="#828282" /> = Not supported by QuickBooks <br />

## How to connect to QuickBooks

To allow your customers to link your application with their QuickBooks accounts, you need to set up a QuickBooks App and submit your application credentials to maesn.

<Steps>
  <Step title="Prerequisites">
    Before you begin, make sure you have the following:

    * A QuickBooks account with administrator permissions.

    You can sign-up for a free trial at [https://quickbooks.intuit.com/eu/#pricing](https://quickbooks.intuit.com/eu/#pricing), if you do not have a QuickBooks account already. Note that you will not need to use this QuickBooks account for anything else than managing the QuickBooks App and, if you want to, becoming a QuickBooks partner later.
  </Step>

  <Step title="Create the QuickBooks App">
    In this step we create the App that a user can choose to install into their QuickBooks instance to authorize the integration with your application.

    * Navigate to the QuickBooks [developer portal](https://developer.intuit.com/app/developer/dashboard) and log in, if you are not already logged in.
    * On the tab "Apps", click "Create an app".
    * Select the QuickBooks Online and Payments option.
    * Give your app name: This should be your application's name. When your users link their QuickBooks account, they will see that "App Name" is requesting to integrate with their QuickBooks account.
    * Select the com.intuit.quickbooks.accounting scope.
    * Click "Create App".
    * In the next screen, click on "Key & credentials" in the left-hand menu.
    * Click on "Add URI" and add the redirect URL: `https://api.maesn.dev/auth/callback/quickbooks`
  </Step>

  <Step title="Configure your integration in the maesn API">
    In the last step, we setup your API tenant with your App's details:

    * Get in touch with your contact person at maesn to submit the client id and client secret.

    If you are not sure who your technical contact is, do not hesitate to [reach out to us](https://www.maesn.com/contact).
  </Step>
</Steps>

## Sandbox environment

QuickBooks has different URLs and credentials for their production and sandbox environments.
To generate a sandbox end user account you have to use the `quickbooks-sandbox` target system.
Inside quickbooks, you can create sandbox credentials with the same steps as the production credentials, you just need to create sandbox credentials instead of production credentials.
You also have to use the following callback URL for the sandbox environment: `https://api.maesn.dev/auth/callback/quickbooks-sandbox`

## Becoming a QuickBooks Partner

Anyone can become a QuickBooks app partner. The requirements and steps to become a partner are detailed [here](https://developer.intuit.com/app/developer/qbo/docs/go-live/publish-app).

Note that before you become a QuickBooks partner you will only have access to their development environment. Once you become a partner you will have access to their production environment.

## Webhooks

Quickbooks supports the following resources:

* `ACCOUNT`
* `BILL`
* `CUSTOMER`
* `INVOICE`
* `ITEM`
* `JOURNAL_ENTRY`
* `PAYMENT`
* `SUPPLIER`
* `EXPENSE`

Quickbooks sends `CREATED`, `UPDATED`, `DELETED`, `MERGED`, `VOIDED` and `EMAILED` events.

Before you start using webhooks for QuickBooks, you will need to contact us to receive the callback URL to use in your QuickBooks App configuration.

Inside your QuickBooks app, you will choose the `resource` and `eventType` you want the webhooks enabled for. Once configured, this setup will be valid for all users of the app.

Now, for each authenticated end user, call Maesn’s create webhook endpoint `POST /webhooks` with the following body:

```javascript Example code snippet theme={null}
    const response = await axios.post(url, {
        "callbackUrl": callbackUrl
    }, {
        headers: {
            'X-API-KEY': apiKey,
            'X-ACCOUNT-KEY': accountKey
        }
    });
```

It will return the `id` associated with the subscription:

```json Example response theme={null}
{
    "data": {
        "id": "550e8400-e29b-41d4-a716-446655440000",
        "callbackUrl": "https://example.com/webhook-endpoint/12345",
        "createdDate": null,
        "expiresDate": "null",
        "secret": "2f1fd5f883d4c0adf5b31b91e4d6ae2d2975620c67bac8fdb864c78047b1d522"
        "updatedDate": "null"
    },
    "meta": {}
}
```

At this point, your system is ready to receive end-user–related events at the callback URL you provided. Quickbooks retrieves a list of events.
The event response will be an array providing the following information:

```json Example event body theme={null}
[{
    "eventType": "CREATED",
    "filterDate": null, //not supported by quickbooks
    "resource": "INVOICE",
    "recourceId": "1",
    "userId": "23631355"
}]
```

To delete the webhook subscription, you can call the `DELETE` `/webhooks/{webhookId}` endpoint.
