---
title: "Finds ALL currently-eligible uninvoiced records for the invoice's customer matching the filters (timesheets, expenses and/or fixed amounts), groups them per the requested grouping, appends the generated line items to the invoice and marks the source records as invoiced - one call instead of list + construct + add. Selection only ever picks eligible records, so a repeat call finds nothing and returns zero counts (safe to retry). Use PreviewUninvoicedItems first for a dry run. The invoice must not be Void."
method: POST
path: "/api/Invoice/AddUninvoicedItems"
tags: ["Invoice"]
---

# Finds ALL currently-eligible uninvoiced records for the invoice's customer matching the filters (timesheets, expenses and/or fixed amounts), groups them per the requested grouping, appends the generated line items to the invoice and marks the source records as invoiced - one call instead of list + construct + add. Selection only ever picks eligible records, so a repeat call finds nothing and returns zero counts (safe to retry). Use PreviewUninvoicedItems first for a dry run. The invoice must not be Void.

`POST /api/Invoice/AddUninvoicedItems`

## Request body

- UninvoicedItemsRequest — Request for previewing or adding ALL matching uninvoiced records to an invoice in one call. At least one of Time / Expenses / FixedAmounts must be provided; a present section opts that record type in. Only currently-eligible records are selected, so the operation is naturally idempotent - a repeat call selects nothing.
  - `InvoiceID` integer, required — The Transaction ID of the invoice whose customer's uninvoiced records should be selected. The invoice must not be Void.
  - `Time` UninvoicedTimeFilter — Filters for selecting uninvoiced timesheet entries. Only billable, Approved/AutoApproved, not-yet-invoiced entries of the invoice's customer are ever selected; entries with a running timer are skipped and reported.
    - `ProjectIDs` integer[] — Project IDs to pull uninvoiced time from. When omitted, all billable projects of the invoice's customer are included.
    - `UserIDs` integer[] — Optional. Only include time logged by these user IDs.
    - `TaskIDs` integer[] — Optional. Only include time logged against these task IDs.
    - `CategoryIDs` integer[] — Optional. Only include time in these timesheet category IDs.
    - `DateFrom` string, date-time — Optional. Only include entries on or after this date.
    - `DateTo` string, date-time — Optional. Only include entries on or before this date.
    - `Grouping` string — How to group entries into line items: NoGrouping (one line per entry), GroupByProject, GroupByProjectCategory, GroupByProjectUser, GroupByProjectSection or GroupByProjectTask. Grouped lines get the total duration and a blended rate. Default NoGrouping.
    - `IncludeProjectName` boolean — Include the project name in generated descriptions. Default true.
    - `IncludeCategory` boolean — Include the timesheet category in generated descriptions. Default true.
    - `IncludeTask` boolean — Include the task title in generated descriptions. Default true.
    - `IncludeStartEndTime` boolean — Include start/end times in generated descriptions (entries with start/end times only). Default true.
    - `IncludeDate` boolean — Include the entry date in generated descriptions. Default true.
    - `IncludePerson` boolean — Include the person's name in generated descriptions. Default true.
    - `IncludeNotes` boolean — Include entry notes in generated descriptions. Default true.
  - `Expenses` UninvoicedExpenseFilter — Filters for selecting uninvoiced chargeable expenses. Only Approved/AutoApproved, chargeable, not-yet-invoiced expenses of the invoice's customer are ever selected.
    - `ProjectIDs` integer[] — Project IDs to pull uninvoiced expenses from. When omitted, all of the customer's uninvoiced chargeable expenses are included (with or without a project).
    - `UserIDs` integer[] — Optional. Only include expenses submitted by these user IDs.
    - `DateFrom` string, date-time — Optional. Only include expenses dated on or after this date.
    - `DateTo` string, date-time — Optional. Only include expenses dated on or before this date.
    - `Grouping` string — How to group expenses into line items: NoGrouping (one line per expense) or GroupByExpenseCategory (one line per project + category + tax). Default NoGrouping.
    - `IncludeProjectName` boolean — Include the project name in generated descriptions. Default true.
    - `IncludeCategory` boolean — Include the expense category in generated descriptions. Default true.
    - `IncludeDate` boolean — Include the expense date in generated descriptions. Default true.
    - `IncludePerson` boolean — Include the person's name in generated descriptions. Default true.
    - `IncludeTripName` boolean — Include the expense report (trip) name in generated descriptions. Default false.
    - `IncludeNotes` boolean — Include expense notes in generated descriptions. Default true.
  - `FixedAmounts` UninvoicedFixedAmountFilter — Filters for selecting uninvoiced fixed amounts. Each fixed amount always becomes its own line item.
    - `ProjectIDs` integer[] — Project IDs to pull uninvoiced fixed amounts from. When omitted, all projects of the invoice's customer are included.
    - `OnlyCompletedTasks` boolean — When true, only fixed amounts on completed tasks are included. Default false.
    - `IncludeProjectName` boolean — Include the project name in generated descriptions. Default true.
    - `IncludeTask` boolean — Include the task title in generated descriptions. Default true.
    - `IncludeAssignedUser` boolean — Include the task's assigned users in generated descriptions. Default true.
    - `IncludeNotes` boolean — Include fixed amount notes in generated descriptions. Default true.
  - `ExpenseExchangeRates` ExpenseExchangeRate[] — Optional exchange-rate overrides for expenses in a currency different from the invoice currency.
    - `CurrencyCode` string, required — ISO standard 3 character currency code of the expense currency.
    - `Rate` number, double, required — The rate that converts 1 unit of the expense currency into the invoice currency. Must be greater than zero.
  - `SendWebhooks` boolean — If true (add only; ignored by preview), fires invoice_updated plus timesheet_updated/expense_updated webhook events for linked records. Defaults to false.

