Freshbooks Cli
FreshBooks CLI for managing invoices, clients, and billing.
- Rating
- 4.8 (488 reviews)
- Downloads
- 1,626 downloads
- Version
- 1.0.0
Overview
FreshBooks CLI for managing invoices, clients, and billing.
Complete Documentation
View Source →
freshbooks-cli
CLI tool for managing FreshBooks invoices, clients, and billing. Uses the official @freshbooks/api SDK.
Install
npm install -g @haseebuchiha/freshbooks-cli
Requires .npmrc with @haseebuchiha:registry=https://npm.pkg.github.com for GitHub Package Registry.
Setup (once)
Authenticate with FreshBooks OAuth2. You must use the --manual flag (localhost redirect does not work with FreshBooks).
freshbooks auth login \
--client-id "<FRESHBOOKS_CLIENT_ID>" \
--client-secret "<FRESHBOOKS_CLIENT_SECRET>" \
--manual
This opens the browser. Authorize, then copy the code from the page and paste it into the CLI. Tokens are stored at ~/.config/freshbooks-cli/config.json (0600 permissions) and auto-refresh before expiry.
Verify: freshbooks auth status
Auth commands
freshbooks auth login --client-id-- authenticate via OAuth2 OOB flow--client-secret --manual freshbooks auth logout-- clear stored tokens and credentialsfreshbooks auth status-- show account ID, token expiry, and auth statefreshbooks auth refresh-- manually refresh the access token
Clients commands
freshbooks clients list [-p-- list clients, search by org name] [--per-page ] [-s ] freshbooks clients get-- get a single client by IDfreshbooks clients create [--fname-- create a client] [--lname ] [--email ] [--organization ] freshbooks clients create --data '-- create with full JSON payload' freshbooks clients update-- update a client--data ' '
freshbooks clients create --fname "Taha" --organization "abcg.io"Invoices commands
freshbooks invoices list [-p-- list invoices] [--per-page ] freshbooks invoices get-- get a single invoice by IDfreshbooks invoices create --client-id-- create an invoice with line items[--lines ' '] freshbooks invoices create --client-id-- create with full JSON payload--data ' ' freshbooks invoices update-- update an invoice--data ' ' freshbooks invoices archive-- archive an invoice (no permanent delete in FreshBooks)freshbooks invoices share-link-- get a shareable link for an invoice
Line items format
Lines are a JSON array. Each line has name, qty, and unitCost (money object):
[
{"name": "Web Services", "qty": 1, "unitCost": {"amount": "15000.00", "code": "USD"}},
{"name": "App Services", "qty": 1, "unitCost": {"amount": "15000.00", "code": "USD"}}
]
Example (full invoice create):
freshbooks invoices create --client-id 818183 \
--lines '[{"name":"Web Services","qty":1,"unitCost":{"amount":"15000.00","code":"USD"}},{"name":"App Services","qty":1,"unitCost":{"amount":"15000.00","code":"USD"}}]'
Workflows
Onboard a new client and invoice them
freshbooks clients create --fname "Name" --organization "Company"-- note the returnedidfreshbooks invoices create --client-id-- create the invoice--lines '[...]' freshbooks invoices share-link-- get shareable link
Look up billing for a client
freshbooks clients list -s "company name"-- find the client IDfreshbooks invoices list-- list all invoices (filter by client in output)freshbooks invoices get-- get full invoice details
Notes
- All output is JSON to stdout. Pipe to
jqfor filtering:freshbooks clients list | jq '.clients[].organization' - Money values are
{"amount": "string", "code": "USD"}. The amount is always a string like"30000.00", never a number. Do not use parseFloat on money. archivesets vis_state=1. FreshBooks does not support permanent deletion.- Tokens auto-refresh. If refresh fails, re-run
freshbooks auth login --client-id.--client-secret --manual - Client credentials can also be read from env vars
FRESHBOOKS_CLIENT_IDandFRESHBOOKS_CLIENT_SECRET(takes priority over stored config). - Always use
--manualfor auth login. The localhost callback redirect URI does not work with FreshBooks. - Confirm with the user before creating invoices or modifying billing data.
Installation
openclaw install freshbooks-cli
💻Code Examples
npm install -g @haseebuchiha/freshbooks-cli
Requires `.npmrc` with `@haseebuchiha:registry=https://npm.pkg.github.com` for GitHub Package Registry.
## Setup (once)
Authenticate with FreshBooks OAuth2. You must use the `--manual` flag (localhost redirect does not work with FreshBooks).--manual
This opens the browser. Authorize, then copy the code from the page and paste it into the CLI. Tokens are stored at `~/.config/freshbooks-cli/config.json` (0600 permissions) and auto-refresh before expiry.
Verify: `freshbooks auth status`
## Auth commands
- `freshbooks auth login --client-id <id> --client-secret <secret> --manual` -- authenticate via OAuth2 OOB flow
- `freshbooks auth logout` -- clear stored tokens and credentials
- `freshbooks auth status` -- show account ID, token expiry, and auth state
- `freshbooks auth refresh` -- manually refresh the access token
## Clients commands
- `freshbooks clients list [-p <page>] [--per-page <n>] [-s <search>]` -- list clients, search by org name
- `freshbooks clients get <id>` -- get a single client by ID
- `freshbooks clients create [--fname <name>] [--lname <name>] [--email <email>] [--organization <org>]` -- create a client
- `freshbooks clients create --data '<json>'` -- create with full JSON payload
- `freshbooks clients update <id> --data '<json>'` -- update a client
Example: `freshbooks clients create --fname "Taha" --organization "abcg.io"`
## Invoices commands
- `freshbooks invoices list [-p <page>] [--per-page <n>]` -- list invoices
- `freshbooks invoices get <id>` -- get a single invoice by ID
- `freshbooks invoices create --client-id <id> [--lines '<json>']` -- create an invoice with line items
- `freshbooks invoices create --client-id <id> --data '<json>'` -- create with full JSON payload
- `freshbooks invoices update <id> --data '<json>'` -- update an invoice
- `freshbooks invoices archive <id>` -- archive an invoice (no permanent delete in FreshBooks)
- `freshbooks invoices share-link <id>` -- get a shareable link for an invoice
### Line items format
Lines are a JSON array. Each line has `name`, `qty`, and `unitCost` (money object):freshbooks auth login \
--client-id "<FRESHBOOKS_CLIENT_ID>" \
--client-secret "<FRESHBOOKS_CLIENT_SECRET>" \
--manual[
{"name": "Web Services", "qty": 1, "unitCost": {"amount": "15000.00", "code": "USD"}},
{"name": "App Services", "qty": 1, "unitCost": {"amount": "15000.00", "code": "USD"}}
]Tags
Quick Info
Ready to Install?
Get started with this skill in seconds
Related Skills
4claw
4claw — a moderated imageboard for AI agents.
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.
Adversarial Prompting
Adversarial analysis to critique, fix.