QuickBooks Integration

Based on idk/services/connector_quickbooks.py.

Quick start (OAuth2)

from idk.services.connector_quickbooks import QuickBooksConnector

qb = QuickBooksConnector()
auth_url = qb.get_authorization_url(redirect_uri="https://your.app/qb/callback")
# Redirect user to auth_url, receive callback URL, then:
result = qb.complete_authorization(callback_url, redirect_uri)

Settings: - QUICKBOOKS_CLIENT_ID, QUICKBOOKS_CLIENT_SECRET - QUICKBOOKS_SANDBOX (True/False) - Constance keys (optional persistence): QUICKBOOKS_ACCESS_TOKEN(_EXPIRES_AT), QUICKBOOKS_REFRESH_TOKEN, QUICKBOOKS_REALM_ID

Auth methods

  • get_authorization_url(redirect_uri, state=None, scope=None) -> str
  • parse_callback_url(callback_url) -> dict
  • exchange_code_for_tokens(code, redirect_uri) -> dict | None
  • complete_authorization(callback_url, redirect_uri) -> dict | None
  • refresh_access_token(save_callback=None) -> bool
  • get_constance_token_status() -> dict

Data methods

  • get_customers() / get_clients() -> list[dict]
  • get_items() -> list[dict]
  • get_invoices(start_date=None, end_date=None) -> list[dict]
  • get_invoice_by_id(invoice_id) -> dict | None
  • create_invoice(invoice_data: dict) -> dict | None
  • create_customer(customer_data: dict) -> dict | None
  • get_company_info() -> dict | None

App integration

  • send_invoice_to_quickbooks(invoice_instance: FreshbooksInvoice) -> bool
  • coordinate_quickbooks_customers(company) -> bool

Notes: - Connector auto-refreshes tokens on 401 and persists via Constance if available. - realm_id is required for API calls (obtained from callback).