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
Response
Returns the updated invoice, new line item IDs and per-type linked counts. Zero counts mean nothing matched - not an error.