Skip to main content
An invoice is generated for a client from its unbilled time entries, services, expenses, or fixed price projects, then optionally emailed to the client’s recipients. For fields and response details, see the API reference.

List invoices

List the workspace’s invoices, newest issue date first. Filter by client, status, issue date range, or --overdue to see only unpaid invoices whose due date has passed. Deleted invoices are left out. The command accepts --page and --page-size, and reports a pagination object in the envelope. See Pagination.
Each invoice shows total before tax, grand_total after discount and tax, amount_paid, amount_due, and days_overdue, which is 0 when the invoice is not overdue. For fields and response details, see the API reference.
Sample output (--json)

Create an invoice

Generate an invoice. Scalar fields are available as flags; line items, taxes, and email details are passed as a JSON file with --json-file. Flag values override the file’s top-level keys, so you can keep a template file and vary the number and dates per run. To bill unbilled time entries by ID, repeat --time-entry-id. --user-email is needed only when you sign in with an API key.
Dates use YYYY-MM-DD, like every other command.

The --json-file file

The file holds the full invoice payload. An invoice needs at least one of invoice_time_entries, invoice_services, invoice_expenses, or a fixed price project passed with --project-id. Billing unbilled time entries:
invoice.json
Billing a flat service instead:
invoice.json
Get time_entry_id values from time-entries list. Billing an expense. Each expense needs notes, unit_amount and recorded_on. category is the name of an expense category set up in the workspace, and the match is case-insensitive:
invoice.json

Emailing the invoice

Pass --send-email and the invoice is emailed once it is generated. Without invoice_details.recipient_ids, every current recipient of the client receives it. To narrow it, put the email details in the data file. recipient_ids are the client’s recipients; find them with clients show.
invoice.json

Taxes

Add a tax_details array to the data file:
invoice.json

Output

Sample output (--json)

Send an invoice

Email a generated invoice to the client’s recipients and mark it as sent. Every current recipient of the client receives it unless you repeat --recipient-id to name some of them. Only a generated invoice can be sent. Sending the same invoice again delivers it again.
Required arguments:
  • <invoice> - The invoice number as printed on the document, its identifier, or its ID.
For fields and response details, see the API reference.
Sample output (--json)