Skip to main content

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-dir Location of the configuration directory (default configs)
    • --config-file TOML file name to load (default config.toml)
    • --no-kill-avatax Do 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qb_gui_api-1.1.0.tar.gz (33.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qb_gui_api-1.1.0-py3-none-any.whl (43.7 kB view details)

Uploaded Python 3

File details

Details for the file qb_gui_api-1.1.0.tar.gz.

File metadata

  • Download URL: qb_gui_api-1.1.0.tar.gz
  • Upload date:
  • Size: 33.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for qb_gui_api-1.1.0.tar.gz
Algorithm Hash digest
SHA256 7c8d8de518808a9078028bd0b80ad5f71ddc76675e29a901dcc421e87897e7d8
MD5 cc013dfd48c8f0bf845a255699063c6a
BLAKE2b-256 8d4609cb264e417fbeda79d6a3ee6301d71b63a2f35e55b42c94324cbb42fe44

See more details on using hashes here.

File details

Details for the file qb_gui_api-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: qb_gui_api-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 43.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for qb_gui_api-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b9fcc1c88209f1ab46ef97fa7197426a5cc872bda7fd9fbfaca60c877d14c188
MD5 82b7f11d9caf20ba3780d43093a86746
BLAKE2b-256 4b21ad9781b5764a5943e49e7aadee5cdcb17c67b8247702fbd05b5a13855146

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page