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

# QuickBooks integration

> How to connect Visualcare to QuickBooks for payroll export via the KeyPay API, including employee sync and timesheet export

QuickBooks connects to Visualcare through the KeyPay API, the same connection method used by Employment Hero Payroll and Pay Cat. Once connected, you sync employees and pay items from QuickBooks into VCore, then export completed timesheets and kilometre data directly from Visualcare at the end of each pay run.

## Linking VCore to QuickBooks

<Steps>
  <Step title="Get your API key from QuickBooks">
    Log into your QuickBooks payroll account, go to **Account Settings** → **My Account**, and locate the **API Key** field. Click **Copy**.

    <Note>If you're unsure where to find your API key, check with your QuickBooks administrator or contact QuickBooks support.</Note>
  </Step>

  <Step title="Open data export settings in Visualcare">
    In VCore, click the **Settings** icon in the top right, then go to **Settings** → **Data Export**.
  </Step>

  <Step title="Connect your QuickBooks API key">
    Click **KeyPay Connection**. In the pop-up that appears, paste the API key you copied from QuickBooks and click **Connect**.

    A success message confirms the connection, and your QuickBooks company file name appears on the page.

    <Note>To verify the connection, refresh the page and click **KeyPay Connection** again. You should see your company name and a connected status. If the field is blank, the API key wasn't copied correctly. Try copying it from QuickBooks again.</Note>
  </Step>
</Steps>

## Syncing data from QuickBooks

Once connected, pull your QuickBooks data into Visualcare from **Settings** → **Data Export**. Scroll to the KeyPay section and click each of the following:

* **Sync Employees**
* **Sync KeyPay Pay Items**
* **Sync Tax Rates**
* **Sync Expense Categories**

This brings across employee records, pay items, and other data from QuickBooks so they're available for mapping in Visualcare.

### Set the accounting code on each worker profile

Before your first export, you need to link each Visualcare worker to their matching employee record in QuickBooks.

<Steps>
  <Step title="Open the worker profile">
    Go to **Workers** → **Profile** and open a worker's record.
  </Step>

  <Step title="Set the accounting code">
    Click the **Finance** tab, scroll to the bottom, and find the **Accounting Code** field. Click the drop-down - this lists all employees synced from QuickBooks. Select the matching employee name and click **Save**.
  </Step>

  <Step title="Repeat for all active workers">
    Complete this for every active worker before running your first export.

    <Warning>Any worker without an accounting code set returns an "invalid worker accounting code" error at export time. If you see this error, click the hyperlink on the error message. It takes you directly to that worker's profile to fix it.</Warning>
  </Step>
</Steps>

<Tip>This mapping is permanent and doesn't need to be redone each pay run. You only need to update it if an employee record changes in QuickBooks in a way that breaks the link.</Tip>

## Configuring work types and allowances

### Set allowance codes for services with special conditions

Some services, such as sleepover shifts, need to be tagged with a work type so the correct award conditions apply on export.

<Steps>
  <Step title="Find the work type external ID in QuickBooks">
    Go to **Settings** → **Data Export**, scroll to the KeyPay section, and click the blue arrow next to **KeyPay Work Types**. Locate the relevant work type and copy its **External ID**.
  </Step>

  <Step title="Add the allowance code to the service">
    Go to **Maintenance** → **Services**, open the relevant service, paste the External ID into the **Allowance Code** field, and click **Save**.
  </Step>
</Steps>

<Tip>This is a one-time setup per service. Check which of your services have special award conditions - for most providers this applies to sleepover shifts.</Tip>

### Set the kilometre pay code

If your workers are paid for kilometres travelled, you need to set a pay code so kilometre data exports correctly.

