A Python toolkit for automating QuickBooks Desktop via the GUI
Project description
QuickBooks GUI API
QuickBooks GUI API is a Python toolkit for automating common tasks in QuickBooks Desktop. It wraps the pywinauto library to control the QuickBooks user interface and exposes both a command line interface and Python classes for automation scripts. The project can launch and log in to QuickBooks, manage encrypted credentials, and save invoices or reports to disk. It is designed for Windows environments where QuickBooks Desktop is installed.
Features
- Startup / Shutdown – programmatically start QuickBooks, open a company file and log in, then gracefully terminate all QuickBooks processes when done.
- Invoice Automation – open invoices by number and export them as PDF files.
- Report Automation – open memorized reports and export them to CSV files.
- Encrypted Credentials – helper commands to store and verify login details encrypted in the project configuration.
Installation
Install from PyPI:
pip install qb-gui-api
Ensure Tesseract OCR and QuickBooks Desktop are installed on the machine. If working from source:
pip install -e .
Command Line Interface
The package installs a single entry point qb-cli with two groups of commands: gui for controlling QuickBooks and setup for credential management.
Usage: qb-cli [GROUP] [COMMAND] [OPTIONS]
GUI Commands
-
qb-cli gui startup [--config-dir PATH] [--config-file NAME] [--no-kill-avatax]- Launch QuickBooks, open the configured company file and log in.
--config-dirLocation of the configuration directory (defaultconfigs)--config-fileTOML file name to load (defaultconfig.toml)--no-kill-avataxDo not terminate Avalara processes after login.
-
qb-cli gui shutdown- Terminate all QuickBooks related processes.
Setup Commands
-
qb-cli setup set-credentials --username USER --password PASS [--local-key-name NAME | --local-key-value VALUE] [--config-path PATH]- Encrypt the provided username and password and store them in the configuration file.
-
qb-cli setup prompt-credentials [--local-key-name NAME | --local-key-value VALUE] [--config-path PATH]- Interactively prompt for the username and password before storing them.
-
qb-cli setup verify-credentials [--local-key-name NAME | --local-key-value VALUE] [--config-path PATH]- Validate that the encryption key is correct for the stored credentials.
Example Usage
Below are minimal Python examples for exporting invoices and reports. They mirror the scripts found in samples/.
Saving Invoices
from pathlib import Path
from quickbooks_gui_api import QuickBookGUIAPI
from quickbooks_gui_api.apis import Invoices
from quickbooks_gui_api.models import Invoice
api = QuickBookGUIAPI()
app, window = api.startup()
invoice_list = [
Invoice("1254", None, Path(r"C:\\Path\\To\\Output")),
Invoice("2016", None, Path(r"C:\\Path\\To\\Output")),
]
invoice_api = Invoices(app, window)
invoice_api.save(invoice_list)
api.shutdown()
Saving Reports
from pathlib import Path
from quickbooks_gui_api import QuickBookGUIAPI
from quickbooks_gui_api.apis import Reports
from quickbooks_gui_api.models import Report
api = QuickBookGUIAPI()
app, window = api.startup()
report_list = [
Report("Data Export - All Invoices - V 3", None, Path(r"C:\\Path\\To\\Output")),
Report("A/P Aging Detail", None, Path(r"C:\\Path\\To\\Output")),
]
report_api = Reports(app, window)
report_api.save(report_list)
api.shutdown()
These snippets start QuickBooks, create objects for each invoice or report, and instruct the appropriate API to save them, then terminates all QuickBooks processes. See the samples/ directory for more complete examples.
Configuration
Configuration values are stored in configs/config.toml. Defaults live in configs/defaults/defaults_qb-gui-api.toml.
You can override any setting by editing the config file before running the CLI or automation scripts.
License
This project is licensed under the Apache 2.0 License. See LICENSE for details.
Trademark Notice
"QuickBooks" is a registered trademark of Intuit Inc. This project is not affiliated with Intuit and the author makes no claim of ownership or control over the QuickBooks trademark.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qb_gui_api-1.3.0.tar.gz.
File metadata
- Download URL: qb_gui_api-1.3.0.tar.gz
- Upload date:
- Size: 32.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a02035c9efcdff8512b49aed2c723d269f156709ca2a85db2cd77378a302cf53
|
|
| MD5 |
d5ef5134eaf36464fd62dc0b61a53ee9
|
|
| BLAKE2b-256 |
7b4161ae75eef4e76b8bd3c3efcd8f76f201788defbecb64e1a29bd2d810a305
|
File details
Details for the file qb_gui_api-1.3.0-py3-none-any.whl.
File metadata
- Download URL: qb_gui_api-1.3.0-py3-none-any.whl
- Upload date:
- Size: 43.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6e9ff7d6ae0772356bcc10cce4d84636df2f78ceb6b7fa6508e023c91a32291
|
|
| MD5 |
d1684fbd1fb908f1fd0f85e38aac6344
|
|
| BLAKE2b-256 |
8e0f1141efc0de2aa1ac5a874a5eda8528738c391ecd4e81f2c4cf4d581606d3
|