QuickBooks Online

Requirements
QuickBooks: Available to QuickBooks Online users only Plan: Merchants must be signed up to the Professional or Enterprise plan Platform: Merchants must be using Shopify
Introduction
QuickBooks Online provides online accounting tools for managing finances, invoices, inventory and customer records. With the SparkLayer integration, your B2B orders automatically sync to QuickBooks to create invoices and contacts - reducing manual data entry and removing the need for additional apps or systems to keep your platforms in sync.
⚠️ Pre-Requisites - important!
The following areas need to be configured prior to enabling the integration.
Item | Details |
|---|---|
Products | All B2B products need to be created in QuickBooks with the applicable tax rates applied |
Shipping | In order for shipping to be applied at invoice-level, shipping needs to be enabled in QuickBooks |
Getting started
To get started, login to your SparkLayer dashboard and navigate to Integrations -> Partner Integrations -> Accountancy -> QuickBooks and enable the integration. You will then be redirected to QuickBooks to complete authentication. You will also be notified about which data we require access to at this stage.
Please note If your QuickBooks account is associated to multiple companies then you will be requested to select which company you want to connect with SparkLayer. Only one company can be connected per SparkLayer team.
Once you are connected, you can navigate back to the Partner Integrations page and modify the integrations configuration. You'll need to follow the steps below ("Configuration") to complete the setup.
Configuration
The following configuration options exists for the QuickBooks integration;
Setting | Description |
|---|---|
Automatic Contact Creation | This is not set on install, and must be configured before using the integration Controls whether SparkLayer should create customers in QuickBooks during the invoice synchronisation process. When creating invoices, each invoice must be associated with a customer in QuickBooks. We first attempt to match an existing contact (as outlined in the Contact Matching section). If no match is found, this setting determines what happens next:
|
Payment on account - Invoice creation trigger | Default: On order Controls when an invoice should be created for orders using the payment on account payment method.
You can read more about payment on account orders below. |
Enable Sales Receipts | Enable this to generate sales receipts in QuickBooks for upfront payment orders |
Shipping Tax Code | Name of the tax code that should be applied to invoice lines for tax exempt users. This must be set in order for invoice synchronisation to succeed. |
Tax Exemption Tax Code | Name of the tax code that should be applied to tax exempt invoice lines. |
Income Account | Name of the account that should be used as the income account on new products - this will be used when creating the SparkLayer custom product |
Custom Items
On installation, a "SparkLayer Custom Product" product is created within QuickBooks that will be used when a custom item is added to an order within SparkLayer.
To ensure an invoice can be successfully created, the applicable tax rate on this product needs to be set before use. You can set this in the same way as other products within QuickBooks.
Invoice Creation
SparkLayer automatically creates invoices in QuickBooks for eligible orders as soon as the order is received from your platform.
Please note This process runs in the background to keep the checkout experience fast and uninterrupted, which means there may occasionally be a short delay before the invoice appears in QuickBooks.
Orders eligible for invoicing
Whether an invoice is created depends on several conditions, including your integration settings and the specific details of the order.
Item | Details |
|---|---|
Fulfilment status | We only create invoices for orders that are in either the processing or shipped fulfilment status. |
Payment method | Invoices are generated only for orders using either the Payment by Invoice or Payment on Account payment methods.
You can learn more about configuring these methods our guide here |
Payment on account orders & split shipments
The integration configuration allows you to decide when invoices are created for orders that use the payment on account payment method. Invoices can be created either on order or on shipment.
If you have configured your integration for on order then an invoice will be created when the SparkLayer order reaches the processing state.
If the integration is configured for on shipment then an invoice will be created at the time an fulfillment has been fulfilled on the order. This handling caters for split fulfillments as will we will create an invoice per fulfillment, containing only the line items fulfilled.
Customers will be able to download all invoices associated with an order from their my account section.
Note: If the integration is configured to create orders on shipment and changed to on order and partially fulfilled orders will not have invoices created for the remaining shipments. Please ensure any partially fulfilled orders are completed before changing this configuration.
Shipping In the case of split shipments, the shipping method associated with the order will always be attached to the invoice created for the first shipment on the order.
How invoices are created
Invoices are generated using the QuickBooks API. Each invoice is created using a combination of:
- Data from the SparkLayer order
- Your integration configuration
- Relevant settings within QuickBooks
The specific fields and logic used are outlined below.
Item | Details |
|---|---|
Contact | We attempt to match the invoice to an existing QuickBooks contact using the customer details from the SparkLayer order. If a match is found, the invoice is associated with that contact. You can read more about how contact matching and syncing works in detail here. |
Billing Address | The billing address shown on the invoice is taken from the order billing address. |
Due Date | The due date calculated for an invoice is dependant on three factors:
|
Due Date for Payment by Invoice orders | For orders using the payment by invoice payment method, the due date is set to the order date. |
Due Date for Payment on Account orders | For orders using the payment on account type, the due date is calculated in the following hierarchical order:
|
Line Item |
|
Shipping | If shipping enabled in QuickBooks, the shipping amount will be set on the invoice, with the shipping method reflecting the name of the service chosen and the price visile in the totals. If shipping is disabled in QuickBooks it will be added as a line item to the invoice. The shipping line will use the Shipping Tax Code specified in the configuration |
Viewing Invoices
Once an invoice has been created in QuickBooks, customers can access it directly from the My Account section of your store. When the invoice is ready, a View & Download Invoice button will appear on the relevant order.

