...
Magento Customer | QBO Customer |
First name | Given Name |
Last name | Family Name |
ID | Suffix |
Telephone | Phone |
Default Billing Address | Bill Address |
Default Shipping Address | Shipping Address |
First name + Last name + ID | Display Name (unique) |
qbo_id | ID |
Product
Magento Product | QBO Item |
Name | Name, PurchaseDesc, FullyQualifiedName |
Short Description | Description |
Price | Unit Price |
Tax Enable | Taxable |
Sku | Sku |
Qty | Qty On Hand |
Created At | Inventory Start Date |
Qty On Hand and Inventory Start Date requires QuickBooks Online Plus plan or above. QBO Item name depends on setting on Magento (use Product name/use product SKU/use both name and SKU )
Order
Magento 2 Order | QBO Open Invoice |
Increment ID | Document Number |
Customer | CustomerRef |
Items | Line Items |
Grand Total | Total Amount |
Customer Email | Billing Address |
Tax | TnxTaxDetail -> Total Tax |
Created At | TnxDate |
Product Qty | Quantity each product in order |
Price Each Product | Rate |
Total amount each Product | Amount |
Discount Amount | Discount |
Shipping Fee | Shipping |
Billing address | Billing address |
Shipping Address | Shipping Address |
Invoice
Magento Invoice | QBO Payment |
Method QBO ID | Payment Method Ref |
Created At | TxnDate |
Tax Amount | TxnTaxDetail -> Total Tax |
Customer Reference | CustomerRef |
Order ID | Linked Invoice ID |
Grand Total | Total Amount |
Customer Email | Billing Email Address |
Credit Memo
Magento Credit Memo | QBO Credit Memo |
Increment ID | Document Number |
Created At | TxnDate |
Tax Amount | TxnTaxDetail -> Total Tax |
CustomerRef | Customer Reference |
Items | Line Items |
Item qty | Qty |
Product price | Amount |
Amount product | Total |
Shipping Fee | Shipping |
Discount Amount | Discount |
Grand Total | Total Amount |
Customer Email | Billing Email Address |
Common Issues
The redirect_uri query parameter value is invalid.
Cause: the redirect URI on the Intuit app is different from the URI on Magento installation.
Reason: the redirect URI shown on Magento QuickBooks Online config page is [website base URL]+’qbonline/connection/success’. The real redirect URI might be different due to Magento settings or web server settings.
How to solve: find the real redirect URI of Magento site:
Copy the redirect URI and open this link on new browser tab.
Copy the final URL in the address bar (ends in ‘qbonline/connection/index/’).
Change the final URL to end with ‘qbonline/connection/success’ and use the modified address as redirect URI on Intuit App.
Save the Intuit app then reconnect.
Make sure all your transactions have a tax rate before you save
Cause: QuickBooks tax is not properly set on Magento.
Reason: some countries i.e. UK or Canada requires all sale items to have a tax code, including tax-free items, which needs to have a 0% rate attached.
How to solve: verify the following steps are performed on Magento backend:
On Tax Code Mapping menu, choose ‘Add All Tax Codes’ then ‘Synchronize’ . Synced tax rates will have a ‘Tax ID in QBO’ value. If there are rates without value after syncing, please check History Logs menu for the cause
On QuickBooks Online config page, on Tax and Country Settings, select your country. If Free Tax and Tax With Shipping option shows up, select the appropriate rate for them (if your site doesn’t have a 0% rate, our extension creates a tax_zero_qb 0% rate which you can choose instead)
Save Config and resync failed transactions
Invalid header line detected’ for all requests to QuickBooks, or Config page is blank'
Cause: Magento 2 doesn’t intercept responses from QuickBooks correctly.
Reason: QuickBooks have started sending responses in HTTP/2 instead of HTTP/1.1 . Some versions of Magento 2 doesn’t read HTTP/2 responses correctly.
How to solve: patch the bug with reading HTTP/2 responses.
Backup the file at [site root]/vendor/magento/zendframework1/library/Zend/Http/Response.php
Open this file with a text editor and find the following 2 lines:
if (! preg_match('|^\d\.\d$|', $version) ) {
(around line 185) and change it to
if (! preg_match('|^\d(\.\d)?$|', $version)) {
if ($index === 0 && preg_match('#^HTTP/\d+(?:\.\d+) [1-5]\d+#', $line)) {
(around line 517) and change it to
if ($index === 0 && preg_match('#^HTTP/\d+(?:\.\d+|) [1-5]\d+#', $line)) {
- Save the file, clear cache and try again.
...