FreshBooks CLI
/install freshbooks-cli
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 "\x3CFRESHBOOKS_CLIENT_ID>" \
--client-secret "\x3CFRESHBOOKS_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 \x3Cid> --client-secret \x3Csecret> --manual-- authenticate via OAuth2 OOB flowfreshbooks 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 \x3Cpage>] [--per-page \x3Cn>] [-s \x3Csearch>]-- list clients, search by org namefreshbooks clients get \x3Cid>-- get a single client by IDfreshbooks clients create [--fname \x3Cname>] [--lname \x3Cname>] [--email \x3Cemail>] [--organization \x3Corg>]-- create a clientfreshbooks clients create --data '\x3Cjson>'-- create with full JSON payloadfreshbooks clients update \x3Cid> --data '\x3Cjson>'-- update a client
Example: freshbooks clients create --fname "Taha" --organization "abcg.io"
Invoices commands
freshbooks invoices list [-p \x3Cpage>] [--per-page \x3Cn>]-- list invoicesfreshbooks invoices get \x3Cid>-- get a single invoice by IDfreshbooks invoices create --client-id \x3Cid> [--lines '\x3Cjson>']-- create an invoice with line itemsfreshbooks invoices create --client-id \x3Cid> --data '\x3Cjson>'-- create with full JSON payloadfreshbooks invoices update \x3Cid> --data '\x3Cjson>'-- update an invoicefreshbooks invoices archive \x3Cid>-- archive an invoice (no permanent delete in FreshBooks)freshbooks invoices share-link \x3Cid>-- 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 \x3Cid> --lines '[...]'-- create the invoicefreshbooks invoices share-link \x3Cinvoice-id>-- 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 \x3Cid>-- 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 \x3Cid> --client-secret \x3Csecret> --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.
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install freshbooks-cli - 安装完成后,直接呼叫该 Skill 的名称或使用
/freshbooks-cli触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
FreshBooks CLI 是什么?
FreshBooks CLI for managing invoices, clients, and billing. Use when the user mentions freshbooks, invoicing, billing, clients, or accounting. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 1478 次。
如何安装 FreshBooks CLI?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install freshbooks-cli」即可一键安装,无需额外配置。
FreshBooks CLI 是免费的吗?
是的,FreshBooks CLI 完全免费(开源免费),可自由下载、安装和使用。
FreshBooks CLI 支持哪些平台?
FreshBooks CLI 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 FreshBooks CLI?
由 haseebuchiha(@haseebuchiha)开发并维护,当前版本 v1.0.0。