-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the Zao WooCommerce QuickBooks Online Integration plugin wiki!
Table of Contents generated with DocToc
- What this plugin does
- Initial Setup
- QuickBooks Woo Integration Settings
- More Details with Syncing
- Searching for QuickBooks Customers and Products
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.
-
Update your connected product with data from QuickBooks, or disconnect a product.
-
Search for and import a Customer from QuickBooks.
-
Update your connected user with data from QuickBooks, or disconnect a customer.
-
Generates QuickBooks invoices from orders.
-
Provides settings for Zao WooCommerce Wholesale plugin integration.
In order to use the QuickBooks Online Integration, the following steps will be required:
-
If you do not have one, you will need to create an Intuit Developer account.
-
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:
- If asked, do not create your app from the "Sample Apps", instead choose to select the API for a custom app.
- When asked, select the "Accounting" API. The "Payments" API is not needed for this plugin integration.
- 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.
-
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.
-
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).
-
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.
-
Once you have the Keys entered, you can then connect to your QuickBooks app. You can see screenshots of this authorization process here.
-
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.
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.
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.
It's important to understand what details will be updated when updating a WordPress item with a QuickBooks Item.
The QuickBooks product name is derived from the following properties and uses the first property which it finds: Name
, FullyQualifiedName
, Id
.
WordPress Product | QuickBooks Product |
---|---|
name |
QuickBooks product name |
slug |
QuickBooks product name |
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.
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. |
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".
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%
.