## Response `200`

Returns the updated invoice, new line item IDs and per-type linked counts. Zero counts mean nothing matched - not an error.

- AddUninvoicedItemsResult — Result of adding all matching uninvoiced records to an invoice.
  - `Invoice` Invoice — A customer invoice including line items, status, amounts, issuer/recipient details, and web links.
    - `TransactionID` integer — Unique identifier for the invoice transaction.
    - `AccountIDFK` integer — The Avaza account this invoice belongs to.
    - `TransactionPrefix` string — Prefix used in the invoice number (e.g. 'INV').
    - `InvoiceNumber` string — The full invoice number including prefix.
    - `CompanyIDFK` integer — The customer company ID this invoice is for.
    - `CompanyName` string — Name of the customer company.
    - `ExternalContactUserIDFK` integer — The external contact user ID associated with this invoice.
    - `Subject` string — Subject line for the invoice.
    - `DateIssued` string, date-time — Date the invoice was issued.
    - `DateSent` string, date-time — Date the invoice was sent to the customer.
    - `DueDate` string, date-time — Payment due date.
    - `TransactionStatusCode` string — Current status. Values: Draft, Sent, Late, Paid, Partial, Void.
    - `TaxAmount` number, double — Total tax amount across all line items.
    - `TransactionTaxConfigCode` string — Tax configuration: 'EX' (exclusive) or 'INC' (inclusive).
    - `Balance` number, double — Outstanding balance remaining on the invoice.
    - `CurrencyCode` string — ISO 3-character currency code for the invoice.
    - `TotalAmount` number, double — Total amount of the invoice including tax.
    - `ExchangeRate` number, double — Exchange rate to the account's base currency. 1.0 if same currency.
    - `Notes` string — Additional notes or comments on the invoice.
    - `CustomerPONumber` string — Customer's purchase order number for reference.
    - `DateCreated` string, date-time — Date and time the record was created.
    - `DateUpdated` string, date-time — Date and time the record was last updated.
    - `LineItems` InvoiceLineItem[] — Line items on this invoice.
      - `TransactionLineItemID` integer — Unique identifier for the line item.
      - `InventoryItemIDFK` integer — The inventory/product item ID for this line item.
      - `InventoryItemName` string — Name of the inventory/product item.
      - `InventoryItemSKU` string — Stock Keeping Unit code for the inventory item.
      - `Description` string — Text description for the line item.
      - `Quantity` number, double — Quantity of items on this line.
      - `UnitPrice` number, double — Price per unit for this line item.
      - `TaxAmount` number, double — Calculated tax amount on this line item.
      - `TaxIDFK` integer — The tax rate ID applied to this line item.
      - `TaxCode` string — Short code for the applied tax rate.
      - `TaxName` string — Name of the applied tax rate.
      - `ProjectIDFK` integer — Optional project ID this line item is attributed to for reporting.
      - `ProjectTitle` string — Title of the associated project.
      - `Amount` number, double — Calculated line total (Quantity x UnitPrice less Discount).
      - `Discount` number, double — Discount percentage applied to this line item.
      - `TimesheetEntryIDs` integer[] — IDs of the Timesheet entries linked to (invoiced by) this line item. Empty when the line item has no linked timesheets.
      - `ExpenseIDs` integer[] — IDs of the Expenses linked to (invoiced by) this line item. Empty when the line item has no linked expenses.
      - `FixedAmountIDs` integer[] — IDs of the Fixed Amounts linked to (invoiced by) this line item. Empty when the line item has no linked fixed amounts.
    - `Links` InvoiceLinks — URLs for client-facing view, internal view, and editing an invoice in the Avaza web application.
      - `ClientView` string — URL for the customer to view and pay the invoice online.
      - `View` string — URL for viewing the invoice in the Avaza application.
      - `Edit` string — URL for editing the invoice in the Avaza application.
    - `Issuer` IssuerDetails — Billing address and tax details for the Avaza account (the party issuing an invoice or estimate).
      - `BillingAddress` string — Formatted multi-line billing address.
      - `BillingAddressLine` string — Street address line of the billing address.
      - `BillingAddressCity` string — City/suburb of the billing address.
      - `BillingAddressState` string — State/province of the billing address.
      - `BillingAddressPostCode` string — Postal/ZIP code of the billing address.
      - `BillingCountryCode` string — ISO 3166-1 alpha-2 country code of the billing address.
      - `TaxNumber` string — Tax registration number (e.g. VAT number, ABN, EIN).
    - `Recipient` RecipientDetails — Billing address details for the customer receiving an invoice or estimate.
      - `CompanyIDFK` integer — The customer company ID.
      - `CompanyName` string — Name of the customer company.
      - `RecipientFormattedBillingAddress` string — Pre-formatted multi-line billing address for the recipient.
      - `RecipientBillingAddressLine` string — Street address line for the recipient.
      - `RecipientBillingAddressCity` string — City/suburb for the recipient.
      - `RecipientBillingAddressState` string — State/province for the recipient.
      - `RecipientBillingAddressPostCode` string — Postal/ZIP code for the recipient.
      - `RecipientBillingAddressCountryCode` string — ISO country code for the recipient.
  - `AddedTransactionLineItemIDs` integer[] — The TransactionLineItemIDs of the newly created line items.
  - `TimesheetEntriesLinked` integer — Number of timesheet entries linked (marked invoiced).
  - `ExpensesLinked` integer — Number of expenses linked (marked invoiced).
  - `FixedAmountsLinked` integer — Number of fixed amounts linked (marked invoiced).
  - `SkippedTimesheetEntryIDs` integer[] — Timesheet entries that matched the filters but were skipped because they have a running timer.
  - `Warnings` string[] — Non-fatal notices (e.g. an invoice status change caused by the new total).

## Other responses

- `400` — The request or filters are invalid; nothing was changed.
- `404` — No invoice with that ID exists.
- `409` — A selected record was invoiced concurrently by another request; nothing was changed.

## Changes

- **2026-08-30** `e99843f3c878` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/avaza/apis/avaza-api-documentation/changes/api/Invoice/AddUninvoicedItems/post.md)

---

[API](https://skmtc.dev/avaza/apis/avaza-api-documentation.md) · [All operations](https://skmtc.dev/avaza/apis/avaza-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/avaza/avaza-api-documentation/revisions/e99843f3c878/schema)
