Skip to main content
POST
Generate an invoice
Replace {your-subdomain} with your workspace’s subdomain.
Learn how to find your subdomain in Workspace subdomain.

Headers

X-Api-Key
string
default:your-api-key
required

Use the X-Api-Key header to provide your workspace API key. Refer to Authentication for more information.

Path Parameters

client_id
string
required

Unique ID of the client for which you want to retrieve or update details. Refer to Getting the Client ID section for detailed instructions.

Body

application/json
email
string<email>
required

Email of the person creating the invoice.

Example:

"john@example.com"

number
string
required

Invoice identifier.

Example:

"INV-EXT-001"

time_entry_ids
string<uuid>[]
required

IDs of unbilled time entries to bill. Refer to Getting the Time Entry ID section for detailed instructions. An unknown or already billed ID is rejected with a field error on time_entry_ids.

Example:
total
number<float>

Total amount of the invoice. Optional; the total is computed from the line items.

Example:

500

issue_date
string

Issue date of the invoice in YYYY-MM-DD format. MM/DD/YYYY is still accepted.

Example:

"2026-10-15"

due_date
string

Due date of the invoice in YYYY-MM-DD format. MM/DD/YYYY is still accepted. Sending due_date alone sets a custom due date; you do not need to send due_date_period.

Example:

"2026-10-30"

due_date_period
number

Due date period for the invoice in days.

Example:

30

interval
string

Billing interval for the invoice.

Example:

"monthly"

notes
string

Additional notes for the invoice.

Example:

"Payment terms: Net 30 days"

include_hours_by_person
boolean

Whether to include hours breakdown by person.

Example:

true

include_hours_by_task
boolean

Whether to include hours breakdown by task.

Example:

false

include_time_entries
boolean

Whether to include detailed time entries.

Example:

true

send_automated_reminder_email
boolean

Whether to send automated reminder emails.

Example:

true

Whether to include payment link in the invoice.

Example:

true

payment_provider
enum<string>

Payment provider for the invoice.

Available options:
stripe,
undefined
Example:

"undefined"

display_task_name
boolean

Whether to display task names in the invoice.

Example:

true

display_person_name
boolean

Whether to display person names in the invoice.

Example:

true

display_date
boolean

Whether to display dates in the invoice.

Example:

true

display_note
boolean

Whether to display notes in the invoice.

Example:

true

display_project_name
boolean

Whether to display project names in the invoice.

Example:

false

project_id
string[]

Fixed price projects to bill. When the request has no invoice_services, each project is billed for its remaining flat amount. Refer to Getting the Project ID section for detailed instructions.

Example:
send_email
boolean

Whether to email the invoice once it is generated. The invoice goes to every current recipient of the client unless invoice_details.recipient_ids narrows it. If the client has no current recipients, the request is rejected and no invoice is created.

Example:

true

invoice_details
object

Email details for sending the invoice. Optional; used only when send_email is true.

tax_details
object[]

Array of tax details for the invoice.

invoice_expenses
object[]

Expenses to bill. An invoice may contain only expenses.

Response

201 - application/json

Created - Invoice created successfully

invoice
object