Release Notes

September 29, 2025

September 29, 2025 Karbon API release adds the ability to request the tax and revenue breakdown from the invoice Data tab

Get Invoice Data

The Invoice API can now be queried to return all of the Work and Expense details from the invoice data tab by using

JSONCopied!
$expand=Data
.

This can also be used in conjunction with the invoice presentation line items and the payments expands:

JSONCopied!
GET /v3/Invoices/{InvoiceKey}$expand=LineItems,Payments,Data

Add any expand options you need when requesting an individual invoice:

  • JSONCopied!
    $expand=LineItems
    returns the invoice lines on the Presentation tab
  • JSONCopied!
    $expand=Payments
    returns the payments showing on the Payments tab
  • JSONCopied!
    $expand=Data
    returns information from the Data tab. Ad hoc invoices are broken down into their Work Items & Expenses, and recurring fixed fee invoices provide their Service details.

Refer to the API documentation for examples and more information.


Invoice Tax Location

The Invoice API now includes a new field

JSONCopied!
TaxLocation
which sets whether the tax was set on the Presentation tab (current) or the Data tab (new).

  • Current ad hoc invoices are
    JSONCopied!
    TaxLocation=Presentation
  • Future ad hoc invoices will be
    JSONCopied!
    TaxLocation=Data
  • All recurring billed invoices are
    JSONCopied!
    TaxLocation=Data

Tax details for the lines themselves are included where the tax is set in the UI:

  • If
    JSONCopied!
    TaxLocation=Presentation
    , the
    JSONCopied!
    LineItems
    array has tax info and the tax fields in the
    JSONCopied!
    Data
    array will be
    JSONCopied!
    null
    .
  • If
    JSONCopied!
    TaxLocation=Data
    , the
    JSONCopied!
    Data
    array has tax info and the tax fields in the
    JSONCopied!
    LineItems
    array will be
    JSONCopied!
    null
    .

Example API responses

Example Ad Hoc invoice

Each Data line returns either a Work Item or a Client in the case of Client Time/Expenses.
Each line includes

JSONCopied!
Work
and/or
JSONCopied!
Expenses
arrays depending on what is billed.
The
JSONCopied!
Services
array will always be
JSONCopied!
null
.

JSONCopied!
"Data": [ { "EntityKey": "M4QTnt1srdD", "EntityType": "Work Item", // or "Client" or "Service" "Billed": 800, "Service": null, "Work": { ... }, "Expenses": { ... } } ]

Example Recurring fixed fee invoice

Each Data line returns a

JSONCopied!
Service
, and the
JSONCopied!
Work
and
JSONCopied!
Expenses
arrays are
JSONCopied!
null
.

JSONCopied!
"Data": [ { "EntityKey": "4lQzzVNBdHwq", "EntityType": "Service", "Billed": 150, "Service": { ... }, "Work": null, "Expenses": null } ]