Skip to content
Justin Sternberg edited this page Nov 2, 2017 · 14 revisions

Welcome to the Zao WooCommerce QuickBooks Online Integration plugin wiki!


Table of Contents generated with DocToc

What this plugin does

Once setup, this plugin provides functionality for integrating with your QuickBooks Online company. Some of those features include:

  • Search for and import a Product (or service) from QuickBooks.

    Search for and import a Product (or service) from QuickBooks.

  • Update your connected product with data from QuickBooks, or disconnect a product.

    Update your connected product with data from QuickBooks, or disconnect a product.

  • Search for and import a Customer from QuickBooks.

    Search for and import a Customer from QuickBooks.

  • Update your connected user with data from QuickBooks, or disconnect a customer.

    Update your connected user with data from QuickBooks, or disconnect a customer.

  • Generates QuickBooks invoices from orders.

    Generates QuickBooks invoices from orders.

  • Provides settings for Zao WooCommerce Wholesale plugin integration.

Initial Setup

In order to use the QuickBooks Online Integration, the following steps will be required:

  1. If you do not have one, you will need to create an Intuit Developer account.

  2. Create a QuickBooks App. If you already have one, you can access them and get your API keys in your Developer dashboard. More info. Note: If you do not yet have an app set up, you may need to follow these steps:

    1. If asked, do not create your app from the "Sample Apps", instead choose to select the API for a custom app.
    2. When asked, select the "Accounting" API. The "Payments" API is not needed for this plugin integration.
    3. Once complete, you should be redirected to your app settings page. If you click the the "Keys" tab, you will see in the "Production Keys" section the steps you will need to take in order to have access to the production Keys. For testing, you can continue with the Sandbox keys.
  3. Install this plugin and visit the QuickBooks Online Connect plugin page. It can be found under the Settings menu. There you will find the Redirect URI you will need for the next steps.

  4. Using this Redirect URI, you will need to go to the app settings page (under the "Keys" tab), and add it to the list. (hint: For the sandbox environment, this list can include http://localhost URIs).

  5. Back on the QuickBooks Online Connect plugin page, enter your App's OAuth Keys also found on your app settings page (under the "Keys" tab).

    Note: You will use the Development Keys during testing, and leave the plugin's "Sandbox Mode" setting checked. When you are ready for production, you will uncheck that setting, and switch to the Production Keys.

  6. Once you have the Keys entered, you can then connect to your QuickBooks app. You can see screenshots of this authorization process here.

  7. You are now able to perform QuickBooks Customer and Product searches/imports as well as configure the way Invoices are created for orders on the QuickBooks Woo Integration Settings page. This page can also be found under the Settings menu, along with the tabbled menu in any of the QuickBooks Integration pages.

QuickBooks Woo Integration Settings

There are a few settings on this page that may be exposed depending on your site or your QuickBooks configuration. In order to create invoices from orders, The Inventory asset account, Income account, and Expense account for Items will need to be defined. If you only have one account setup in QuickBooks for each category, the settings will not display.

Zao WooCommerce Wholesale Settings

If you have the Zao WooCommerce Wholesale plugin installed, you will have some additional settings exposed specific to the wholesale orders, products, and customers.

  • Import Customers as Wholesalers? - Wholesaler is a custom role introduced by the Wholesale plugin. Checking this will make sure any users imported through QuickBooks are given the wholesaler role.
  • Import Products as Wholesale? - Determines if a Wholesale Category is defined for Items imported through QuickBooks.
  • Limit wholesale customers to QuickBooks customers? - By default, the wholesaler users are not limited to users with connected QuickBooks customers.
  • Disable invoice creation for non-wholesale orders. - By default, all orders will generate a corresponding QuickBooks Invoice, and auto-create an associated QuickBooks Customer from the order customer.

More Details with Syncing

It's important to understand what details will be updated when updating a WordPress item with a QuickBooks Item.

Products

The QuickBooks product name is derived from the following properties and uses the first property which it finds: Name, FullyQualifiedName, Id.

Brought with product import

WordPress Product QuickBooks Product
name QuickBooks product name
slug QuickBooks product name

Syncs with creation and update

WordPress Product QuickBooks Product
sku QuickBooks item Sku property
description QuickBooks item Description property
status 'publish' if the QuickBooks item Active property is true, otherwise is set to 'pending'
tax_status 'taxable' if the QuickBooks item Taxable property is true, otherwise is set to 'none'
price, regular_price QuickBooks item UnitPrice property
manage_stock True if the QuickBooks item TrackQtyOnHand property has quantity
stock_quantity Set to the QuickBooks item TrackQtyOnHand property if quantity > 0

Many of the QuickBooks Product properties that do not correspond directly to WooCommerce properties are stored as meta values to the WordPress Product.

Customers

The QuickBooks customer company name is derived from the following properties and uses the first property which it finds: CompanyName, DisplayName, FullyQualifiedName, PrintOnCheckName, Id.

WordPress User QuickBooks Customer
user_nicename QuickBooks customer company name
display_name QuickBooks customer DisplayName property, or fall back to the QuickBooks customer company name
nickname QuickBooks customer AltContactName property, or fall back to the QuickBooks customer company name
first_name, billing_first_name QuickBooks customer GivenName property, or fall back to the QuickBooks customer company name
company, billing_company QuickBooks customer company name
user_url Set to the QuickBooks customer WebAddr property, if it is set.
user_email, billing_email Set to the QuickBooks customer PrimaryEmailAddr->Address property, if it is set.
description Set to the QuickBooks customer Notes property, if it is set.
last_name, billing_last_name Set to the QuickBooks customer FamilyName property, if it is set.
billing_address_1 Set to the QuickBooks customer BillAddr->Line1 property, if it is set.
billing_address_2 Set to the QuickBooks customer BillAddr->Line2, BillAddr->Line3, BillAddr->Line4, BillAddr->Line5 properties if they exist.
billing_city Set to the QuickBooks customer BillAddr->City property, if it is set.
billing_state Set to the QuickBooks customer BillAddr->CountrySubDivisionCode property, if it is set.
billing_country Set to the QuickBooks customer BillAddr->CountrySubDivisionCode or BillAddr->Country properties, if set.
billing_postcode Set to the QuickBooks customer BillAddr->PostalCode property, if it is set.
billing_phone Set to the QuickBooks customer PrimaryPhone->FreeFormNumber property, if it is set.

Invoices

Currently, WordPress Orders are not updated with data from Quickbooks Invoices. However, the connected QuickBooks invoice is updated with the WordPress data:

QuickBooks Invoice WordPress Order
BillEmail Address->value The QuickBooks Customer ID attached to the Order customer. If there is not an associated Customer ID, the plugin will attempt to create a QuickBooks customer from the Order customer's data. If this fails, and we cannot get a Customer ID, then a QuickBooks Invoice will not be created.
BillEmail->Address The Order billing email address
DocNumber The Order ID
BillAddr The Order billing address (if it is set)
ShipAddr The Order shipping address (if it is set)
SalesTermRef The QB Customer's SalesTermRef (Sales Terms reference id) value (if found with the QB Customer object)
ShipMethodRef The Order Shipping method, or falls back to the QB Customer's ShipMethodRef (Shipping Method reference id) value (if found with the QB Customer object)
CustomerMemo If any coupons were used, a summary of the coupons used will be synced via the Customer Memo field
Line An list of the Order Items
Line->[(item)]->Description The Order item name
Line->[(item)]->Amount The Order item total
Line->[(item)]->SalesItemLineDetail->UnitPrice The Order item price
Line->[(item)]->SalesItemLineDetail->Qty The quantity for the Order item
Line->[(item)]->SalesItemLineDetail->ItemRef->value The assocatiated QuickBooks Item Id for this Order item (if found)
Line->[(item)]->SalesItemLineDetail->ItemRef->name The Order item name

The Order->Invoice syncing will only occur if the Order's status is not set to "Completed".

Searching for QuickBooks Customers and Products

In the WordPress Admin, You can find the link to the "QuickBooks Customers" search page under the Users menu, and you can find the "QuickBooks Products" search page link under the WooCommerce menu item.

You can also get to these pages using the tabbed navigation found in the various QuickBooks Integration settings pages.

The search provides multiple parameters for searching.

Customers:

  • Company Name
  • Company ID

Products:

  • Item Name
  • Item ID

By default, these will perform "fuzzy" searches, trying to find any results which match the given term. If you want more control of the search parameters, you can use the % character to indicate a wildcard. For instance, to search for all Customers whose email ends with zao.is, you can search for %zao.is%.