Read-only access to QuickBooks Online data from Claude Code.
- Query customers, vendors, employees, accounts, and items
- Query transactions: invoices, bills, purchases, deposits, payments
- Query time activities, estimates, sales receipts, credit memos, journal entries
- Date filtering with configurable date fields
- Automatic pagination for large result sets
- OAuth 2.0 token management with automatic refresh
This plugin is installed at ~/.claude/plugins/quickbooks-skill/.
Install dependencies:
cd ~/.claude/plugins/quickbooks-skill
npm install- Go to https://developer.intuit.com/
- Sign in with your Intuit account
- Click "Dashboard" and then "Create an app"
- Select "QuickBooks Online and Payments"
- Name your app (e.g., "Claude QuickBooks Skill")
- Click "Create app"
- In your app dashboard, go to "Keys & OAuth"
- Under "Production" (or "Development" for testing):
- Copy the Client ID
- Copy the Client Secret
- In the Intuit developer portal, use the "OAuth 2.0 Playground" or "API Explorer"
- Click "Connect to QuickBooks"
- Select your QuickBooks company and authorize
- Note the following from the response:
- Realm ID (Company ID) - shown in the URL or response
- Refresh Token - from the token response
Create .claude/quickbooks-skill.local.json in your project directory:
{
"client_id": "ABxxxxxxxxxxxxxxxxxxxxxxxxxx",
"client_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"realm_id": "123456789012345",
"refresh_token": "AB11xxxx..."
}npx tsx ~/.claude/plugins/quickbooks-skill/scripts/quickbooks.ts refreshThis exchanges your refresh token for an access token and saves it to your credentials file.
npx tsx ~/.claude/plugins/quickbooks-skill/scripts/quickbooks.ts checkThis displays your company info if everything is configured correctly.
# Customers
npx tsx scripts/quickbooks.ts customers
# Invoices from this year
npx tsx scripts/quickbooks.ts invoices --start=2024-01-01
# Purchases by transaction date
npx tsx scripts/quickbooks.ts purchases --start=2024-01-01 --query-by=TxnDate
# Bills with additional filter
npx tsx scripts/quickbooks.ts bills --where="Balance > 0"npx tsx scripts/quickbooks.ts get Customer 123
npx tsx scripts/quickbooks.ts get Invoice 456npx tsx scripts/quickbooks.ts refs Account
npx tsx scripts/quickbooks.ts refs Customer
npx tsx scripts/quickbooks.ts refs Vendor| Option | Description |
|---|---|
--start=YYYY-MM-DD |
Start date filter |
--end=YYYY-MM-DD |
End date filter |
--query-by=FIELD |
Date field to filter on (default: MetaData.LastUpdatedTime) |
--where="CONDITION" |
Additional WHERE clause |
--max=N |
Max results per page (default: 1000) |
MetaData.LastUpdatedTime- When record was last modified (default)TxnDate- Transaction date (for transactions)MetaData.CreateTime- When record was created
| Entity | Command |
|---|---|
| Customer | customers |
| Vendor | vendors |
| Employee | employees |
| Account | accounts |
| Item | items |
| Invoice | invoices |
| Bill | bills |
| Purchase | purchases |
| Deposit | deposits |
| Payment | payments |
| TimeActivity | timeactivities |
| Estimate | estimates |
| SalesReceipt | salesreceipts |
| CreditMemo | creditmemos |
| JournalEntry | journalentries |
- Access tokens expire after 1 hour - use
refreshcommand to get a new one - Refresh tokens expire after 100 days - re-authorize through Intuit portal if needed
- Tokens are stored in
.claude/quickbooks-skill.local.json(gitignored by default)
- This skill provides read-only access to QuickBooks data
- Keep your credentials file secure
- The credentials file is automatically added to
.gitignore
Create the credentials file as described in Setup step 4.
Your refresh token may have expired. Re-authorize through the Intuit developer portal.
Run npx tsx scripts/quickbooks.ts refresh to get a new access token.
MIT