MCP tools: Invoices and accounting

Draft, finalize and correct invoices, and read and maintain accounting receipts and the income overview.

Prerequisites
  • Invoices or Accounting module enabled.
  • For § 11 UStG (Austria): service date plus the issuer's name, address and VAT ID.

list_invoices

Lists invoices, newest first; filter by status, project and CRM lead. Role-based project visibility applies to members: invoices without a project are always visible, invoices with a project only if it is within the role's visibility. Requirements: role Viewer or higher, key scope "read" or higher, module "Invoices" enabled.

status
Optional · string · draft | sent | paid | overdue | cancelled — Only invoices with this status.
projectId
Optional · string — Only entries of this project.
crmLeadId
Optional · string — Only invoices for this CRM lead.
limit
Optional · number — Maximum number of results (default 50, max 200).

get_invoice

Returns an invoice with all its line items (items, in order). If it is outside your visibility it appears as "Invoice not found". Requirements: role Viewer or higher, key scope "read" or higher, module "Invoices" enabled.

id
Required · string — ID of the invoice.

create_invoice

Creates an invoice. It starts as an unnumbered draft; the invoice number is assigned automatically when the draft is finalized through update_invoice. Amounts in cents. Line items with timeEntryId take quantity (rounded to 0.01 h) and the stored rate from the server; the time entry must be completed, billable and approved, belong to the invoice's project and not be on any invoice yet, and the invoice must be in EUR. It is marked as reserved in the process. Austrian law (§ 11 UStG) requires the service date plus the issuer's name, address and VAT ID. Project, lead and time entry references are checked against the organization and your visibility. The action is recorded in the audit log as an MCP action. Requirements: role Member or higher, key scope "write" or higher, module "Invoices" enabled.

clientName
Required · string — Invoice recipient: name or company.
clientEmail
Optional · string — Invoice recipient: email address.
clientAddress
Optional · string — Invoice recipient: street address.
clientPostalCode
Optional · string — Invoice recipient: postal code.
clientCity
Optional · string — Invoice recipient: city.
clientCountryCode
Optional · string — Invoice recipient: country code (e.g. AT, DE).
clientElectronicAddress
Optional · string — Invoice recipient: electronic address for the e-invoice.
clientElectronicAddressScheme
Optional · string — Scheme of the recipient's electronic address (e.g. EM for email).
buyerReference
Optional · string — Buyer reference for the e-invoice (XRechnung), e.g. a Leitweg ID.
clientUID
Optional · string — VAT ID of the recipient (ATU…); mandatory for invoices from EUR 10,000.
crmLeadId
Optional · string — Links the invoice to a CRM lead.
projectId
Optional · string — ID of the assigned project.
dueDate
Optional · string — Payment due date (YYYY-MM-DD).
serviceDate
Optional · string — Delivery/service date (YYYY-MM-DD) – required by § 11 UStG (Austria).
servicePeriodEnd
Optional · string — End of the service period (YYYY-MM-DD), optional.
currency
Optional · string · Default: EUR — Currency code. Default: EUR.
taxRate
Optional · number — Tax rate in percent (Austria: 20 standard, 10 reduced, 13 special, 0 tax-free). Default: 0.
notes
Optional · string — Notes as free text.
supplierName
Optional · string — Invoice issuer: name or company (required by § 11 UStG).
supplierAddress
Optional · string — Invoice issuer: address (required by § 11 UStG).
supplierUID
Optional · string — Invoice issuer: VAT ID (ATU…).
supplierIBAN
Optional · string — Invoice issuer: IBAN for payment information.
supplierBIC
Optional · string — Invoice issuer: BIC/SWIFT.
supplierPostalCode
Optional · string — Invoice issuer: postal code.
supplierCity
Optional · string — Invoice issuer: city.
supplierCountryCode
Optional · string — Invoice issuer: country code.
supplierElectronicAddress
Optional · string — Invoice issuer: electronic address for the e-invoice.
supplierElectronicAddressScheme
Optional · string — Scheme of the issuer's electronic address.
supplierPhone
Optional · string — Invoice issuer: phone number.
supplierEmail
Optional · string — Invoice issuer: email address.
taxCategoryCode
Optional · string · S | Z | E | AE | G | O — Tax category per EN 16931: S (standard rate), Z (zero rate), E (exempt), AE (reverse charge), G (tax-free export), O (outside scope). Default: S.
taxExemptionReason
Optional · string — Reason for the tax exemption.
items
Optional · object[] — Line items as a list of objects: description (required), quantity (required), unitPrice in cents (required) and optionally timeEntryId (a completed, billable and approved time entry – quantity and stored rate are derived by the server; each time entry may appear only once).

update_invoice

Updates invoice fields or its status. While the invoice is a draft every field can be changed. The first transition out of draft finalizes the invoice transactionally: it gets its gap-free number, the canonical PDF, the XRechnung XML and the time evidence are created, and the action is written to the audit log. Afterwards only the status can change; going back to draft and reopening a cancelled invoice are not possible. paid cannot be set – record a payment instead. Line items cannot be changed with this tool. Requirements: role Member or higher, key scope "write" or higher, module "Invoices" enabled.

