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).