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.3.1.tar.gz (32.9 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.3.1-py3-none-any.whl (43.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qb_gui_api-1.3.1.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

Hashes for qb_gui_api-1.3.1.tar.gz
Algorithm Hash digest
SHA256 e8a772cff93e4904108d3a294cdc3601a383741522cae3eab2b2e2c945fe1598
MD5 85b51c1c95659b51853a6a439e35af76
BLAKE2b-256 728093c19179cdbb51896909c7e105e1278262d10613228adee05509c24c70ab

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qb_gui_api-1.3.1-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

Hashes for qb_gui_api-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 96ac43406c1ceb3a229c9bcb2b8d119784a02c88b87b2bfa35edceceb6e20236
MD5 a7e272d34be9d8914e4ecd13649309fe
BLAKE2b-256 53fd0bdc2c33d52d58d8943e8cba4d9263359d0f6c20f93ceee24dc4da16cdee

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