Selecting this button will take the customer to the publicly accessible invoice URL generated by QuickBooks. If this button is not visible, please review our troubleshooting steps below.
Contact matching & creation
When creating an invoice, we first attempt to associate it with the correct QuickBooks customer using the customer details from the SparkLayer order.
How contact matching works
Contacts are matched in the following order:
- Account number match (Recommended) - we check for an existing QuickBooks contact with an ID that matches the accounting ID metafield configured against the customer in SparkLayer
- Email match - If no account number match is found, we attempt to match using the customer’s email address.
If a match is found for either of these conditions, the invoice is associated with the matching contact.
Multiple contacts for a single email
Please note If your organisation uses multiple contacts with the same email address, we recommend configuring unique account numbers for each contact to ensure reliable matching.
In SparkLayer, email addresses are unique - only one customer account can exist per email address. In QuickBooks, email addresses are not unique, meaning multiple contacts can share the same email.
If multiple active QuickBooks contacts exist for the customer’s email address, and the currency of the invoice matches the customer, the invoice will be created against the oldest found customer.
Automatic contact creation
If no existing contact can be matched using the methods above, SparkLayer will automatically create a new contact in QuickBooks using the customer data from the order. This behaviour is controlled by the Automatic Contact Creation setting in your integration configuration.
Data synced on contact creation
When a contact is created in QuickBooks, the following information is synced once and is not automatically updated if changes occur later in SparkLayer:
- First name & last name
- Email address
- Billing & shipping address (based on the order being invoiced at the time of matching)
- Currency will be set to the currency of the invoice being created
Disabling the integration
To disable the integration, log in to your SparkLayer Dashboard and navigate to Integrations → Partner Integrations → Accountancy → QuickBooks, then toggle the integration off.
Please note If the integration is disabled, all related features will stop working.
- No invoices will be created for orders placed while the integration is disabled.
- Customers will no longer be able to access their QuickBooks invoices previously generated via SparkLayer using the link in their My Account section.
FAQ's
Troubleshooting
Below are some common issues and steps to help resolve them. If your issue isn’t listed, or the problem persists after following these steps, please contact our support team.
Known limitations
Please note the following:
- Products must be setup in QuickBooks, with a SKU that matches Shopify and the correct tax rate applied.
- Invoice creation in QuickBooks is one-way. Any changes made to invoices in QuickBooks, such as modifications to line items or customer details will not be reflected back in SparkLayer or your platform.
- Apportioned tax rate for shipping line is not currently supported
- Multi-currency is not currently supported where a customer has an existing invoice for another currency.