{"library":"python-quickbooks","title":"QuickBooks Online API Client","description":"python-quickbooks is an actively maintained Python 3 library designed for interacting with the QuickBooks Online API. It provides a convenient object-oriented interface to access and manage QuickBooks data, abstracting away the complexities of the REST API and OAuth 2.0 authentication. The library integrates with `intuit-oauth` for secure authentication. Releases appear on an as-needed basis, with multiple updates throughout the year.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install python-quickbooks"],"cli":null},"imports":["from quickbooks import QuickBooks","from intuitlib.client import AuthClient","from quickbooks.objects.customer import Customer"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom intuitlib.client import AuthClient\nfrom quickbooks import QuickBooks\nfrom quickbooks.objects.customer import Customer\n\n# Retrieve credentials from environment variables for security\nCLIENT_ID = os.environ.get('QBO_CLIENT_ID', 'YOUR_CLIENT_ID')\nCLIENT_SECRET = os.environ.get('QBO_CLIENT_SECRET', 'YOUR_CLIENT_SECRET')\nREFRESH_TOKEN = os.environ.get('QBO_REFRESH_TOKEN', 'YOUR_REFRESH_TOKEN')\nCOMPANY_ID = os.environ.get('QBO_COMPANY_ID', 'YOUR_COMPANY_ID') # Also known as Realm ID\nREDIRECT_URI = os.environ.get('QBO_REDIRECT_URI', 'http://localhost:8000/callback')\nENVIRONMENT = os.environ.get('QBO_ENVIRONMENT', 'sandbox') # 'sandbox' or 'production'\n\n# Initialize AuthClient\nauth_client = AuthClient(\n    CLIENT_ID,\n    CLIENT_SECRET,\n    REDIRECT_URI,\n    ENVIRONMENT\n)\n\n# Initialize QuickBooks client\nqb = QuickBooks(\n    auth_client=auth_client,\n    refresh_token=REFRESH_TOKEN,\n    company_id=COMPANY_ID,\n    minorversion=75 # Recommended: use the latest supported minor version\n)\n\ntry:\n    # Automatically refresh token if needed (handled by the library)\n    # Fetch all customers\n    customers = Customer.all(qb=qb, max_results=10) # Limit results for demonstration\n    for customer in customers:\n        print(f\"Customer ID: {customer.Id}, Display Name: {customer.DisplayName}\")\n\n    # Example: Create a new customer (uncomment to run)\n    # new_customer = Customer()\n    # new_customer.DisplayName = \"New Test Customer\"\n    # new_customer.CompanyName = \"Test Company, Inc.\"\n    # new_customer.save(qb=qb)\n    # print(f\"Created new customer: {new_customer.DisplayName} (ID: {new_customer.Id})\")\n\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")\n    # Implement robust error handling and token refresh logic in production\n","lang":"python","description":"This quickstart demonstrates how to set up the `AuthClient` and `QuickBooks` client using environment variables for credentials. It then shows how to fetch a list of customers. Ensure you have registered your app with Intuit Developer and obtained `CLIENT_ID`, `CLIENT_SECRET`, `REFRESH_TOKEN`, `COMPANY_ID` (Realm ID), and configured a `REDIRECT_URI`.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"0.9.12","pypi_latest":"0.9.12","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":3.4,"avg_import_s":0.69,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"python-quickbooks","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.7,"mem_mb":11.4,"disk_size":"41.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"python-quickbooks","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.6,"import_time_s":0.48,"mem_mb":11.5,"disk_size":"42M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"python-quickbooks","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.78,"mem_mb":12.6,"disk_size":"43.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"python-quickbooks","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.3,"import_time_s":0.71,"mem_mb":12.6,"disk_size":"44M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"python-quickbooks","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.76,"mem_mb":12.7,"disk_size":"35.4M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"python-quickbooks","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.74,"mem_mb":12.7,"disk_size":"36M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"python-quickbooks","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.77,"mem_mb":13,"disk_size":"35.2M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"python-quickbooks","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.74,"mem_mb":13,"disk_size":"36M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"python-quickbooks","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.65,"mem_mb":10.8,"disk_size":"41.2M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"python-quickbooks","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4,"import_time_s":0.56,"mem_mb":10.8,"disk_size":"42M"}]}}