QuickBooks Online For WHMCS
About QuickBooks Online For WHMCS
QuickBooks Online For WHMCS is responsible for data synchronization between your system and QuickBooks, it is a comprehensive, accounting software solution. The module will let you manage the integration of your clients details, invoices and transactions into QuickBooks database. |
- Module Features:
✔ Export Manually: |
✔ Clients |
✔ Invoices |
✔ Transactions |
✔ User Credits |
✔ Export Automatically: |
✔ Clients |
✔ Invoices |
✔ Transactions |
✔ User Credits |
✔ Import Manually via Cron: |
✔ Customers |
✔ Invoices |
✔ Transactions |
✔ Manage Relations: |
✔ Clients |
✔ Products |
✔ Domains |
✔ Addons |
✔ Invoices |
✔ Tax Rules |
✔ Payment Gateways - Including Currencies And Payment Deposits |
✔ Transactions |
✔ User Credits |
✔ Create Own Custom Rules |
✔ Set Relations Automatically Or Manually |
✔ Force Update And Lock Status Of: |
✔ Clients |
✔ Invoices |
✔ Transactions |
✔ Credits |
✔ Toggle Update Of Invoice Item Relation On Its Edition |
✔ View Export And Cron Run Summary |
✔ Define Automatic Export Settings Of: |
✔ Client |
✔ Invoice |
✔ Payment |
✔ Refund |
✔ Credit |
✔ Define Default Products Item |
✔ Define Default Addons Item |
✔ Define Default Domains Item |
✔ Define Default Refund Receipt Item |
✔ Define Default Promotional Item |
✔ Define Default Credits Item |
✔ Define Tax Zero-Rated |
✔ Define Tax Type |
✔ Define Client Name Display Format |
✔ Define Customer Tax ID Custom Field |
✔ Define Gateway Fee Account |
✔ Define Fee Gateways |
✔ Define Shorten Transaction ID Method |
✔ Define Webhooks Token |
✔ Define Synchronization Settings |
✔ Toggle Debug Mode |
✔ Configure Failure Notifications |
✔ View Logs |
✔ View Revision History |
- General Info:
✔ Multi-Currency Support |
✔ Refunds Support |
✔ Can Work Along Other Systems On Single QuickBooks Account |
✔ Multi-Language Support |
✔ Supports OAuth 2.0 |
✔ Supports PHP 8.2 Back To PHP 7.4 |
✔ Supports WHMCS V8.11 Back To WHMCS V8.8 |
✔ Easy Module Upgrade To Open Source Version |
- Requirements:
✔ QuickBooks Online Account |
✔ ionCube Loader V13 Or Later |
✔ OAuth PHP Library - Connect Using Secure Protocol |
Installation
This tutorial will show you how to successfully install and configure QuickBooks Online For WHMCS. We will guide you step by step through the whole installation and configuration process. |
1. Log in to our client area and download the module. |
2. In the downloaded file you find a package that supports PHP 7.3 up to 8.1. version. Note: You can check the current PHP version in your WHMCS. To do so, proceed to 'Utilities' → 'System' → 'PHP Info'. |
3. Extract the package and upload its content into the main WHMCS directory.
The content of the package to upload should look like this. |
4. When you install QuickBooks Online For WHMCS for the first time you have to rename the 'license_RENAME.php' file. The file is located in 'modules/addons/QuickBooks/license_RENAME.php'. Rename it from 'license_RENAME.php' to 'license.php'. |
5. In order to configure your license key, you have to edit the previously renamed 'license.php' file. Enter your license key between quotation marks as presented on the following screen. You can find your license key in our client area → 'My Products'. |
6. Now you have to activate the module in your WHMCS system. Log in to your WHMCS admin area. Go to 'Setup' → 'Addon Modules'. Afterwards, find 'QuickBooks' and press the 'Activate' button. |
7. In the next step, you need to permit access to this module. To do so, click on the 'Configure' button, check the required group of administrators, and press 'Save Changes'. |
8. You have just successfully installed QuickBooks Online For WHMCS! You can access your module under 'Addons' → 'QuickBooks'. |
Configuration and Management
QuickBooks Online For WHMCS is a module that allows you to export any data on clients, invoices, and payments directly to QuickBooks. Read the below manual to learn about all the possibilities that the module offers. |
API Keys
Before you move to the essential configuration of the module, you need to generate some data directly in QuickBooks. Please follow the steps below. 1. Log in to: https://developer.intuit.com/
|
2. Once you are logged in, move to 'Dashboard' and find the 'Apps' tab on the 'My Apps Dashboard', press 'Create an app'. |
3. Select the following platform: 'QuickBooks Online and Payments' . |
4. Then provide a name of your app and choose the 'Accounting' scope on the list. |
5. Now, go to the 'Production Settings' tab and provide the 'End User License Agreement URL' along with 'Privacy Policy URL' in the 'Terms of Service Links' section.
Save the changes when all data is provided. |
6. Then, proceed to the 'Keys & Credentials' section where you will be asked to fill out a 30-minute questionnaire. Only once ready you will get access to your Keys & Credentials section. |
7. You need to provide a proper callback QuickBooks URI from your WHMCS installation in the following format:https://yourdomain.com/admin/addonmodules.php?quickBooksCallbackOauth2 Note that your 'admin' folder might have a different name than the default one. The provided URL also has to start with https:// .
These keys are very important, you will need them in the very next step of the module configuration. Please keep them safe. |
8. Now move to the 'Webhooks' tab. Here you will have to generate a token that will be used to enable Webhooks for synchronization. First of all, provide a valid Endpoint URL to the 'webhooks.php' file. That is what such a URL may look like. Please remove 'yourdomain.com' and insert your actual address. https://yourdomain.com/modules/addons/QuickBooks/webhooks.php Note: The provided URL has to start with https:// . Then select the required events that will be triggered. |
8. Copy adequate Verifier token. It will be necessary during the module configuration. |
Configuration
In order to configure your module properly, proceed to 'Addons' → 'QuickBooks Online' → 'Configuration'. |
1. Start with API configuration, since this part is very basic and absolutely necessary to take any further steps. Currently, your 'Connection Status' is 'Not Connected'. In order to establish a connection with QuickBooks Online, press the connection button: |
A box will appear where you will have to type in all the previously generated data. It will allow the module to authenticate your identity in QuickBooks system and let your WHMCS connect with it.
|
If the entered data are correct, you will be redirected to QuickBooks where you will have to agree to authenticate the connection. Only then the connection status in your module will change to 'Connected,' the data on your company will be automatically downloaded from QuickBooks and filled out here. From now on, you will be able to use your QuickBooks Online For WHMCS module. |
You have to do this step only once. Entering the token and consumer keys will not be required again, even if the module is deactivated in the meantime. |
2. Webhooks Token - enter the token to maintain synchronization. Use the token generated as explained in steps 7 and 8 in the API Keys section. |
3. Cron configuration - set up cron jobs.
php -q modules/addons/QuickBooks/cron/synchronization.php --export --invoices-from= for example: php -q modules/addons/QuickBooks/cron/synchronization.php --export --invoices-from=2018-01-01 In the above case, clients with their invoices since 01.01.2018 will be exported to QuickBooks.
Note: Please refer to the Tips section to learn how to import the QuickBooks clients, invoices, and their transactions into the WHMCS system using the CLI cron job commands. |
4. Multi-Currency configuration. If the connection with QuickBooks has been set up properly, currency details will be visible.
The above data are synchronized with your QuickBooks account. |
5. Synchronization Settings - decide which of the possible synchronization options you want to enable. Simply tick the ones you are interested in. |
There are: Clients synchronization:
Invoices synchronization:
Payments synchronization:
Refunds synchronization:
Credit synchronization:
|
Apart from choosing required synchronization options, you have to decide which items from QuickBooks, 'Products ', 'Addons', 'Domains', 'Refund Receipt & Credits Item' and 'Promotional Item' will be associated with. Note: Default Product will be used only when there is no relation set for the selected product in 'Relation: Product' section. Choose other options from the dropdown menu to set up.
|
Thanks to the 'Failure Notifications' you can select one administrator who will receive an email notification (in either hourly or daily intervals) about failures in the selected items. Note: If you want to enable these notifications you also have to set up the following additional cron job runs hourly or daily depending on the chosen 'Time' option: php -q /your_whmcs/modules/addons/QuickBooks/cron/cron.php --failureNotifications Remember to 'Save Changes' when your configuration is ready. |
Management
In this section, we will show you the possibilities of QuickBooks Online For WHMCS. Once the module has been properly connected with QuickBooks and the entire configuration is complete, we can move on to the 'Export' section. |
Export
Our module enables several ways to export any data gathered in your WHMCS. Read the below points to learn what data can be synchronized with QuickBooks and what are the possible means of such synchronization. |
Clients
The first option offered by our module is the export of clients from WHMCS to QuickBooks, proceed to 'Export' → 'Clients'. If you are using QuickBooks Online For WHMCS for the first time, you will see here a list of all clients who exist in your WHMCS and have not been synchronized with QuickBooks yet. Use the filter to find clients with their accounts created within the period of time specified in the filter. |
Now, you can manually export all of the clients available on the list or choose only some of them. Check boxes next to the clients you are going to export and press the 'Export' button as marked on the screen. If you want to export only one client you can do it by pressing the 'Export' button located in the 'Action' column next to the name of the client. |
If a client has already been exported from WHMCS to QuickBooks, they will no longer be visible on the list. All clients newly added to WHMCS will be automatically synchronized with QuickBooks, unless set otherwise in 'Synchronization Settings'. |
Invoices
The other choice is the export of invoices. Proceed to 'Export' → 'Invoices' and you will find a list of all invoices existing in our WHMCS that have not been synchronized with QuickBooks yet. In details, you will find the information on the invoice:
|
Just like in case of clients:
|
Once you have exported some of the invoices, you will see their number along with the number of any transactions connected with them in the 'Summary' table on the dashboard. |
Keep in mind that all invoices added after the first usage of QuickBooks Online For WHMCS are automatically synchronized and exported to QuickBooks unless otherwise stated in 'Synchronization Settings'. |
Transactions
The next choice is the export of transactions. Proceed to 'Export' → 'Transactions' and find a list of all transactions in our WHMCS that have not been synchronized with QuickBooks yet. Note: Only transactions with already exported invoices are on the list of available to export. |
In details, you will find the information on the transaction:
|
Allowed actions:
|
Keep in mind that all transactions added after the first usage of QuickBooks Online For WHMCS are automatically synchronized and exported to QuickBooks unless otherwise stated in 'Synchronization Settings'. |
User Credits
Finally, the last section is dedicated to the export of user credits. Proceed to 'Export' → 'User Credits' and find a list of credits per user, existing in your WHMCS that have not been synchronized with QuickBooks yet. |
In details, you will find the information on:
|
Allowed actions:
|
Keep in mind that all user credits added after the first usage of QuickBooks Online For WHMCS are automatically synchronized and exported to QuickBooks unless otherwise stated in 'Synchronization Settings'. |
Relation
It is possible to manually declare relations between WHMCS clients, products as well as invoices and corresponding to them QuickBooks elements. This feature is especially helpful when you need to avoid confusion and misunderstandings. |
Relation: Clients
The first possible relations to be declared are relations of WHMCS clients towards the client's account in QuickBooks. Proceed to 'Relation' → 'Clients', you will find there a list of all clients, with their email addresses, that exist in WHMCS, |
The action buttons give you more control over record updates.
|
Relation: Products
Products relations can be declared manually and for each product separately along with those declared in 'Configuration' → 'Synchronization Settings'. Proceed to 'Relation' → 'Products', you will find there a list of all products with their type and payment standard. |
When looking for matches automatically, you will get a full view of searched items with positive or negative results. |
If you need, you can add new products to QuickBooks' items list, just press the 'New Product' button marked on the screen below. |
Name the new item, you can describe it shortly in addition, state its price/rate and choose an account. Once you save changes, the new item will be visible on the QuickBooks item dropdown menu. You can now use it to assign WHMCS products to it. |
For different billing cycle you can also assign the item that will have its own cycle in QuickBooks. Just press the action button, select one from dropdown menu and save changes. |
Relation: Domains
In 'Relation' → 'Domains' tab, you will find a list of all WHMCS domains with their TLD. Assigning a WHMCS domain to another QuickBooks item is possible. Just choose such a domain from a dropdown menu and save changes. |
Relation: Addons
You can assign addons to the items already existing in QuickBooks. Just go to 'Relation' → 'Addons' directory and choose the addon from a dropdown menu. Remember to save changes. |
It is also possible to add a new addon. To do so, just click the button as shown above and provide some details. Name the new item, you can also describe it shortly, state its price/rate and choose an account. Once you save changes, the new addon will be visible on the QuickBooks item dropdown menu. You can now use it to assign WHMCS products to it. |
Use the 'Match Addons' button to find any matches automatically. |
Relation: Invoices
In 'Relation' → 'Invoices' directory, you will find a list of all WHMCS invoices with their ID, date of creation, assigned client, total sum on it and status. It is possible to assign the WHMCS invoice to another invoice already exported to QuickBooks. Just choose such an invoice from a dropdown menu and save changes. |
The action buttons give you more control over record updates.
|
Relation: Tax Rules
In 'Relation' → 'Tax Rules' directory, you will find a list of defined tax rules. Assign each rule to a specific QuickBooks tax. Select one from a dropdown menu and save changes. |
Relation: Payment Gateways
In 'Relation' → 'Payment Gateways', there is a list of active payment gateways, select a QuickBooks Payment Method for each of the gateways. Save the changes when ready. When you click the button in the 'Action' section, you can set relations for the previously chosen payment method. |
Define the relation by assigning one of the QuickBooks payment deposits to a single currency. |
In this way, the relation between the payment method and the payment deposit, per currency, has been set. Note: In order to be able to assign an account to a currency, this currency must be previously properly configured in the QuickBooks Online panel → 'Account'. |
Transaction Fees It is possible to configure the payment gateway account where transaction fees will be delivered. |
Relation: Transactions
In 'Relation' → 'Transactions', there is a list of transactions. Select the one you wish to use from a dropdown menu. Save changes. Use the 'Match Transactions' button to automatically find an existing relation in QuickBooks without a manual search for every single transaction. |
The action buttons give you more control over record updates.
|
Relation: User Credits
Finally, in 'Relation' → 'User Credits' section, you may find a list of existing credits. Select the QuickBooks credit equivalent per single credit from a dropdown menu and then save the changes. Use the 'Match Credits' button to automatically find an existing relation in QuickBooks without a manual search for every single credit. |
The action buttons give you more control over record updates.
|
Relation: Custom Rules
The last on the list of 'Relations' → 'Custom Rules', allows creating and management of existing custom rules. Its aim is to manage items that exist on the invoice but have no relation. The rule task checks if these items have any matching type in QuickBooks. Press ' Add New' button to create a custom rule. |
Provide necessary details of the created rule to make it work properly. These are:
Press 'Save Changes' when ready. |
A new rule appears on the list immediately. You may edit its specification at any moment, just press the icon marked on the screen (1). |
Automatically Match Relations
As you have noticed in the above sections, there is an option to find appropriate matches in QuickBooks and set the relations between the items within one group (e.g. Products or Domains) automatically. All you have to do is press the 'Match Products/Domains/Invoices' etc. button. You will be asked to confirm the action and soon after that the process of looking for matches stars. |
Here you can find a detailed list of items taken into consideration by the module when looking for a match in QuickBooks: |
WHMCS Item | Matched Feature |
---|---|
Clients | |
Products | Name |
Domains | Name |
Addons | Name |
Invoices | Invoice ID |
Transactions | Transaction ID |
User Credits | Amount, Date of Creation |
|
Utilities
The module features additional utilities that can assist you in various ways. Each tool serves a unique purpose, as detailed in the section below. By utilizing these additional utilities, you can easily understand the inner workings of the module on the elementary level. |
Logs
In the 'Logs' tab there are enumerated ALL actions on clients, invoices and transactions. Regardless if they were taken manually in the module, automatically or by a cron job. A list of all entries with precisely described details and an exact date of the action can be found there. |
Clear all the entries or delete only some of them. Use the buttons marked on the screen above. |
Revision History
All changes made by the module to the QuickBooks Online platform are stored here, so you can easily compare any differences made with each update. Use the action button to see related items. |
Dashboard
'Dashboard' includes two useful and user-friendly tables. The first one - 'Summary' - contains data on the number of exported clients, invoices and payments together with refunds. |
Documentation
The very last tab 'Documentation' will, once clicked, redirect you to the article you are currently reading. |
Use Cases
This section provides real-world examples of how the module can be used. It includes specific scenarios that illustrate typical use cases and explains how the module's features can be applied in practice. |
Importing QuickBooks Items
QuickBooks Online For WHMCS has a complex solution for existing QuickBooks Online panel users that already have a robust database of clients, invoices and transactions. There is no need to start over because you can import everything effortlessly and reliably. See the instructions below to learn how. |
First, we need to run a cron command that will import clients, invoices and transactions for us. Here is a list of commands:
And the cron itself: php -q /yourWHMCS/modules/addons/QuickBooks/cron/synchronization.php --importInvoices --from='2022-09-09' Run the cron with each of the commands as needed, the date modifier is optional, if it is not included, all items from the category will be imported. |
Once the data is imported, you should notice that each entity has the update lock ON by default. This is the case for each of the imported entities (Clients, Invoices, Transactions). |
If we change the data in WHMCS, in this case, the company name and try to update the new information into the QuickBooks Online panel, the attempt will be blocked. |
The lock can be disabled, allowing admins to freely upload the changes to the QuickBooks Online panel. |
However, if we generally want to keep the details from being edited, but still want to change something specific, we can force the update and ignore the restrictions. |
Tips
1. The status of the invoice in QuickBooks may differ from the one visible in WHMCS. It will be marked as paid only if it is associated with payments of exactly the same amount. If there was no such real payment, the invoice will be marked as 'Unpaid'. |
2. It is possible to import QuickBooks clients, invoices, and their transactions into the WHMCS system using the CLI cron job commands. Relations of the imported items will be locked by default. Use the following commands to run tasks:
for example: php -q /yourWHMCS/modules/addons/QuickBooks/cron/synchronization.php --importInvoices --from='2022-09-09' or without a specified date: php -q /yourWHMCS/modules/addons/QuickBooks/cron/synchronization.php --importTransactions |
Update Instructions
An essential guidance through the process of updating the module is offered here. Ensure successful completion of the module update by carefully following each step, thereby preventing data loss or any unforeseen issues. |
Upgrade Guide
Seeking a solution that offers greater flexibility, customization tailored to your precise needs, and unrestricted availability? There is an option that not only proves to be cost-effective in the long run but also includes prioritized support services, making it a truly valuable investment. Opt for the Open Source version of your QuickBooks Online For WHMCS module to unlock these benefits. Follow a comprehensive guide covering the transition process, the advantages it brings, and step-by-step instructions on what to do next after the order has been successfully finalized. |
Common Problems
1. When you have problems with connection, check whether your SELinux or firewall does not block ports. |
2. Should you have problems with upgrading QuickBooks Online product to version 1.3.0, set again the relations of payment deposits in the 'Payment Gateways' section. |
3. It may happen that taxes are counted incorrectly for invoices with multiple items where part of the items is taxed and some are not. Please, be careful! |
4. In case you encounter any issues with installation and configuration please make sure you have OAuth PHP Class installed. Without that, the module will not work properly. |
5. You may encounter the API '#OAuthException' error with 'making the request failed (dunno why)' message during configuration. If so, first try to enable 'allow_url_fopen' option in your PHP configuration by setting up the 'allow_url_fopen = on' line in 'php.ini' file and restart the apache2 server. If you need more information you may check it here. |
6. It may happen that the following error occurs when attempting to connect QuickBooks Online service: 'We're sorry! We're experiencing some problems. Please try again later.' In that case, make sure you have set up the 'Redirect URI' correctly, as described here. |
7. Applications created before July 17th, 2017 which are still using OAuth 1.0 authentication method are no longer supported by the module. Please create a new application that will support OAuth 2.0 or contact Intuit support to migrate your old application to OAuth 2.0 at https://intuit.me/intuit-oauth2. |
8. If you encounter an error:Required param missing, need to supply the required value for the API Required parameter TxnTaxDetail.TaxLineDetail.TaxLine.TaxRateRef is missing in the request. Solution: Make sure that relations for the tax rules are set up correctly. |
9. If you encounter an error caused because the synchronization is done for a period already closed in QuickBooks Online similar to this:Property QuickBooksDSK\IPPPayment::$ProjectRef does not exist. Class QuickBooksSDK\IPPPayment Solution: |
10. If, after adding credits to a WHMCS invoice, you encounter problems with synchronizing the status of that invoice in the QuickBooks panel, please make sure that the option "Add - synchronization when the credit is added to invoice" is enabled in our addon. Otherwise, the invoice will still be marked as "Unpaid" although credits have been applied. |
11. In case the WHMCS feature "Enable Proforma Invoicing" (for unpaid invoices) is enabled, the module has to wait until the invoice has been paid to synchronize it. |
12. In case the transaction has been incorrectly assigned, you may attempt to change the assignment by following the below steps:
If the issue persists:
DELETE FROM quickbooks_payments WHERE quickbooks_payments.invoice_id = "304";
|