id
Required · string — ID of the invoice.
status
Optional · string · draft | sent | overdue | cancelled — New status. The first transition out of draft finalizes the invoice and assigns the number.
clientName
Optional · string — Invoice recipient: name or company.
clientEmail
Optional · string — Invoice recipient: email address.
clientAddress
Optional · string — Invoice recipient: street address.
clientUID
Optional · string — VAT ID of the recipient (ATU…); mandatory for invoices from EUR 10,000.
dueDate
Optional · string — New payment due date (YYYY-MM-DD).
serviceDate
Optional · string — Delivery/service date (YYYY-MM-DD) – required by § 11 UStG (Austria).
servicePeriodEnd
Optional · string — End of the service period (YYYY-MM-DD), optional.
notes
Optional · string — Notes as free text.
taxRate
Optional · number — New tax rate in percent; tax amount and total are recomputed.
supplierName
Optional · string — Invoice issuer: name or company (required by § 11 UStG).
supplierAddress
Optional · string — Invoice issuer: address (required by § 11 UStG).
supplierUID
Optional · string — Invoice issuer: VAT ID (ATU…).
supplierIBAN
Optional · string — Invoice issuer: IBAN for payment information.
supplierBIC
Optional · string — Invoice issuer: BIC/SWIFT.
supplierPostalCode
Optional · string — Invoice issuer: postal code.
supplierCity
Optional · string — Invoice issuer: city.
supplierCountryCode
Optional · string — Invoice issuer: country code.
supplierElectronicAddress
Optional · string — Invoice issuer: electronic address for the e-invoice.
supplierElectronicAddressScheme
Optional · string — Scheme of the issuer's electronic address.
supplierPhone
Optional · string — Invoice issuer: phone number.
supplierEmail
Optional · string — Invoice issuer: email address.
taxCategoryCode
Optional · string · S | Z | E | AE | G | O — Tax category per EN 16931: S (standard rate), Z (zero rate), E (exempt), AE (reverse charge), G (tax-free export), O (outside scope). Default: S.
taxExemptionReason
Optional · string — Reason for the tax exemption.

delete_invoice

Deletes an invoice with its line items – but only drafts (status draft). Unlike the other delete tools the Member role is enough here; a key with the delete scope is required. Correct issued invoices with create_invoice_correction. Requirements: role Member or higher, key scope "delete" or higher, module "Invoices" enabled.

id
Required · string — ID of the invoice.

create_invoice_correction

Creates a standalone correction/cancellation invoice for an already issued (non-draft) invoice. The original stays untouched; a new unnumbered draft is created with a frozen copy of the original's header data (recipient, issuer, currency, project, CRM lead) – no line items and no reused number. The number is assigned when the correction is finalized. The action is written to the audit log. Requirements: role Member or higher, key scope "write" or higher, module "Invoices" enabled.

id
Required · string — ID of the issued invoice being corrected.
reason
Required · string — Required: reason for the correction.

list_accounting_receipts

Lists accounting receipts, by receipt date descending; filter by project and status. Result: { receipts: [...] }. Requires at least the Member role. Role-based project visibility applies to members. Requirements: role Member or higher, key scope "read" or higher, module "Accounting" enabled.

projectId
Optional · string — Only entries of this project.
status
Optional · string · uploaded | failed | archived — Only receipts with this status.
limit
Optional · number — Maximum number of results (default 50, max 200).

update_accounting_receipt

Updates a receipt's metadata: name, date, amount, merchant, category, project link and status. The receipt must be within your visibility; a new project is checked against the organization. Requirements: role Member or higher, key scope "write" or higher, module "Accounting" enabled.

id
Required · string — ID of the receipt.
displayName
Optional · string — Display name of the receipt.
receiptDate
Optional · string — Receipt date (YYYY-MM-DD).
amount
Optional · number — Amount in cents.
merchant
Optional · string — Merchant or issuer of the receipt.
category
Optional · string — Category as free text.
projectId
Optional · string — ID of the assigned project.
status
Optional · string · uploaded | failed | archived — New receipt status.

delete_accounting_receipt

Permanently deletes a receipt together with its underlying file. Requires at least the Admin role and a key with the delete scope. If a document under legal hold references the receipt, deletion is refused with a conflict (409); both blocked and executed deletions are written to the audit log. Requirements: role Admin or higher, key scope "delete" or higher, module "Accounting" enabled.

id
Required · string — ID of the receipt.

list_accounting_income

Lists income (invoices from the Invoicing module) for the accounting overview: id, number, status, client, issue date, currency and total per invoice, plus totalsByCurrency with paid and outstanding totals per currency. Requires at least the Member role; project visibility applies to members. Requirements: role Member or higher, key scope "read" or higher, module "Accounting" enabled. This tool takes no parameters.

Common pitfalls

  • The number is assigned on finalization

    create_invoice creates a draft without a number. The number is assigned when update_invoice moves the status out of draft for the first time.

  • Paid cannot be set

    update_invoice rejects paid ("Record a payment instead"). Record a payment in the web app instead.

  • Issued means immutable

    After finalization only the status can change, and returning to draft is not possible. Use create_invoice_correction for changes.

  • Time entries must be approved

    Line items with timeEntryId require a completed, billable and approved time entry in the same project; the invoice must be in EUR.

  • Amounts in cents

    All amounts (unitPrice, amount) are cent values.

Keep reading

Still have a question or a problem?

Visit support

Last reviewed on 2026-09-26