finance_invoices:read. Company access is determined by the
access token. The linked client must remain accessible to that company. There
is no request body, pagination parameter, or write side effect.
invoice.created event. invoiceNumber is the human-readable business number.
For a credit note, originalInvoiceNumber identifies the original business
invoice number and is not a resource ID.
Document fields
The response uses the usual{ data, meta } envelope and returns the document
under data.invoice.
Each line contains
description, non-negative quantity, signed
unitPriceIncl, vatRate as a percentage, signed amountExcl, vatAmount,
amountIncl, and adjustmentType (charge or discount). ledgerAccountId,
ledgerNumber, ledgerName, billingPeriodStart, and billingPeriodEnd are
nullable. Billing periods use canonical YYYY-MM-DD dates.
Amounts and reconciliation
Monetary fields are JSON numbers in the invoice currency. Line amounts and document totals are rounded to two decimal places.unitPriceIncl preserves its
stored precision before multiplication by quantity; do not round it first.
Regular charges are positive. Discounts are negative. A credit note
reverses these signs, including the sign of any discount line. Keep these signed
values when mapping the document into bookkeeping; do not negate a credit note
a second time.
totals.amountIncl and totals.vatAmount preserve the recorded issued totals
with the document sign applied. totals.amountExcl is their difference.
totals.calculatedAmountIncl comes from all invoice lines, rounded at document
level. totals.difference is the recorded inclusive total minus that calculated
inclusive total at currency precision. A VAT-only mismatch also produces a
STORED_TOTAL_DIFFERS warning.
LINE_ROUNDING_DIFFERENCE indicates that summing the rounded line amounts
differs from rounding the underlying amounts once at document level. Its message
reports the inclusive, VAT and exclusive deltas in the invoice currency.
Preserve the recorded document totals and review how your destination handles
rounding adjustments, including when totals.difference is zero.
Missing recorded totals are calculated from the lines and produce
STORED_TOTAL_UNAVAILABLE. Invalid numeric data returns a server error without a
partial accounting document. Review warnings before creating a bookkeeping
entry.
Identity and ledger sources
Bothissuer and recipient contain name, vatNumber, commerceNumber,
addressLine1, addressLine2, postalCode, city, country, and dataSource.
The recipient also contains recipientId and email.
issuer.dataSource is invoice_snapshot or unavailable. The recipient can
also use current_client_record. A historical recipient snapshot takes
precedence, including a partial snapshot; missing historical fields remain null
instead of being filled with current details. current_client_record is
explicitly marked and does not establish the identity at the time of issue.
Ledger names and numbers reflect current company ledger records when available.
LEDGER_CURRENT_RECORD makes that source explicit. Missing or inaccessible
ledger details remain null and produce LEDGER_UNAVAILABLE for the affected
line.
Other warning codes are ISSUER_SNAPSHOT_UNAVAILABLE, RECIPIENT_UNAVAILABLE,
RECIPIENT_CURRENT_RECORD, CURRENCY_UNAVAILABLE,
CREDIT_ORIGINAL_INVOICE_UNAVAILABLE, and INVOICE_LINES_UNAVAILABLE.
PDFs and delivery
The accounting document containspdfAvailable and does not contain a download
URL. Request PDF download metadata through
GET /public/v1/finance/invoices/{invoiceId}/pdf with the separate
finance_invoice_pdfs:read scope. See finance for invoice
lists and PDF access, and exports for date-range export
packages.
For an event-driven integration, retrieve this document after an
invoice.created event and branch on invoiceType. Treat webhook delivery as
repeatable: use the invoice resource ID as your stable document key in the
destination system. A CreditNote is a separate accounting document, linked by
its originalInvoiceNumber; stop for review if that number is unavailable.
Make invoice triggers
A dedicated Make accounting connection can request these scopes through fresh company administrator consent:GET /public/v1/make/accounting/events?event=invoice.created to retrieve up
to three recent company events. Subscribe with
POST /public/v1/make/accounting/webhooks, an Idempotency-Key header and a JSON
body containing event: "invoice.created" and your dedicated Make webhook URL.
The response contains id, companyId, event and signingSecret. Keep the
secret private and verify signed notifications before processing their data.
Only dedicated Make HTTPS hook URLs are accepted. Unsubscribe using
DELETE /public/v1/make/accounting/webhooks/{id} and a fresh Idempotency-Key.
Invoices and credit notes share the invoice.created event. Separate triggers
filter the signed data.invoiceType field by Invoice or CreditNote.
Retrieve the full document using data.invoiceId. A PDF can still be pending
when the creation event arrives: the PDF endpoint then returns 404 with
error.key: PDF_NOT_AVAILABLE. Retry the same document ID later; do not create a
replacement invoice. PDF download URLs expire, so retrieve a fresh URL before a
delayed download.
Before posting to a bookkeeping system, reserve a durable document key from
company ID, invoice ID and document type. Mark it delivered only after storing a
confirmed destination receipt. Duplicate events and retries must reuse that
key; an event ID alone is insufficient. If a destination request times out,
check for the document at the destination before repeating its creation.
Zapier invoice triggers
A new Zapier accounting connection can request the same five scopes listed above. Existing general connections keep their approved permissions. The accounting permissions do not require health-data or private-communication consent; company administrator approval is still required. UseGET /public/v1/zapier/accounting/events?event=invoice.created for up to
three recent company events. Create a subscription with
POST /public/v1/zapier/accounting/webhooks, an Idempotency-Key and
{"event":"invoice.created","url":"<dedicated Zapier callback>"}. The
response provides id, companyId, event and a private signingSecret.
Unsubscribe through
DELETE /public/v1/zapier/accounting/webhooks/{id} with a fresh request key.
Notifications retain the signed Zapier event format. Verify the signature with
that subscription’s secret before filtering data.invoiceType or reading
data.invoiceId. The two document types use the same invoice.created event.
The document and PDF reads use the shared finance endpoints; a successful
notification alone does not establish a completed bookkeeping entry.
n8n invoice triggers
Company-specific n8n accounting credentials can be limited to the same five scopes. These accounting permissions are separate from the general event permissions and their sensitive-data consent requirements. Manage this connection’s accounting subscriptions withGET or POST /public/v1/n8n/accounting/webhooks, and retrieve or remove one
through GET or DELETE /public/v1/n8n/accounting/webhooks/{id}. Writes require
an Idempotency-Key. The POST body contains a public HTTPS url, exactly
events: ["invoice.created"] and the n8n trigger’s derived signing secret.
Subscription responses contain id, url, events, status and
signingKeyHash. The signing secret is never returned.
Lists default to ten subscriptions and allow up to 100 per page. Continue using
page and meta.pagination.hasNextPage. Both document types retain the n8n
company-bound, signed event envelope. Filter on document type only after
signature verification and retrieve the full document through the shared
finance endpoints.
Errors
400 indicates an invalid invoice resource ID. 401 indicates missing or
invalid authentication. 403 indicates insufficient scope or unavailable
integration access. 404 indicates an unavailable invoice or linked client in
the authenticated company. Rate limits return 429; unexpected errors or
invalid accounting data return 500. Retry transient failures using the same
destination document key to prevent duplicate bookkeeping entries.