Skip to main content

Connect to QuickBooks Online

Description of how the integration with QuickBooks Online (QBO) works

A
Written by Andraž Furlan
Updated over 3 weeks ago

This guide explains what the integration imports/syncs between QuickBooks Online and My Hours, what each workflow does, how duplicates are prevented, and which key behaviors and limitations to expect.


QuickBooks Online → My Hours (Customers)

When a Customer is imported/synced from QBO, My Hours creates:

QuickBooks Online

My Hours

Customer

Client + Project (same name)

  • Important: For every QBO Customer, the integration creates both a Client and a same-named Project in My Hours.

  • Not supported (customer flow): Tax name, tax value, and custom ID are not transferred from QBO to My Hours.


My Hours → QuickBooks Online (Invoices)

When an Invoice is sent from My Hours to QBO:

My Hours

QuickBooks Online

Invoice

Invoice

Transferred to QBO (supported):

  • client/customer

  • description

  • due date

  • invoice number

  • discounts

  • all line items (always included, even if “Breakdown by task” is off in My Hours)

Duplicate prevention: The integration writes External ID: mh_invoice_id on each QBO invoice created from My Hours.


Workflows

1) Import of clients and creation of projects with the same name (one-time)

  • Imports existing QBO Customers into My Hours.

  • Creates a Client + Project per customer (same name).

  • Stores the QBO customer ID as External ID on both objects.

Required setting: You must choose the billing settings for newly created projects.


2) Real time sync of customers from QuickBooks (ongoing)

  • Keeps QBO Customers synced to My Hours (ongoing sync, about every 15 minutes).

  • New customers create a Client + Project in My Hours.

  • Existing mapped customers are updated using External ID, which helps prevent duplicates.

Renaming behavior:

  • If a customer is renamed in QBO, the sync workflow does not update the existing client

  • If you later run the import workflow again, it may create a new client/project under the new name.

Required setting: You must choose the billing settings for newly created projects.


3) Transfer invoices from MyHours to QuickBook (ongoing)

  • Creates QBO invoices from My Hours invoices.

  • Runs every 10 minutes, checking 15 minutes back for new invoices.

  • Uses External ID (mh_invoice_id) to prevent duplicate invoices in QBO.


Taxes (Invoice transfer)

QuickBooks uses Tax Agencies (groups), Tax Codes, and Tax Rates. The integration applies taxes differently depending on whether your QBO company is US-based.

US companies (automatic tax)

  • If My Hours invoice Tax value > 0%, and the company is us-based the integration enables QBO automatic tax calculation.

  • QBO calculates tax based on the customer’s address, so tax amounts may differ from My Hours.

  • If My Hours invoice Tax value = 0%, line items are sent without tax.

Non-US companies (manual tax rates)

  • The integration uses the My Hours tax name/value to find or create the correct QBO tax rate.

How tax matching works

  • If My Hours tax looks like “DDV 22%” → the integration looks for a QBO rate named DDV with value 22%; if missing, it creates it.

  • If only the value exists (e.g., “22%”) → the integration uses the first QBO tax rate with that value.

  • If required rates don’t exist → the integration creates a tax agency called “My Hours rates” and adds missing rates under it.

Expenses

  • If an expense is taxed, the same tax logic is applied as for invoice line items.

  • If an expense is not taxed, the integration creates/uses a Non-taxable (0%) rate.


Important limitations (QuickBooks rules)

  • Invoice numbers must be unique in QBO. If two My Hours invoices use the same invoice number, one will fail to create in QuickBooks.

  • Tax rate names must be unique in QBO. If you use the same tax name with different values (e.g., “VAT 22%” and “VAT 10%”), creating the second rate can fail, which may cause the invoice transfer to fail.


Quick setup steps

  1. Connect QuickBooks Online to My Hours.

  2. Enable the workflows you want:

    • Import customers (one-time), and/or

    • Real-time customer sync, and/or

    • Invoice transfer

  3. For customer import/sync, select the billing settings for newly created projects.

  4. Saved configuration workflows start running based on their schedule.


Security & Authentication

How integrations handle authorization:

  • After you connect and authorize any app, My Hours automatically generates an API key for your workspace.

  • This key is required for the integration to run.

  • Data exchange is handled via Paragon, our trusted integration provider.

  • You can disconnect the integration at any time from the Configuration tab (and revoke the API key if needed).

Did this answer your question?