<Steps>
  <Step title="Open Finance settings">
    Go to **Settings** → **Finance**.
  </Step>

  <Step title="Set the kilometres pay code">
    Find the **Kilometres** section and paste the External ID for the kilometre allowance work type from QuickBooks into the **Pay Code** field.

    To find the kilometre allowance External ID, go to **Data Export** → **KeyPay Work Types** and search for "kilometre".
  </Step>

  <Step title="Configure kilometres between shifts (if applicable)">
    If your organisation pays workers for kilometres between shifts (provider travel), set the pay code for that as well.

    | Setting           | Options                                               | What it means                                                                                   |
    | ----------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
    | KM between shifts | No charge but pay / Charge and pay / No charge no pay | Whether to bill the participant and/or pay the worker for kilometres between shifts             |
    | Travel time       | Leave blank (most common)                             | Travel time is treated as regular time worked with the applicable pay rate for the day and time |
  </Step>
</Steps>

<Warning>Kilometres export as a separate step to timesheets. After exporting timesheets, go back and run **Export KM to KeyPay** as a second export. This step is easy to miss.</Warning>

## Setting the timesheet approval preference

On the **Data Export** page, there's a setting for whether timesheets arrive in QuickBooks as **draft** or **auto-approved**.

Starting with **draft** is the safer option. Once you've confirmed the data looks correct across a few pay runs, you can switch to auto-approve if you prefer. This setting only affects how timesheets land in QuickBooks. It doesn't trigger a pay run automatically.

## Exporting timesheets to QuickBooks

<Steps>
  <Step title="Open data export">
    Go to **Timesheets** → **Data Export**.
  </Step>

  <Step title="Select the period">
    Select the pay period to export and click **Reload**.
  </Step>

  <Step title="Select items for export">
    Apply any required column filters, then tick to select all items.
  </Step>

  <Step title="Export to QuickBooks">
    Go to **Export timesheets** and select **Export to KeyPay**.
  </Step>

  <Step title="Review and process">
    A summary window opens and highlights any items that won't export successfully. Review these, then click **Process Export** to send the payroll data to QuickBooks.
  </Step>
</Steps>

## Location tagging (optional)

QuickBooks locations let you tag payroll data by participant or area, which helps with cost tracking in your payroll reports. This is optional. Only configure it if you want cost tracking by location.

When exporting timesheets, Visualcare tags each shift with a location value pulled from a field on the roster. The available mapping options are:

| Visualcare field                                    | Use when                                                                                         |
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| Agreement Area / Location Area                      | Timesheets are tracked by area listed in the agreement area or location area                     |
| Agreement Reference 1                               | Reference 1 on client agreements is used for cost tracking                                       |
| Client Area Reference 1 / Location Area Reference 1 | The text in the agreement or location area field needs to differ from what appears in QuickBooks |
| Roster Category Reference 1                         | Shifts are tagged by roster category                                                             |
| Service Reference 1                                 | Shifts are tagged by service reference 1                                                         |

<Warning>The text in the Visualcare field must exactly match the corresponding location name in QuickBooks. For example, if the QuickBooks location is called "North Coast", the value in the mapped Visualcare field also needs to be "North Coast". If these don't match, the location won't flow through on export.</Warning>

To set up location tagging:

1. Go to **Settings** → **Data Export**
2. Scroll to the **KeyPay** section and find the **KeyPay Locations** drop-down
3. Select the Visualcare field that best matches how your locations are structured in QuickBooks

## Running into issues?

See [Integration troubleshooting](/troubleshooting/integration-issues) for common errors and fixes.

## Related articles

<CardGroup cols={2}>
  <Card title="KeyPay integration" icon="credit-card" href="/integrations/keypay">
    Connect Visualcare to KeyPay for payroll export
  </Card>

  <Card title="Pay Cat integration" icon="credit-card" href="/integrations/paycat">
    Connect Visualcare to Pay Cat for award interpretation and payroll
  </Card>

  <Card title="Exporting payroll data" icon="file-export" href="/finance/exporting-payroll-data">
    Export timesheet data to your payroll software
  </Card>

  <Card title="Supported integrations" icon="puzzle-piece" href="/integrations/matrix">
    Full list of integrations supported by Visualcare
  </Card>
</CardGroup>
