StabisoDocs

API reference

Shared schemas

Schemas used by more than one area, and the error bodies.

Schemas

AccountBalance

Field Type Required Description
account_id string (uuid) yes Id (uuid) of the account.
code string yes Account code, e.g. 6500.
name string yes Account name.
type string yes asset, liability, equity, revenue or expense.
report_line string yes The statement line the account is grouped under, e.g. pl.opex.other.
debit string yes Total debits posted to the account in the range, in the entity's functional currency.
credit string yes Total credits posted to the account in the range, in the entity's functional currency. In a report in another currency, debit and credit hold the translated balance on its side, the other side 0.
balance string yes Debit minus credit for assets and expenses, credit minus debit for the others, so a normal balance is positive; in the report's currency.
comparative Comparative or null Asked for with compare: the account's balance in the comparative report (the same range a year earlier, or the balance sheet at the comparative date) and the change; null when not asked for.
budget Comparative or null Asked for with budget=true (income statement only): the account's amount in the approved budget and the variance; null when not asked for or without a budget.

AllocationInput-Input

Field Type Required Description
document string yes Document id or number.
amount decimal string yes Paid amount applied to the document, in the payment currency. (greater than 0)
document_amount decimal string or null What the allocation settles on the document, in the document's currency (cash discount not included). Only for a document in another currency than the payment, e.g. a CHF receipt for a EUR invoice: give the EUR amount it settles, such as the open amount when the customer meant to pay the invoice in full. Default: amount converted at the payment date's rate. The difference between what the document carried and what the bank received is booked as realised FX gain or loss. (greater than 0)
discount decimal string Cash discount (Skonto) taken on top of the amount, in the document's currency: the document is settled by its amount + discount. Only on invoices and bills with cash discount terms, until their cash discount date. (min 0; default "0")

AllowanceCharge

Document level (BG-20 / BG-21) or invoice line level (BG-27 / BG-28).

Field Type Required Description
charge boolean yes True for a charge (BG-21, BG-28), false for an allowance (BG-20, BG-27).
amount string or null BT-92 / BT-99 / BT-136 / BT-141 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
base_amount string or null BT-93 / BT-100 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
percent string or null BT-94 / BT-101 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
vat_category string or null BT-95 / BT-102
vat_rate string or null BT-96 / BT-103 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
reason string or null BT-97 / BT-104 / BT-139 / BT-144
reason_code string or null BT-98 / BT-105 / BT-140

ApprovalOut

Field Type Required Description
id string (uuid) yes Id (uuid) of the approval request; the {approval_id} of the decision operations.
object_type string yes What the request is about: journal_entry (a posting), journal_reversal (reversing a posted entry), party, purchase_order, purchase_match, account_role, recurring_invoice (the terms of a recurring invoice), revenue_contract or subscription (the terms of a contract or a subscription), plan_version (a submitted budget or forecast version).
object_id string (uuid) yes Id (uuid) of that journal entry (for a reversal: the entry to reverse), party, purchase order, bill, account, recurring invoice, revenue contract, subscription or plan version; for posting_limit, the company (entity); for approval_policy, the organization.
action string yes The action waiting for a decision: post for a journal entry; reverse_entry for a reversal; for a party activate_party, change_bank_details, change_party_details or change_party_status; change_required_account_role or change_company_bank_details (new bank details of the company) for an account; activate_recurring_invoice for a recurring invoice; activate_revenue_contract for a revenue contract; approve_subscription for a subscription; approve_plan for a plan version; change_posting_limit for raising or removing a company's posting approval limit; change_approval_policy for a change that relaxes the approval policy.
status string yes pending, approved or rejected; a request its requester withdrew is rejected with a comment starting with withdrawn, and withdrawn true.
requested_by object yes Who asked, as an actor object (type, id, name); that actor cannot decide the request.
reason string yes Why a decision is needed: the reason text of the policy rule.
summary object yes What is being asked, e.g. for an entry its description, entry date, amount and source; for an account its account, the current and proposed values and the reason. A subscription's request, its early end or renewal also carries words (what it is about), a Reason the screens word by its code (approvals.request); why a request waits, by code, is reason_words. The request to approve the invoice of an asset's sale carries asset_sale: the asset, the entry_id and lines (account, name, debit, credit) of the asset's entry its approval books too, and its profit_or_loss (a gain positive) in its currency.
decided_by object or null yes Who decided, as an actor object; null while pending.
decided_at string (date-time) or null yes When it was decided (ISO 8601, UTC); null while pending.
comment string or null yes The comment given with the decision; null if none.
created_at string (date-time) yes When the request was made (ISO 8601, UTC).
withdrawn boolean True when the person who asked took the request back (whichever key or session): it is rejected, decided by her, with the comment withdrawn (and her words after withdrawn: ). A rejection by a second person is false, whatever its comment says. (default false)
reason_words Reason or null reason by code (approvals.why) and the values it names, for the screens to word; null where the reason has English words only (a policy rule's own text).

ApproverDeclaration

What the administrator who gives a person the right to approve declares about them.

Field Type Required Description
person_name string yes The person's full name, as an auditor reads it. (min length 2; max length 200)
relationship "board_member" | "employee" | "external_accountant" | "other" | "partner" yes The person's relationship to the company: external_accountant (such as a Treuhänder), board_member, partner (a co-owner), employee or other.
organisation string or null The person's firm, such as the accounting firm. (max length 200)
note string or null Anything else an auditor should know. (max length 500)
confirmed true yes The administrator confirms that this is a different real person, not another account of their own, and that this declaration is recorded for the company's auditor.

AuditEventOut

Field Type Required Description
id integer yes Sequence number of the event; rises with time.
at string (date-time) yes When it happened (ISO 8601, UTC).
actor object yes The actor, as stored in the audit trail: an object with type (human, agent or system), id (user:<id>, key:<prefix> or system:<name>) and name.
action string yes What happened, e.g. journal.post, approval.approved, period.close, api_key.create.
object_type string yes Kind of object affected, e.g. journal_entry, period, entity.
object_id string or null yes Id of the object, as text; null when there is none.
request_id string or null yes The X-Request-Id of the request that caused it; null if none.
idempotency_key string or null yes The Idempotency-Key of that request; null if none.
data object yes Event-specific details, e.g. the entry number and hash of a posting.

AverageRate

Field Type Required Description
month string yes The calendar month, YYYY-MM.
rate string yes Units of the report currency per one unit of the company's currency: the mean of the ECB's daily rates of the month, 10 decimals.
fixings integer yes How many daily ECB rates the mean is of.
first_fixing string (date) yes The first of those days.
last_fixing string (date) yes The last of those days.
complete boolean yes False for a month that has not ended: the mean of its rates so far, which changes as the month goes on.

BalanceSheet

Field Type Required Description
entity string yes Code of the entity.
currency string yes The currency all amounts are in: the entity's functional currency, or the one asked for with currency.
as_of string (date) yes The report date (ISO 8601).
assets string yes Total assets.
liabilities string yes Total liabilities.
equity string yes Total equity, including unclosed_earnings.
unclosed_earnings string yes Profit or loss accumulated through as_of that has not been closed to retained earnings; positive is a profit. In another currency: the results of every year at their months' average rates (the closing entries are left out).
balanced boolean yes True when assets equal liabilities plus equity.
sections array of Section yes Assets, liabilities and equity grouped by report line.
translation ReportTranslation or null Shown in another currency than the entity's own: how it was translated and the rates used; null in the entity's own currency.
comparative BalanceSheetComparative or null With compare=prior_year_end or compare_as_of: the totals at the comparative date and the changes; each account and section carries its own comparative. There is no budget comparison: budgets plan revenue and expenses only.
notes array of Reason Caveats of the comparative (reportNote codes), e.g. that no fiscal year contains the report date.

BalanceSheetComparative

Field Type Required Description
as_of string (date) yes The comparative date: the last day of the previous fiscal year, or compare_as_of (ISO 8601).
assets Comparative yes Total assets against the comparative date.
liabilities Comparative yes Total liabilities against it.
equity Comparative yes Total equity against it.
unclosed_earnings Comparative yes Unclosed earnings against it.

BankRefusal

Field Type Required Description
kind "rejected" | "returned" yes rejected: the bank refused the payment in its status report (pain.002) and never paid it; returned: the bank paid it and the money came back (a credit line on a statement).
code string or null yes The bank's reason as an ISO 20022 code, e.g. AC04 (account closed), AC01 (account number wrong); null when the bank gives none.
text string or null yes The bank's own words, as it sent them, if any.
source string yes Where the bank said so: the status report's message id, or the bank reference of the statement line that returned the money.
on string (date) yes The day the payment's reversal is dated.
status "pending_approval" | "posted" yes posted: the payment is reversed and the documents it paid are open again; pending_approval: its reversal waits for a second person (four eyes).

BlockerOut

What stops an action, as a refusal would say it: a screen words code from details in the person's language and shows message (English) for a code it does not know.

Field Type Required Description
code string yes Names the reason, like an error code.
message string yes The reason in plain English.
details object yes The values the message names.

CashFlowAccount

Field Type Required Description
account_id string (uuid) yes Id (uuid) of the account.
code string yes Account code, e.g. 1100.
name string yes Account name.
amount string yes What the account adds to the line: positive brings cash in, negative takes it out (a receivable that grows is negative), in the functional currency.

CashFlowLine

Field Type Required Description
line string yes The line, e.g. op.profit, op.receivables, inv.fixed_assets, fin.borrowings or fx.cash (the prefix is the section).
amount string yes Cash in (positive) or out (negative) on the line.
accounts array of CashFlowAccount The accounts the line is made of, by code, so it can be followed to their entries (GET /v1/entities/{entity}/reports/general-ledger); empty in a group's.
report_lines array of CashFlowReportLine In a group's statement, the report lines the line is made of; empty in an entity's.

CashFlowReportLine

Field Type Required Description
report_line string yes The group report line, e.g. bs.assets.current.receivables.
labels map of string yes What the group statements call the line, by language (en, de, fr, it, sv).
amount string yes What the report line adds to the line, as amount above.

CashFlowSection

Field Type Required Description
section "financing" | "fx" | "investing" | "operating" yes operating, investing or financing activities, or fx: the effect of exchange rate changes on cash held in other currencies.
total string yes The net cash flow of the section.
lines array of CashFlowLine yes The section's lines in statement order.

ChartTemplate

A chart-of-accounts template a new entity can start from.

Field Type Required Description
id string yes The value of chart when an entity is created, e.g. ch_kmu.
name string yes What the chart is.
countries array of string yes The countries (ISO 3166-1 alpha-2) whose standard chart it is; empty for the generic chart, which every other country starts from.
standard boolean True for the chart a new entity of the asked country starts from. (default false)

Check

Field Type Required Description
id string yes Check id: approvals, drafts, depreciation, fx_revaluation, deferred_tax, ar_control_reconciled, ap_control_reconciled, opening_clearing, bank_reconciled, bank_balances, balanced, integrity, sequence, year_close (the last period of a year: its closing entry is posted), appropriation_pending (a closed year's result still waits for the general meeting), recurring_generated (recurring invoices due through the period were not made), recurring_journals_made (recurring journals due through the period were not posted), subscriptions_billed (subscription periods due through the period were not billed), ic_reconciled (the entity's balances with its group entities agree with theirs), ic_interest (the interest on its intercompany loans is accrued through the period's end), withholding_tax_due (the Swiss withholding tax on a dividend is paid when due), vat_returns_filed (the VAT returns due by the period's end are final), revenue_recognised (the revenue contracts' schedule lines due by the period end are recognised), contract_position_presented (each revenue contract's debit position is presented as an asset), contract_control_reconciled (the contract accounts hold no posting without a contract), inventory_reconciled (the stock at moving average equals the inventory accounts; a stock count of the period still open is a warning), grni_reconciled (the goods received not invoiced equal the GR/IR accounts; order lines still open are a warning), close_tasks (the organization's own close tasks of the period are done; a warning while one is open, never a failure), payments_in_transit (no outgoing payment dated up to the period's end waits more than 10 days for the bank to execute it, a warning) or leases_posted (the interest and depreciation of the active leases are booked through the period's end, a warning).
title string yes What the check verifies.
status "fail" | "n/a" | "pass" | "warn" yes pass, fail (blocks the close), warn (does not block) or n/a.
detail string yes The result in English words, e.g. the number of pending items.
code string or null The result by a stable code (erp.contracts.words.CLOSE_CHECKS): the screens word it as periodClose.result.<code> in the person's language.
details object or null The values the words of code name, by name: counts, amounts as decimal strings, days as ISO dates, lists, or reasons with their own words, code, details and text.

CheckResult

What a received e-invoice is and whether it keeps the rules (nothing stored).

Field Type Required Description
valid boolean yes true when no fatal rule is broken.
label string yes Short name of what was read, e.g. e-invoice (XRechnung 3.0 CII).
profile string yes The profile or specification the invoice declares.
syntax string yes CII or UBL.
container string yes xml, or pdf for a ZUGFeRD / Factur-X PDF.
attachment string or null yes For a PDF: the name of the embedded XML file.
violations array of Violation yes The EN 16931 and XRechnung rules the invoice breaks, by rule id.
invoice Invoice yes The invoice in EN 16931 terms (parties, lines, totals, VAT breakdown).

Checklist

Field Type Required Description
entity string yes Entity code.
period string yes The period as YYYY-NN.
period_id string (uuid) yes Period id.
period_status string yes open or closed.
ready boolean yes true when no check has the status fail.
checks array of Check yes The checks in the order evaluated.

Comparative

Field Type Required Description
amount string yes The comparative figure (prior year, comparative date or budget), signed as balance: a normal balance is positive.
change string yes This report's figure less amount; for a budget, the variance.
change_pct string or null yes change as a percent of amount (of its absolute value), one decimal; null when amount is zero.

Contact

Field Type Required Description
name string or null BT-41 / BT-56 contact point
phone string or null BT-42 / BT-57
email string or null BT-43 / BT-58

ContentGap

One piece of legally required content an invoice lacks, and where it is entered.

Field Type Required Description
party "buyer" | "seller" yes Whose record lacks it: seller (the entity) or buyer (the customer).
field "name" | "postal_code" | "street" | "tax_id" | "town" | "vat_designation" | "vat_number" yes The missing field: name, street, postal_code, town, vat_number, tax_id (Germany: the seller's USt-IdNr or Steuernummer; give vat_number of the entity or the tax_number of its VAT settings) or vat_designation (Switzerland: the seller's UID with the register designation MWST, TVA or IVA).
basis string yes The legal basis that makes it mandatory, e.g. Art. 26 Abs. 2 Bst. a: Ort des Leistungserbringers.
record_id string (uuid) yes Id of the record to complete: the entity (seller) or the customer (buyer).

CopyOut

A test organization made from this one.

Field Type Required Description
org_id string (uuid) yes Id (uuid) of the test organization; choose it when signing in.
name string yes Its name.
created_at string (date-time) yes When it was made (ISO 8601, UTC).
created_by object yes Who made it, as an actor object (type, id, name).
masked boolean yes Its business partners are mock values (see masked).
cloned_at string (date-time) or null When it was last filled from this organization, made or refreshed (ISO 8601, UTC).
refresh_schedule "nightly" | "off" | "weekly" When it is refreshed by itself (see PUT /v1/test-copies/{copy_id}/schedule): off, nightly or weekly. (default "off")
refresh_problem "refresh_failed" | "scheduler_not_admin" | "source_gone" | "source_not_active" or null Why it was last not refreshed on its schedule; null once it is refreshed again. refresh_failed: this organization could not be copied (refresh it by hand to see why); scheduler_not_admin: whoever set the schedule is no longer an administrator here (set it again); source_not_active or source_gone: this organization is not active.
refresh_problem_at string (date-time) or null When it was last not refreshed (ISO 8601, UTC).
remove_requested_at string (date-time) or null When its removal was asked for (ISO 8601, UTC); null until then. It leaves this list once it is removed.

CurrencyAmount

Field Type Required Description
currency string yes ISO 4217 code.
amount string yes The amount in that currency.

DayRate

Field Type Required Description
date string (date) yes The day the rate is for.
rate string yes Units of the report currency per one unit of the company's currency.
fixing_date string (date) yes The ECB fixing used: the day itself, or the last one before it (a weekend, a holiday).

DocumentLineInput

Field Type Required Description
description string or null Text of the line, e.g. Consulting September 2026. Required, except on a line that names a product (default: the product's name) or credits a line (credits_line; default: that line's text). (min length 1)
quantity decimal string Quantity as a decimal string, greater than 0; default 1. (greater than 0; default "1")
unit_price decimal string or null Net unit price; negative only on vendor documents (e.g. a discount line). Required, except on a line that names a product: left out, it takes the customer's price from its price list in the document's currency, else the product's list price on the document date (422 product_unpriced when it has neither); and on a credit note line with credits_line: left out, the line credits that line as it was, at its price and (unless the line gives its own) its discount.
discount_percent decimal string or null A discount on the line, in percent of quantity times unit price (at most 100; 0 for none). Give this or discount_amount, not both. (min 0; max 100)
discount_amount decimal string or null A discount on the line, as an amount off quantity times unit price in the document currency, at most what the line is worth (0 for none). Give this or discount_percent. (min 0)
credits_line integer or null Credit notes with credits: the number of the line of the credited document this line credits. Without a unit_price the line credits it as it was: it takes that line's price and its discount with its share of the document discount, in proportion to the quantity it credits (what is left of them when it credits the rest of the line), and returns them as its own unit_price and discount, with as_credited true when it gave no discount either. To change the quantity of such a line later, send it again without price and discount; sent with them, it credits them as given. With a unit_price only the discount the line gives applies; where the credited line had a discount (its own or a share of the document discount) the line must give one (0 for none), else 422 credit_discount_required. The line also takes that line's tax decision as stored (supply_type, rate_type, tax_category, vat_scope and the tax: treatment, taxing jurisdiction, rates), so it reverses exactly the tax charged; one it states that differs is not taken, with the warning credit_takes_credited_vat. (min 1)
account string or null Defaults to the product's revenue account, else the party or entity default.
product string or null Sales documents: code (or id) of an active product of the entity (GET /v1/products). The line takes the product's revenue account, supply_type and rate_type unless it names its own, and its name and price when it gives none (the price in force: GET /v1/products/{product_id}/price); the document's provenance.filled says what was taken.
obligation string (uuid) or null Sales documents: id of the performance obligation of an active revenue contract of the same customer and currency that the line bills (GET /v1/revenue-contracts/{contract_id}). The line is booked to the contract liability account (the role contract_liability), not to revenue: the recognition run makes the revenue (POST /v1/periods/{period_id}/revenue-recognition). It takes no account of its own, is not a supply of goods, and the net billed of the contract never exceeds its transaction price (posting is refused, 422).
sales_line string (uuid) or null Sales invoices: id of the sales order line the line invoices (GET /v1/sales-documents/{document}), of an open order of the same customer and currency. The invoices of an order line never add up to more than was ordered less what was closed (422); a draft reserves its quantity until it is voided. Usually set by POST /v1/sales-documents/{document}/invoice.
delivery_line string (uuid) or null Sales invoices: id of the line of a posted delivery note of the same customer that the line invoices (GET /v1/delivery-notes/{note_id}), of the same product. What the invoices of a delivery note line add up to, less what credit notes took back, never exceeds what was delivered less what came back (422). The goods left with the delivery note, so the invoice moves no stock. Usually set by POST /v1/delivery-notes/{note_id}/invoice. A line of a stock item that names none ships with the invoice: posting the invoice issues the goods (Dr cost of goods sold / Cr inventory).
goods_returned boolean Sales credit notes: the goods of this line came back. The line names the line it credits (credits_line), of a stock item; posting the credit note brings the quantity back into stock at the cost it left with (Dr inventory / Cr cost of goods sold). Without it no stock moves. (default false)
warehouse string or null Code (or id) of the warehouse the goods come back to (goods_returned) or ship from with the invoice (a stock item's invoice line that names no delivery note line); default the entity's default warehouse.
supply_type "electronic_services" | "goods" | "services" goods, services (default) or electronic_services; part of the place-of-supply decision. (default "services")
rate_type "exempt" | "parking" | "reduced" | "special" | "standard" | "super_reduced" | "zero" Which VAT rate of the jurisdiction applies: standard (default), reduced, super_reduced, parking, zero, special or exempt. (default "standard")
tax_category string or null One of the categories of the rate (GET /v1/entities/{entity}/vat-rate-types), e.g. books: it chooses the rate where the rate type has several (France reduced: 5.5 % or 10 %) and names the kind of an exempt supply (insurance). Omit for none. (max length 200)
printed_tax_amount decimal string or null VAT shown on a vendor bill; compared with the determined VAT.
vat_recovery_percent decimal string or null Purchase bills and their credit notes: how much of the line's input VAT the company may deduct, in percent (0 to 100, two places), e.g. 0 for a gift whose VAT the law excludes or 50 for a car used half privately. The rest is booked as part of the cost on the line's own account, not as input VAT, so no VAT return reports it. Omit (null) to take the account's vat_recovery_percent, else 100. A self-assessed line still owes all of its VAT. Below 100 it is refused (422) on a line without input VAT of our own: a sales line, one outside VAT, foreign VAT booked as cost, US sales or use tax, a Canadian line of several taxes. (min 0; max 100)
reverse_charge boolean Vendor documents: the vendor invoices under reverse charge (EN 16931 VAT category AE, e.g. UStG §13b), so the VAT is self-assessed at the determined rate. (default false)
use_tax boolean A US company's bill line the vendor charged no sales tax on, for something used in the company's own state: the company self-assesses use tax on it at the state's rate and its use tax area's (ADR-0064). Refused on sales documents and for companies outside the US. (default false)
vat_scope "in_scope" | "outside" in_scope (default): the tax is determined as usual. outside: the line is outside the scope of VAT, like interest and fees for late payment (compensation for damage), a supply within a VAT group or an Organschaft. It needs vat_scope_reason, has no tax determination and rate 0, carries no tax tag (so no VAT report or return has it) and prints the remark of its reason in the document's language. It takes no tax_category, printed_tax_amount or reverse_charge, and a document with such a line carries no cash discount. (default "in_scope")
vat_scope_reason "damages" | "organschaft" | "vat_group" or null Required with vat_scope outside, refused otherwise: damages (compensation for damage), vat_group (a supply within a Swiss VAT group, Art. 13 MWSTG) or organschaft (an Innenumsatz of a German Organschaft, § 2 para. 2 no. 2 UStG).
dimensions map of string Dimension code to value code, e.g. {"cost_centre": "CC-200", "project": "P-17"} (GET /v1/dimensions): each an active value, valid on the document date in its company. They go onto the journal lines of the line's amount (not its VAT or the receivable or payable). An account may require a dimension (required_accounts of the dimension): the document is then refused at submission without it.

DocumentLineOut

Field Type Required Description
line_no integer yes Position of the line, from 1.
description string yes Text of the line.
quantity string yes Quantity.
creditable_quantity string or null Posted invoice or bill detail: quantity remaining to credit, after posted and pending credits. Zero for a fully credited line or a price correction that needs manual credit lines; null when not calculated (including lists).
creditable_tax_amount string or null Posted invoice or bill detail: VAT remaining on this line; null when not calculated. A copied vendor credit uses this remaining printed VAT.
creditable_discount_amount string or null Posted invoice or bill detail: exact discount on the remaining quantity, including the document discount and rounding remainder; null when not calculated. The last credit uses this amount so the parts add up exactly.
unit_price string yes Net unit price in the document currency.
account_id string (uuid) yes Id of the revenue or expense account the line is booked to.
product_id string (uuid) or null Id of the product a sales line sells (GET /v1/products).
obligation_id string (uuid) or null Id of the performance obligation of a revenue contract the line bills; the line is then booked to the contract liability account (GET /v1/revenue-contracts).
sales_line_id string (uuid) or null Id of the sales order line the line invoices (GET /v1/sales-documents/{document}); null for none.
credits_line integer or null Credit notes: the number of the line of the credited document this line credits; null for a line of its own.
delivery_line_id string (uuid) or null Sales invoices: id of the delivery note line the line invoices (GET /v1/delivery-notes/{note_id}); null for none.
goods_returned boolean Sales credit notes: the goods of the line came back into stock (warehouse_id), at the cost they left with. (default false)
warehouse_id string (uuid) or null Of a stock item's line: the warehouse its goods come back to (credit note with goods_returned) or ship from with the invoice (an invoice line that names no delivery note line); null otherwise.
as_credited boolean Credit notes: the line credits the line credits_line as it was. It was sent without a price or discount, so it took that line's price and its discount in proportion to its quantity. Sent again that way (no unit_price, no discount), it credits a new quantity as it was too. False for a line with a price or discount of its own. (default false)
supply_type string yes goods, services or electronic_services.
rate_type string yes VAT rate type requested for the line, e.g. standard.
tax_category string or null yes Named tax category, if one overrides the rate type.
use_tax boolean A US company's bill line the vendor charged no sales tax on, for something used in the company's own state: the company self-assesses use tax on it at the state's rate and its use tax area's (ADR-0064). Refused on sales documents and for companies outside the US. (default false)
vat_scope "in_scope" | "outside" in_scope, or outside for a line outside the scope of VAT (no tax determination, rate 0). (default "in_scope")
vat_scope_reason "damages" | "organschaft" | "vat_group" or null Why an outside line is outside VAT; null for in_scope.
discount_percent string or null The line discount as a percent of quantity times unit price; null when it was given as an amount, or there is none.
discount_amount string The line discount in the document currency; 0 for none. (default "0.00")
document_discount_amount string The line's share of the document discount, split over the lines by what each is worth after its own discount; 0 for none. (default "0.00")
net_amount string yes Quantity times unit price, rounded, less the line discount and the line's share of the document discount, in the document currency; the VAT is on it.
tax_rate string yes VAT rate charged, in percent.
tax_amount string yes VAT amount of the line in the document currency: on a vendor document, what the vendor charged, also foreign VAT booked as cost (see tax).
tax object or null yes The tax decision: treatment, liable_party, taxing_jurisdiction, charged_rate, accounted_rate, self_assessed, the rule and its legal reference, the reference-data dataset_version and its sources. On a bill: treatment foreign_vat when the supply is taxed abroad and the vendor's VAT is booked as cost; foreign_vat (amount, rate, jurisdiction) on a line self-assessed here whose vendor charged its own country's VAT as well, booked as cost beside it. A Canadian line lists its taxes in components (tax_type gst, hst, qst, pst or rst, jurisdiction, rate, amount): each is booked and printed on its own.
vat_recovery_percent string How much of the line's input VAT is deductible, in percent (0 to 100): the line's own, else its account's, else 100. The rest of the VAT is booked as part of the cost on the line's account and no VAT return reports it (ADR-0079). 100 on every line without input VAT of our own (sales, foreign VAT booked as cost, US sales tax). (default "100")
tax_fx_net_amount string or null Net amount at the official VAT exchange rate.
tax_fx_tax_amount string or null VAT at the official VAT exchange rate.
dimensions map of string The line's cost centre, profit centre, project ...: dimension code to value code, as on the journal lines of its amount; empty when none.

Field Type Required Description
id string (uuid) yes Id of the linked document.
number string yes Its number.

DocumentOut

Field Type Required Description
withholding_code string or null Vendor documents: the withholding tax code kept back (IT-RA-20, custom); null for none.
withholding_rate string or null The withholding rate in percent of withholding_base.
withholding_base string The net amount before VAT the withholding tax is taken on; 0 for none. (default "0.00")
withholding_amount string The withholding tax kept back from the vendor, owed to the tax authority (the account of role vendor_withholding_payable). total is net plus VAT less it: what the vendor is paid. (default "0.00")
creditable_amount string or null Posted invoice or bill detail: document amount left to credit after posted and pending credits, independently of receipts or payments; null in lists.
id string (uuid) yes Id of the document.
entity_id string (uuid) yes Id of the entity (company) the document belongs to; its functional currency and chart of accounts are the ones the amounts and lines refer to.
kind string yes sales_invoice, sales_credit_note, purchase_bill or purchase_credit_note.
party_id string (uuid) yes Id of the customer or vendor.
party_code string or null Code of the customer or vendor, e.g. C-DE.
party_name string or null Name of the customer or vendor.
party_status string or null The customer's or vendor's status: active, or draft until a second person activates it (a draft party's documents are neither submitted nor posted).
number string or null yes Gap-free document number such as INV-2026-000001, assigned when the document is posted; null before.
external_number string or null yes The vendor's own invoice number (bills).
status string yes draft, pending_approval (waiting for a second person), posted, rejected (an approver refused it; it can be reopened) or void.
document_date string (date) yes Document date (ISO 8601); the tax point unless supply_date moves it.
supply_date string (date) or null The date of supply when it is not the document date (it then decides the VAT period where the law of the company's country says so); null: the document date.
due_date string (date) yes Due date (ISO 8601).
currency string yes ISO 4217 currency of the document; the amounts below are in it.
net_total string yes Sum of the line net amounts, in the document currency.
tax_total string yes Sum of the line VAT amounts, in the document currency.
total string yes What is owed: net plus VAT, less withholding tax.
functional_total string or null yes The total in the entity's functional currency as booked; null until posted.
credits_id string (uuid) or null yes Credit notes: id of the document this note corrects.
journal_entry_id string (uuid) or null yes Id of the journal entry created when the document was submitted (posted, or waiting for approval); null for a draft.
source_document_id string (uuid) or null yes Id of the stored original file the document was entered from.
notes string or null yes Free text kept on the document.
legal_notes array of string yes Legal notes the document carries for its tax treatment (reverse charge, exempt intra-Community supply) with their legal reference.
payment_iban string or null Bills: the account to pay if not the vendor's own IBAN.
payment_reference string or null Bills: the QR or creditor reference to quote when paying.
buyer_reference string or null The buyer's reference printed on the invoice (XRechnung BT-10).
order_reference string or null The buyer's purchase order number (EN 16931 BT-13).
open_amount string or null Posted documents: the amount not yet settled by payments or credit notes (pending ones included); 0 when paid. null before posting.
payment_blocked boolean A bill blocked for payment: its variance against its purchase order waits for a second person's approval (GET /v1/documents/{document_id}/match); proposals leave it out and payments refuse it until then. (default false)
tax_fx object or null Official VAT exchange rate for the tax point (CH: BAZG/ESTV, DE: BMF): series, rate, quotation, period or fixing date, and status 'final' or 'provisional' (not published yet; the VAT return looks it up).
tax_fx_rate string or null The official VAT exchange rate to the functional currency, when the document is in a foreign currency.
tax_fx_net_total string or null Net total at the official VAT exchange rate.
tax_fx_tax_total string or null VAT total at the official VAT exchange rate.
cash_discount_percent string or null Cash discount (Skonto) terms: percent off the gross total.
cash_discount_date string (date) or null The last day the cash discount may be taken.
cash_discount_amount string or null The cash discount on the gross total.
discount_percent string or null The document discount in percent; null when it was given as an amount, or there is none.
discount_amount string The document discount, the sum of the lines' shares; 0 for none. net_total is after it. (default "0.00")
provenance object yes How the document came about: its origin, reference-data versions used for the tax determination and warnings (e.g. printed VAT that differs from the determined VAT).
created_by object yes The actor (type, id) that created the document.
created_at string (date-time) or null When the document was created (UTC).
version integer Raised on every change; the ETag names it. (default 1)
missing_content array of ContentGap Sales invoices and credit notes: the legally required content that the entity's or the customer's record still lacks (empty when complete). Printing, sending and e-invoicing refuse the document with 409 until it is empty; on a draft or a preview it is a warning.
source_file SourceFileOut or null The stored original file, if any; the bytes are GET /v1/documents/{id}/file.
ic IcBlock or null Intercompany: the link of a document whose customer or vendor is another entity of the organization (origin or mirror, its status, the document at the other end); null for any other document.
lines array of DocumentLineOut The document's lines with the tax determined for each.
delivery_notes array of DocumentLink Sales invoices: the delivery notes its lines invoice.

EInvoiceResult

Field Type Required Description
status "draft" | "invalid" | "needs_review" | "pending_approval" | "posted" yes draft, pending_approval or posted (the bill was created), invalid (a fatal rule is broken; stored but not booked) or needs_review (unknown vendor with create_vendor=false, or a negative total).
valid boolean yes true when no fatal rule is broken.
label string yes Short name of what was read.
profile string yes The profile or specification the invoice declares.
syntax string yes CII or UBL.
container string yes xml or pdf.
violations array of Violation yes The rules the invoice breaks, by rule id.
warnings array of string yes Things to review on the bill, e.g. VAT that differs from the determined VAT or a new draft vendor.
document_id string (uuid) yes Id of the stored original file.
sha256 string yes SHA-256 of the file, hex.
bill_id string (uuid) or null Id of the draft bill or vendor credit note that was created.
bill_kind string or null purchase_bill or purchase_credit_note.
approval_id string (uuid) or null Id of the approval request when the bill waits for approval.
vendor EInvoiceVendor or null The vendor the bill was assigned to.
total string or null Gross total of the bill.
currency string or null ISO 4217 currency of the bill.
invoice Invoice yes The invoice in EN 16931 terms.

EInvoiceVendor

Field Type Required Description
code string yes Vendor code.
name string yes Vendor name.
matched_by "created" | "given" | "iban" | "vat_number" yes vat_number, iban, created (a new draft vendor) or given.
status string yes active or draft.

ErrorBody

What went wrong. Some errors carry more fields, e.g. field or header.

Field Type Required Description
code string yes Machine-readable: unauthorized, forbidden, missing_right (scope, credential: key or session; the right the caller lacks), four_eyes (action; nobody_else: true when no other person may approve yet, so one is invited), policy_denied, approver_declaration_missing, approver_same_person and approver_acknowledgement_needed (ADR-0098), review_wait (release_at: the AI reviewer holds the step until then), passkey_step_up (within_minutes: touch your passkey again, POST /v1/auth/step-up), passkey_required, passkey_refused (reason), passkey_expired, passkey_none, passkey_elsewhere (made at an address the site no longer uses), passkey_exists, passkey_last, passkey_reset_yourself and passkey_reset_elsewhere (email) (ADR-0101), not_found, conflict, integrity_violation, precondition_failed, suspended (the organization is read-only), framework_unverified and framework_not_implemented (framework: no group run under it), validation_failed, invalid, agents_unavailable, agent_failed, model_busy and model_unavailable (no language model answered in time: try again in a minute), refdata_error, mail_failed, rate_limited, not_issued, store_unavailable, export_in_progress, export_not_ready, no_signed_link, exports_unavailable, party_not_active (with party, party_id, party_name, party_kind and party_status), party_blocked and party_inactive (the same details), period_closed (period; a document also document_date; an e-invoice imported with submit also einvoice: true), fx_rate_missing (base, quote, date: no exchange rate for the day or month yet), entry_not_draft and document_not_draft (status), draft_not_editable (status), draft_from_process (source), too_many_decimals (amount, currency), fiscal_year_missing (year, entity), audit_file_country (format, country), siren_missing (entity), audit_period_range (from_period, to_period), audit_periods_open (periods), file_too_large (max_mb), allocations_do_not_add_up (amount, allocated), not_a_bank_account (account), document_not_settleable and document_allocated_twice (document), document_amount_differs (document, amount, document_amount), more_than_open (document, amount, open_amount), receipt_in_future (date, today), credit_other_party, credit_not_posted (status), credit_more_than_invoiced (total, document, left), credit_settlement_waiting (document), more_than_left_to_apply (source, amount, left), nothing_to_apply (source), application_before_document (date, earliest), application_before_settlement (date, latest), product_inactive (product), product_unpriced (product, currency, date), document_date_required, recurring_line_incomplete (line), negative_total (total), discount_more_than_line (line, discount, amount), discount_more_than_document (discount, amount), discount_negative_line (line), credit_line_unknown (document, line), credit_discount_required (document, line, discount), vendor_invoice_twice (external_number, document), vendor_invoice_twice_supplier (external_number, document, party, party_name), vat_recovery_not_applicable, order_status (document, status), not_an_expense_account (account), before_order_date (order_date), order_in_use (document), received_more_than_ordered (line, received, ordered), received_beyond_closed (line, received, ordered, closed), order_nothing_to_close (document), bill_without_order, bill_not_blocked, variance_reason_missing, statement_currency_differs (statement_currency, account, currency), statement_imported (statement), bank_line_done (status), ignore_reason_missing, bank_line_payment_not_booked (payment), bank_line_amount_differs (payment, amount, booked, currency), bank_line_parties_differ, bank_line_to_itself, control_account (account), no_period_for_date (date), no_adjustment_period (period, date), manual_line_tags (line), account_inactive (account), control_account_manual (account, name), control_account_on_document, contra_account_on_document, tax_account_on_document and document_account_type (account, name, use: sales, purchase or acquisition; the last also type), nothing_to_book, due_before_document (date, document_date), credit_before_document and payment_before_document (date, document, document_date), payment_in_future and receipt_date_in_future (date, today), account_currency_only (account, currency), entry_does_not_balance (debit, credit), entry_off_in_currency (currency, difference, limit: the largest FX rounding difference booked), fx_rate_implausible (line, currency, rate, reference, date, tolerance: a typed rate too far from the reference rate; confirm it to use it anyway), reversal_before_entry and reversal_not_after_entry (date, entry_date), entry_not_posted and approval_decided (status), entry_already_reversed and reversal_waits (entry), entry_not_pending, posting_limit_admin_only, posting_limit_invalid, posting_limit_change_waiting (approval_id), posting_limit_changed, approval_policy_change_waiting (approval_id), approval_policy_changed, approval_policy_admin_only, approval_withdraw_own_only, approval_withdraw_admin_only, approval_not_withdrawable, payment_already_reversed, payment_entry_not_reversible, payment_not_posted, payment_reversal_stale and payment_matched_to_bank_line (payment), payment_on_account_applied (payment, applications), payment_on_account_refunded (payment), refund_not_on_account (payment), bank_line_not_matched (status), bank_line_bare, bank_line_not_returnable and bank_line_return_undo (payment), status_report_not_xml, status_report_wrong_format, status_report_unknown_file (file), status_report_unknown_payment (payment, file), reversal_reason_missing, reversal_reason_too_long (max), asset_accounts_pair, asset_accounts_differ (cost_account, accumulated_account), asset_cost_account_contra (cost_account), asset_accumulated_account_cost (accumulated_account), asset_accumulated_account_not_contra (accumulated_account, choices), asset_exists and asset_code_ambiguous (asset), source_not_a_bill, credit_account_missing, depreciation_after_year (asset, year), asset_status and acquisition_not_posted (asset, status), disposal_waits, acquisition_waits and depreciation_waits (asset), proceeds_account_missing (proceeds), asset_change_waits (asset, kind, date), sale_invoice_not_posted (status), sale_invoice_waits, asset_change_before_service (asset, in_service), asset_change_in_future (date, today), depreciation_booked_later (asset, entry), asset_changed_later (asset, date), asset_life_over (asset), retirement_too_large (asset, cost), no_impairment and impairment_too_large (asset, carrying), revaluation_not_allowed and revaluation_not_built (law), revaluation_no_change (asset, carrying), impairment_reversal_not_allowed (law), no_impairment_to_reverse (asset), no_reversal (asset, carrying), impairment_reversal_too_large (asset, most), proceeds_account_not_cash (account), depreciation_ran (period), salvage_not_below_cost (salvage, cost), in_service_before_acquisition (in_service_date, acquisition_date), disposal_before_in_service (asset, disposal_date, in_service_date), disposal_in_future (asset, disposal_date, today), acquisition_reversal_waits (asset), asset_depreciated (asset, entry), asset_value_changed (asset, kind, date), depreciation_earlier_period (period, earlier), period_not_started (period, start, today), period_already_closed and close_on_record (period), period_not_ready (period, failing), not_a_person, working_day_range (step, day), no_periods_yet (entity), unknown_close_check (check), task_retired, task_decided_by_check, task_inactive, task_already_done and task_not_done (task), account_name_invalid, account_number_invalid, account_exists (account), fiscal_year_exists (year, entity), fiscal_year_overlaps (year, period), fiscal_year_gap (year, missing, entity), reopen_reason_missing, vat_period_invalid (period), vat_period_months, vat_form_missing, recap_form_missing and annual_form_missing (country, date), vat_period_italy and vat_period_uk (period), vat_period_country (country, period), oss_eu_only, split_payment_italian_customers_only, vat_form_changed (start, end, form), box_not_adjustable and box_offset_missing (box), vat_return_blocks, vat_return_not_draft and vat_return_not_final (document, status), vat_period_locked and oss_period_locked (document, vat_return_id, start, end), net_rates_wrong_method, net_rates_missing, net_rate_unknown (series), net_rate_accounts, vat_method_swiss, tax_fx_unavailable, tax_fx_none, filing_extension_de, cash_basis_unavailable and registrations_canada (country), registration_unknown (provinces), provincial_period_unknown (provinces), quick_method_canada (country), quick_method_rate, quick_method_region (province), quick_method_wrong_method, vat_method_not_standard, vat_period_french (period), tax_fx_kept (date, basis), settlement_before_period_end (date), settlement_no_open_period, vat_ledger_changed and settlement_ledger_changed (document), vat_return_has_errors (document, count), vat_unexplained (amount, currency), tax_category_unknown (country, date, category, categories: no rate in force applies to the line's tax category), vat_filing_not_final (document, status), vat_return_submitted (document, date), vat_submitted_in_future (date, today), vat_submitted_before_period_end (date, end), vat_return_not_submitted, vat_return_paid and vat_nothing_to_pay (document), vat_filing_reason_missing, vat_payment_other_company and vat_payment_is_settlement (entry), vat_payment_not_posted (entry, status), vat_payment_before_settlement (entry, date, settlement_date), vat_payment_wrong_side (entry, account, side), vat_payment_linked (entry, document), sales_tax_not_us (entity), sales_tax_state_unknown, sales_tax_state_rate_unknown (state, date), sales_tax_registered (state), sales_tax_registration_dates, sales_tax_code_taken, sales_tax_area_member (jurisdiction, state), sales_tax_area_other_state (area, customer), sales_tax_exemption_incomplete, sales_tax_exemption_dates (start, end), sales_tax_exemption_states (states), sales_tax_frequency_filed (state), sales_tax_credit_line_missing, sales_tax_use_tax_charged, sales_tax_use_tax_sales, sales_tax_use_tax_not_registered (entity, state), sales_tax_return_approved, sales_tax_return_not_approved, sales_tax_customer_state_missing (customer, customer_id), sales_tax_rate_missing (jurisdiction, date), sales_tax_period_frequency (frequency, period), sales_tax_return_filed (state, period, date), sales_tax_filed_in_future (date, today), sales_tax_filed_before_period_end (date, end), sales_tax_reason_missing, sales_tax_return_withdrawn, sales_tax_return_paid, sales_tax_payment_entry and sales_tax_payment_linked (entry), sales_tax_payment_in_period (entry, date), sales_tax_payment_wrong_side (entry, account), year_not_closed, year_close_not_pending and year_close_not_closed (year, status), year_locked and year_changed (fiscal_year), before_catch_up (catch_up), destination_account_missing, destination_account_type and destination_account_unusable (account), no_swiss_withholding_tax (entity), notification_swiss_only (shareholder, country), loss_destination, result_account_destination, nothing_to_appropriate, catch_up_year_closed and year_appropriated (year), reversal_not_reversed, appropriation_reversed, group_dividend_not_reversed, year_reopened, nothing_to_carry_forward, nothing_to_catch_up (date), year_close_cancelled, year_close_blocked, catch_up_period_not_open (period), role_missing, appropriation_exceeds_remainder (remainder), chart_unknown and chart_lacks_roles (chart), entity_currency_needed (country), entity_exists and chart_template_unknown (entity), account_name_iban, account_codes_in_use (codes, roles), fiscal_year_length (year), period_reopen_refused (period), product_ssp_missing (product, currency, date), product_ssp_over_time (product, period), service_period_outside (line, start, end), obligation_ssp_missing, ssp_too_small and obligation_incomplete (line), price_decimals (currency), contract_not_draft, contract_not_active, not_awaiting_approval, not_cancellable, subscription_not_draft and subscription_not_active (document, status), customer_not_active (party, status), terms_changed, obligation_over_time, obligation_done (line, status), satisfied_in_future (date), before_contract_start (date, start), adjustment_period_no_revenue, presentation_role_missing (entity, role, contract), presentation_reversal_no_period (date), recognition_period_not_open (period, status), recognition_pending, recognition_earlier_period (period), recurring_name_missing, field_not_clearable (field), end_before_start (start, end), recurring_ended, recurring_schedule_fixed, recurring_pause_refused, recurring_run_refused, recurring_not_activatable and recurring_not_pending (status), recurring_no_next_due, recurring_journal_ended, recurring_journal_schedule_fixed, recurring_journal_human_only, recurring_journal_not_activatable, recurring_journal_pause_refused and recurring_journal_run_refused (all three status), billing_through_future (through, today), subscription_no_contract (document), billing_period_misaligned (document, date), opportunity_not_found (entity), opportunity_not_won (opportunity, party), subscription_line_not_recurring, subscription_line_goods and price_period_unsupported (line, product), subscription_ssp_missing and list_price_missing (line, product, currency, date), subscription_currency_unpriced (line, product, currency, date, priced: the currencies it has a price in, joined such as CHF, EUR), subscription_bills_nothing, renewal_automatic, renewal_approved and renewal_not_approved (document), subscription_start_closed (date, period, status), subscription_ending (document, date), subscription_invoices_unposted (document, count), subscription_credit_not_posted (document, status), amendment_pending and subscription_end_bills_nothing (document), end_outside_term (date, start, end), end_date_missing, change_incomplete, change_outside_term (document, date, start, end), change_changes_nothing and change_bills_nothing (document), subscription_changing (document, date), contract_recognised_after_end (document, date), contract_recognition_gap, contract_recognised_more and contract_nothing_left (document), contract_promise_open (document, line), contract_worth_nothing, contract_active_not_cancelled, contract_change_pending, contract_change_nothing, contract_credit_not_possible and contract_end_not_earlier (document; the last also end), contract_change_outside_term (document, date, start, end), contract_change_recognised (document, date, first), contract_of_subscription (document, subscription), contract_documents_unposted (document, count), contract_credit_not_posted (document, status), ic_dividend_to_itself, ic_no_relationship (entity, partner), ic_party_code_taken (entity, party), ic_loan_same_entity, ic_loan_reference_exists (reference), ic_loan_relationship_inactive, ic_link_not_retryable, ic_link_not_drafted, ic_mirror_not_draft, ic_relationship_not_suspendable and ic_relationship_not_suspended (status), ic_loan_not_active (loan, status), ic_loan_accrued_through and ic_interest_accrued_already (loan, date), ic_drawdown_date and ic_no_interest_due (start, end), ic_facility_exceeded, ic_repay_more_than_principal and ic_settle_more_than_open (loan, amount, currency, limit), ic_loan_missing, ic_no_interest_accrued (loan), ic_dividend_missing, ic_dividend_not_accepted (dividend, status), ic_vat_group_country (vat_group, country), ic_relationship_same_entity, ic_relationship_exists (entity, partner, status), ic_suspend_reason_missing, ic_refresh_alone, ic_relationship_pending, ic_status_alone, ic_request_waiting, ic_nothing_changes, ic_nothing_sent, ic_goods_not_supported (line), ic_terms_changed, ic_mirror_impossible, plan_name_taken (name), plan_year_no_periods (year, entity), copy_from_other_plan, plan_version_not_draft and plan_version_not_submitted (version, status), plan_line_twice (line, account, period), plan_account_unknown (line, account), plan_account_type (line, account), plan_period_unknown (line, period), plan_period_other_year (line, year), plan_version_empty, plan_version_older (version, current), version_changed (version), all_periods_closed, budget_does_not_roll, compare_same_version, compare_other_entity, product_line_not_sales, obligation_line_not_sales, document_number_ambiguous (document), obligation_other_contract (document, line), contract_not_billable (document, status), obligation_group_party, obligation_goods, obligation_account_fixed and contract_account_manual (account), credit_names_obligation (document, line), qr_iban_needs_reference, payment_reference_invalid (reference), qr_reference_needs_qr_iban, qr_iban_qr_only, activity_not_task, crm_task_done (task), opportunity_won_final, opportunity_final and opportunity_lost_reopen (document), opportunity_probability_closed, opportunity_forecast_closed and opportunity_stage_same (document, stage), quota_twice (month), prospect_name_needed, close_day_future (date), close_day_before_created (document, date, created), opportunity_prospect_only (document, prospect), contact_not_of_party (party), contact_erased, contact_erase_agent, contact_needs_customer, autopilot_pass_running, autopilot_needs_a_person, autopilot_question_closed, support_queue_exists and support_queue_inactive (queue), support_queue_unknown, support_address_taken (address, queue), support_case_closed, support_status_same and support_no_recipient (case), support_not_case_address (case, addresses), support_not_draft (case), support_status_agent, support_send_agent, support_contact_without_customer, support_inbox_unknown (addresses), support_assignee_invalid, party_parent_self, merge_agent, merge_needs_every_record, merge_same, party_merged, party_merge_has_records (party, records), party_merge_loop, contact_merge_other_party, lead_converted, lead_erased and lead_disqualified (document), lead_disqualified_reason, lead_erase_agent, email_invalid, lead_form_agent, lead_form_origin_invalid, lead_form_unknown, lead_form_suspended, lead_form_origin, lead_form_page_expired, lead_form_email, lead_form_name and lead_form_too_long (field), lead_customer, custom_fields_full (record, limit), custom_field_exists and custom_field_unknown (record, key), custom_field_not_choice, custom_field_choice_in_use (field, choices), custom_field_retired (field), custom_field_value (field, expected), user_not_in_org, owner_outside_view, vendor_no_owner, sales_team_exists (name), not_team_member, hand_over_needs_all_records, owner_disabled, user_exists and user_google_password (email), tester_needs_masked_copy, unknown_scopes (scopes), own_admin_scope, disable_yourself, access_until_missing, access_until_past, access_until_too_far, own_access_until, preferences_web_only, user_disabled_password, user_workspace_password (domain), tax_book_needs_class, asset_class_other_regime (asset_class, book, regime), asset_in_book (asset, book), deferred_tax_ran and depreciation_before_deferred_tax (period), deferred_tax_order (period, earlier), book_no_deferred_tax, book_no_deferred_tax_accounts, book_code_reserved, book_exists and deferred_tax_book_exists (book), no_deferred_tax_book (entity), deferred_tax_account_missing (entity, role), deferred_tax_needs_rate, group_date_month_end (date), goodwill_policy_not_allowed (framework, goodwill_policy), goodwill_years_not_used (framework, goodwill_policy), goodwill_years_too_long (framework, years, max_years), reporting_currency_parent (currency, entity, parent_currency), group_exists (group), parent_not_member, consolidated_before_acquired (date, acquired), ownership_decimals (places), acquisition_cost_pair, member_version_before (entity, date, in_force), member_version_waiting (entity), member_version_closed (entity, version, as_of), cash_discount_outside_vat, cash_discount_terms_pair, cash_discount_beyond_terms (days, terms), cash_discount_needs_days, cash_discount_after_due (date, due), execution_after_cash_discount (payment, document, cash_discount_date, execution_date), no_cash_discount_terms (document), cash_discount_period_ended (document, date), cash_discount_over_percent (document, amount, currency, percent, settled, limit), cash_discount_over_left (document, amount, currency, limit), qr_bill_sales_only, qr_bill_not_posted (status), qr_bill_currency (currency), qr_bill_settled (document), qr_bill_no_account (currency), execution_date_past, payment_listed_twice, payment_already_sent (document), payment_released_meanwhile, iban_invalid, bank_account_listed_twice, not_qr_iban and iban_registered_elsewhere (iban), party_already_active, party_bank_change_waiting, party_activation_waiting, party_details_change_waiting, group_party_details, party_status_change_waiting and party_has_open_items (party, open), party_status_unchanged (party, status), party_status_move (party, status, new_status), party_customer_and_vendor, customer_exists and vendor_exists (party), other_company (404: entity, party, kind; a customer or vendor asked for by its id in a company it is not of), no_vat_number, not_bank_account and bank_details_change_waiting (account), iban_is_qr_iban, invoice_not_posted_output and document_not_rejected (status), opening_balance_document (document), ic_mirror_void, product_needs_price_period and product_one_off_period (product), product_price_exists (product, currency, date), product_exists (product, entity), product_ssp_exists (product, currency, latest), price_list_exists (price_list, entity), price_list_price_exists (price_list, product, min_quantity, date), price_list_currency (price_list, currency), price_list_inactive (price_list), price_list_assigned_meanwhile (party, currency), customer_no_email (party), not_email_address (addresses), not_customer_address (party, addresses), handover_not_posted (status), handover_before_document (document, date), handover_in_future, handover_too_old (date, earliest), no_reminder_due (party, currency), reminder_not_due (count), reminder_currency_needed (party, currencies), reminder_covered_by_credits (party, currency), reminder_in_future and reminder_backdated (date, today), reminder_out_of_date (date, days), reminder_withdrawn, reminder_handed_over, reminder_settings_levels, dunning_block_not_invoice, dunning_block_exists and dunning_block_missing (document), sales_number_ambiguous (document), sales_status (document, status), order_valid_until, quote_valid_before_date (date, valid_until), sales_field_required (field), accepted_in_future, accepted_before_quote (document, date), quote_expired (document, valid_until), order_invoiced (document), opportunity_other_customer (opportunity, party), sales_document_deal_customer (document), credit_limit_exceeded (customer, owed, credit_limit, currency), credit_limit_customers_only, withholding_rate_without_code, withholding_vendors_only, withholding_rate_invalid, withholding_code_unknown (withholding_code, country), withholding_rate_mismatch (withholding_code, rate), order_nothing_left and invoice_before_order (document; the last also date), order_not_invoiced (document), order_line_invalid (line), order_line_over_invoiced (document, line, quantity, left), order_line_not_invoice, order_other_customer (document), order_not_invoiceable (document, status), period_reversed (start, end), copy_of_test_copy, test_copy_limit (count), test_copy_same_name, test_copy_removing, setup_in_test_copy, setup_done, company_in_test_copy, setup_not_done, currency_code_invalid (currency), currency_not_ecb (currency), functional_currency_not_ecb (currency), currency_missing, matrix_too_many_currencies (count), amount_too_large (count), same_currency_pair, history_too_long (count), opening_item_group_party (party), opening_item_after_opening (date, opening), opening_item_own_number (document), document_number_exists (document), vendor_document_booked (party, document), role_held_elsewhere (role, holder, account), control_role_postings (role, account, count), account_nothing_changes, account_role_deactivate (account, role), account_in_use (account), account_change_waiting (account), country_not_served (country), standard_not_offered (country, standard), books_currency_not_offered (country, currency, currencies), subdivision_missing, subdivision_not_asked (country), tax_period_not_offered (country), tax_number_not_asked (country), statement_iban_elsewhere (iban, account), statement_iban_differs (iban, account, registered), statement_iban_unknown (iban), iban_in_several_names (iban, accounts), proposal_discount_account (entity), not_vendor_bill (document), bill_listed_twice (document), no_bank_account_in_currency (currency), key_for_person_or_agent, agent_key_scopes, org_name_missing, file_damaged, file_empty, file_type_unsupported, file_already_attached, vendor_unreadable, bill_already_recorded (party, invoice), bill_file_type, file_not_its_type (kind), file_already_captured, einvoice_no_issue_date, einvoice_unreadable, einvoice_seller_unknown, not_sales_document, zugferd_german_only, xrechnung_german_only (entity), fx_next_year_missing, fx_revaluation_done (period), fx_revaluation_pending (period), write_off_not_invoice (document), write_off_nothing_open (document), write_off_in_future (date, today), write_off_before_settlement (date, earliest), write_off_keep_cash_basis (entity), write_off_not_posted (document, status), write_off_follow_up_waiting (write_off), recovery_more_than_written_off (amount, left, currency), write_off_vat_corrected (write_off), write_off_all_recovered (write_off), follow_up_in_future (date, today), follow_up_before_write_off (date, earliest), allowance_done (period), allowance_buckets, doubtful_not_invoice (document), fx_regular_period_only, sample_data_test_only, sample_data_period_closed (date, entity), statement_already_imported, bank_line_not_ignored (status), statement_in_future (date), reconciliation_done (account, date, by), reconciliation_reset_already (account, date), reconciliation_later (account, date, later), bank_posting_before_line (date, booking_date), reconciliation_in_future (date), statement_balance_missing (account, date), statement_balance_differs (statement, balance, currency), reconciliation_unexplained (amount, currency), bill_not_matchable (status), variance_not_pending, receipt_line_invalid (line), order_number_ambiguous (document), task_field_required, report_line_unknown (line), report_line_type (line, line_type, account_type), role_unknown (role), role_account_type (role, account_type), party_field_required, party_subdivision_mismatch (subdivision, country, postal_code), party_currency_without_rates (currency, functional), party_own_bank_account (iban, kind), refresh_schedule_unknown, platform_key_scopes, platform_key_name, platform_key_days, model_named_twice, user_already_member (email, status), template_needs_country (entity), granularity_unknown, range_too_long (count), compare_unknown, breakdown_unknown, metric_unknown (metric), split_unknown, metric_not_splittable, account_filter_needs_entity, import_needs_date, import_has_problems (count), mapping_invalid, deletion_too_late, subscription_invoice_locked (period, subscription), line_amount_too_large (amount), rate_not_positive (rate), role_account_missing (entity, role), already_in_org, connector_unknown_app, connector_redirect_not_allowed (address), connector_request_invalid, connector_needs_session, role_or_scopes, vat_number_invalid (field, value, country, example), idempotency_key_reused, csv_mapping_invalid, manual_entries_only, test_copy_no_email, test_copy_no_einvoice, test_copy_no_qr_bill, test_copy_no_payment_file, xls_not_supported, file_not_table, csv_unreadable, xlsx_invalid, workbook_too_large, workbook_no_sheet, table_empty, too_many_columns (count), column_unnamed (column), column_twice (columns), row_too_many_values (line, count), too_many_rows (count), statement_date_unreadable (value), lease_exists (lease), lease_term_frequency (term, months), lease_not_short_term (term), lease_account_type (account, role, account_type), lease_accounts_differ (account), lease_account_currency (account, currency), lease_not_draft and lease_not_active (lease, status), lease_credit_account_missing, lease_change_date, lease_change_booked, lease_end_date, lease_end_unbooked and lease_end_booked_after (lease, date), lease_change_later (lease), lease_change_nothing, lease_change_too_large (amount, currency), lease_nothing_due (period), lease_regular_period_only, lease_change_pending (lease), lease_local_framework and lease_operating_ifrs (entity), statement_amount_unreadable (value), statement_amount_range (value), statement_entry_no_date, statement_not_xml (format), statement_wrong_format (format), statement_no_report (format), csv_line_unreadable (line: an amount that cannot be read), csv_line_date_invalid (line, value, format: a day that does not exist, or one written otherwise), csv_line_no_currency (line), csv_no_transactions, csv_column_missing (column), dimension_unknown (line, dimension), dimension_value_unknown (line, dimension, value, date), dimension_required (line, account, dimension), dimension_exists (dimension), dimension_limit (max), dimension_value_exists (dimension, value), mt940_balance_unreadable (value), mt940_line_unreadable (line), mt940_balance_mismatch (statement), tax_category_needed (country, date, choices: several rates or kinds of exemption of the rate type match; the line's tax_category chooses one), tax_rate_type_missing (rate_type, country, date). Lists of what stops an action (a payment's problems, a vendor's payment_blockers) carry the same codes and details: party_no_iban (party), iban_invalid (iban), iban_not_group_account and iban_not_confirmed (iban, party), party_not_activated, party_blocked, party_inactive, party_block_waiting and party_bank_change_waiting (party), bill_payment_blocked (bill, order), bills_different_accounts, bills_other_currency (currency, bill_currency), bills_several_references, qr_iban_needs_reference, payment_account_no_iban (account), debit_account_not_swiss, payment_not_outgoing, payment_already_executed, payment_recorded_paid (recorded as already executed by the bank), payment_reversed, payment_waiting_approval, payment_not_approved (status), payment_no_number, payment_reference_invalid (reference), payment_currency_swiss (currency), qr_reference_needs_qr_iban, payment_amount_too_large (amount), payment_cross_border (currency, country); releasing such a payment is refused with the first of them. group_opening_run_missing (as_of: the group cash flow needs the run at that date). SEPA direct debits (ADR-0076): creditor_id_invalid (creditor_id), mandate_iban_not_sepa (iban), mandate_reference_invalid and mandate_reference_taken (reference), mandate_signed_future, mandate_not_changeable (mandate, status), mandate_not_active (mandate); what stops a collection (a proposal's skipped invoices, a collection's problems, a refusal): mandate_pending_approval, mandate_rejected, mandate_revoked, mandate_expired, mandate_used and mandate_change_waiting (mandate), mandate_returned and mandate_refused (mandate, reason), direct_debit_no_mandate, direct_debit_prenotification (notified, days, earliest), direct_debit_before_due_date (due), direct_debit_no_transit_account (role), direct_debit_discount_account (role, due), direct_debit_discount_not_taken (discount, due), direct_debit_discount_period_ended (document, date), direct_debit_account_changed (mandate), direct_debit_no_creditor_id, direct_debit_account_not_eur (account), direct_debit_not_eur_invoice (document), direct_debit_debtor_address (party), invoice_listed_twice, not_a_direct_debit (document). Stock: no_warehouse (entity), warehouse_exists (warehouse, entity), warehouse_inactive, warehouse_is_default and warehouse_holds_stock (warehouse), not_a_stock_item, stock_item_exists, stock_item_not_goods and stock_item_in_stock (product), not_an_inventory_account (account), entity_needed, not_enough_stock (item, warehouse, on_hand, wanted, unit, date), unit_cost_needed, revaluation_without_stock and stock_value_short (item), stock_changed (document, item), stock_date_future (date, today), nothing_to_post, transfer_same_warehouse (warehouse), count_in_future (date, today), count_open_exists (warehouse, document), nothing_to_count, count_item_unknown (item, document), count_not_open (document, status), count_waits (document), count_not_counted (document, count), count_moved_since (document, date), count_pending_postings (document, posting), count_revalued_since (item, date), stock_backdated (item, date), stock_counted_since (document, date), agent_zero_value. Delivery notes: delivery_note_unknown, delivery_note_not_draft (document, status), delivery_order_line_mismatch (document, line), delivery_order_line_over_shipped (document, line, quantity, left), delivery_order_line_on_draft_note (document, line, quantity, left, reserved: a draft note reserves the rest), delivery_order_line_shipped_on_notes (the same and notes: posted notes shipped the rest, invoice their lines), delivery_note_not_printable (status), delivery_note_not_invoiceable (document, status), delivery_nothing_left (document), delivery_no_price (product, currency), invoice_before_delivery (document, date), delivery_line_not_invoice, delivery_line_unknown, delivery_line_other_product (document, line), delivery_line_over_invoiced (document, line, quantity, left), goods_returned_not_stock, goods_returned_needs_line, goods_returned_other_line (document, line), goods_returned_beyond_shipped (document, line, quantity, left), goods_returned_no_cost (document, line), warehouse_not_needed, order_not_shippable (document, status), order_delivered (document), stock_shipment_held (document), stock_not_kept (a line names stock where no module keeps it). Capacity: not_a_capacity_item, capacity_item_exists and capacity_item_not_service (product), capacity_full (product, date, free, wanted), capacity_booked (product, date, booked), booking_cancelled (document), days_reversed, days_span_too_long, booking_held (document, held_by: a module keeps it, such as a hotel stay's rooms), booking_not_held. Hospitality: not_a_room_type (product), room_rate_overlaps (product, season, first_night, last_night), room_no_price (product, currency, date), room_too_many_guests (product, most), stay_days, stay_status (document, status), stay_not_arrived (document, date), stay_departure (document, arrival, latest), stay_invoiced (document). Linked mailboxes: mailbox_person_only, mailbox_needs_draft, mailbox_test_copy, mailbox_not_available, mailbox_nothing_allowed, mailbox_not_linked, mailbox_not_readable, google_link_refused, google_unavailable. HubSpot: hubspot_not_available, hubspot_oauth_not_available, hubspot_test_copy, hubspot_other_account, hubspot_token_refused, hubspot_state_invalid, hubspot_refused, hubspot_unavailable, hubspot_not_readable. Recurring revenue: month_in_future (month, today). Quotes online: agent_records_no_answer, agent_hands_over_nothing, link_of_quote_only, quote_being_revised, quote_not_open_online (document, state, revision), signer_email_invalid. Notifications and webhooks: notifications_person_only, webhook_person_only, webhook_url_refused (reason), webhook_limit (limit), webhook_endpoint_disabled. Goods received: stock_item_line_goods (line, item), return_before_receipt_posted (line, quantity, posted), return_while_write_off_waits (the same), return_after_write_off (the same and written_off), return_beyond_received (the same and received), grni_nothing_open, grni_line_nothing_open (line), grni_write_off_pending (order), grni_write_off_future (date, today), grni_write_off_before_receipt (line, date, received), grni_write_off_control_account (account), grni_write_off_account_missing (line). Branding: brand_colour (not a colour like #1d4ed8), brand_colour_contrast and brand_accent_contrast (too light to read on white), brand_logo_empty, brand_logo_too_large, brand_logo_svg, brand_logo_invalid, brand_no_logo. Saved reports: saved_report_invalid (a field, filter or grouping its source does not have), saved_report_day (not a day), saved_report_not_found, saved_report_not_yours (only its owner changes it), saved_report_no_person (a key the system issued keeps none), saved_report_limit, saved_report_recipient_not_shared, saved_report_sent_recently. Rolling forecast: no_rolling_forecast (not made yet; the next scheduled run makes it). Roles: area_closed (area: the caller's role does not open that area of the app), unknown_area (areas), role_not_found (role), role_title_taken (title), role_template (role: no ready-made role), role_ready_made (role: a ready-made role is not changed or removed), role_in_use (role, people), roles_person_only (for a person signed in, not a key), suggestion_gone (suggestion). Expenses: expense_not_found, expense_not_yours (expense), expense_not_draft and expense_not_held (expense, status), expense_incomplete (expense, field), expense_total_needed, expense_account_unknown (account), expense_card_needed, expense_vat_rate (rate, country), receipt_already_claimed (expense, expense_id), receipt_is_einvoice, not_a_receipt (document), person_not_found (person), card_exists and card_not_yours (card), card_not_found, card_line_not_found, card_line_matched, card_line_refund, statement_column_missing (column), statement_date and statement_amount (line). A precise code keeps the HTTP status of its kind (a closed period is a 409 like conflict). Company sign-in: company_sign_in_unavailable (not offered on this server), company_sign_in_issuer (field: not an Okta domain, an Entra tenant or an https issuer), company_sign_in_domain (field, domain), company_sign_in_unreachable (the provider did not answer for the issuer), company_sign_in_untried (sign in through it once before making it the only way in), company_sign_in_not_found, company_sign_in_none (no organization of the address signs in with a company account), company_sign_in_several (use the organization's own link), company_sign_in_state (too old, or not started here), company_sign_in_refused (the ID token does not hold), company_sign_in_email (no verified address of a covered domain). Shopify: shopify_not_available, shopify_test_copy, shopify_other_shop, shopify_app_refused, shopify_consent_not_available, shopify_state_invalid, shopify_refused, shopify_unavailable, shopify_not_readable, shopify_order_too_long (order), shopify_order_unmade, shopify_invoice_differs (document), shopify_cost_missing (products), shopify_payout_unexplained (payout), shopify_refund_unmatched, shopify_refund_not_invoiced and shopify_refund_invoices (order), shopify_refund_differs (document). Addresses: address_not_found (no suggestions on this server, or Google does not give the address chosen: type it in), rate_limited (retry_after_seconds: the organization's addresses of the day are used up).
message string yes A sentence for a person; do not parse it.
hint string For an agent: the API call that resolves the refusal, e.g. POST /v1/entities/CH01/parties/V-ACME/activate?kind=vendor. Absent when there is none.

ErrorEnvelope

The body of every error the ERP raises on purpose.

Field Type Required Description
error ErrorBody yes

ExecutionDate

A payment's requested execution date and the business day it is sent for.

Field Type Required Description
payment string yes Payment number.
currency string yes ISO 4217 currency of the payment.
requested string (date) yes The date asked for.
execution_date string (date) yes The business day the payment is sent for.
adjusted boolean yes true when the requested date was moved to a business day.
calendars array of string yes Clearing calendars used, e.g. ch.six.sic.
convention string yes Business day convention applied (following).
dataset_version string or null Version of the calendar data.

ExportInfo

Field Type Required Description
id string (uuid) yes Id of the payment export.
message_id string yes Message id of the pain.001 file.
created_at string (date-time) yes When it was released (UTC).
created_by object yes The actor that released it.

Field Type Required Description
url string yes A link that downloads the package without credentials until expires_at: treat it like a password.
expires_at string (date-time) yes When the link stops working (UTC).
file_name string yes Name of the ZIP file.
size_bytes integer yes Size of the ZIP file in bytes.
sha256 string yes SHA-256 of the ZIP file; compare it after the download.

ExportOut

An export: the request, how far it is, and what was handed over once it has succeeded.

Field Type Required Description
id string (uuid) yes Id of the export.
org_id string (uuid) yes The organization the export is of.
status "expired" | "failed" | "queued" | "running" | "succeeded" yes queued (waiting for the export job), running, succeeded (the package can be downloaded until expires_at), failed (see error), or expired (it succeeded, but the download period has ended and the package is deleted; ask for another).
via "platform" | "tenant" yes Who asked: tenant (an administrator of the organization) or platform (the operator, for example at the end of the contract).
language "de" | "en" | "fr" | "it" | "sv" yes The language of the package's README.
note string or null yes Why the export was made; null if not said.
requested_by object yes Who asked, as an actor object (type, id, name).
requested_at string (date-time) yes When it was asked for (UTC).
started_at string (date-time) or null yes When the export job took it; null while queued.
finished_at string (date-time) or null yes When it succeeded or failed; null before.
stage string or null yes What the job is doing now: tables, documents, reports, integrity or finish; null before it starts.
progress object yes How far each stage is (counts of tables, files and reports done).
error string or null yes Why it failed, in a sentence without internals; null otherwise.
cutoff string (date-time) or null yes The moment of the database snapshot the package was made from: everything posted before it is in the package, nothing after.
file_name string or null yes Name of the ZIP file; null until it succeeded.
size_bytes integer or null yes Size of the ZIP file in bytes.
sha256 string or null yes SHA-256 of the ZIP file as 64 hexadecimal characters. It is also recorded in the platform's append-only audit record, so that we can later attest that this is what we handed over. Compare it with the hash of the file you downloaded.
manifest_sha256 string or null yes SHA-256 of manifest.sha256 inside the package, which lists the hash of every other file.
file_count integer or null yes Number of files in the package.
row_count integer or null yes Number of table rows in the package.
complete boolean or null yes True when every table has all its rows and every stored file was read, checked against its SHA-256 and included; false when some file could not be (they are listed in integrity/document-problems.csv in the package).
statement object or null yes The hand-over statement: the organization, the package's hashes, sizes and counts, the hash-chain result per entity, and the id of the record in the platform's audit table. Keep it with the archive.
expires_at string (date-time) or null yes Until when the package can be downloaded; null until it succeeded.

ExportRequest

Field Type Required Description
language "de" | "en" | "fr" | "it" | "sv" or null The language of the package's README: en, de, fr, it or sv. Default: the language of the person who asks, else the country of the organization's first entity (de for CH and DE, fr for FR, it for IT, sv for SE), else en.
note string or null Why the export is made, up to 500 characters; kept with the request and in the audit trail. (max length 500)

Figure

Field Type Required Description
amount string yes In the report's currency: each currency's sum converted at the report's fixing (currencies in unconverted left out).
by_currency array of CurrencyAmount yes The sums in the deals' own currencies, as recorded.

FiscalCalendar

How to divide a fiscal year into periods.

Field Type Required Description
calendar "13x4" | "4-4-5" | "4-5-4" | "5-4-4" | "monthly" monthly (default; twelve calendar months), 4-4-5, 4-5-4 or 5-4-4 (52/53 weeks in quarters of those period lengths), or 13x4 (thirteen periods of four weeks). (default "monthly")
year_end "last_weekday" | "month_end" | "nearest_weekday" or null month_end for monthly calendars; last_weekday (default) or nearest_weekday for week-based ones.
end_weekday "friday" | "monday" | "saturday" | "sunday" | "thursday" | "tuesday" | "wednesday" or null The weekday a week-based year ends on (default saturday).
adjustment_periods integer One-day closing periods on the last day of the year. (min 0; max 2; default 0)

HTTPValidationError

Field Type Required Description
detail array of ValidationError

IcBlock

What a document of a group entity's customer or vendor is in an intercompany link (ADR-0025).

Field Type Required Description
link_id string (uuid) yes Id of the link (GET /v1/ic/links/{id}).
role "mirror" | "origin" yes origin: the invoice or credit note that was posted and mirrored; mirror: the document made from it in the other entity, which that entity accepts.
status string yes The link's status: pending, waiting, drafted, accepted or rejected.
partner_entity string yes Code of the other entity, the party this document is.
other_document_id string (uuid) or null yes The document at the other end of the link; null while it was not made.

Identifier

Field Type Required Description
value string yes The identifier, e.g. a VAT number or an IBAN.
scheme string or null The identification scheme (ISO 6523 ICD or EAS code); null when none.

Invoice

An invoice (or credit note) in EN 16931 terms, whatever syntax it came in.

Field Type Required Description
syntax "CII" | "UBL" yes The XML syntax the invoice came in: UBL or CII.
specification_id string or null BT-24
business_process string or null BT-23
number string or null BT-1
issue_date string (date) or null BT-2
type_code string or null BT-3 UNTDID 1001
currency string or null BT-5
tax_currency string or null BT-6
tax_point_date string (date) or null BT-7
tax_point_code string or null BT-8
due_date string (date) or null BT-9
buyer_reference string or null BT-10 (e.g. Leitweg-ID)
project_reference string or null BT-11
contract_reference string or null BT-12
order_reference string or null BT-13
sales_order_reference string or null BT-14
receiving_advice string or null BT-15
despatch_advice string or null BT-16
tender_reference string or null BT-17
invoiced_object string or null BT-18
accounting_reference string or null BT-19
payment_terms string or null BT-20
notes array of string BT-22, prefixed #code# with a subject code (BT-21)
preceding_invoices array of PrecedingInvoice BG-3
seller Party BG-4
buyer Party BG-7
payee Party or null BG-10
tax_representative Party or null BG-11
delivery_date string (date) or null BT-72
period_start string (date) or null BT-73
period_end string (date) or null BT-74
deliver_to PostalAddress or null BG-15
payment_means array of PaymentMeans BG-16
remittance_information string or null BT-83
creditor_reference_id string or null BT-90
allowances_charges array of AllowanceCharge BG-20 / BG-21
totals Totals
vat_breakdown array of VatBreakdown BG-23
lines array of Line BG-25
attachments array of string BG-24 supporting document references (BT-122)

Line

BG-25 invoice line.

Field Type Required Description
id string or null BT-126
note string or null BT-127
quantity string or null BT-129 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
unit_code string or null BT-130 UN/ECE Rec 20
net_amount string or null BT-131 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
order_line_reference string or null BT-132
accounting_reference string or null BT-133
period_start string (date) or null BT-134
period_end string (date) or null BT-135
allowances_charges array of AllowanceCharge BG-27/28
net_price string or null BT-146 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
price_discount string or null BT-147 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
gross_price string or null BT-148 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
base_quantity string or null BT-149 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
vat_category string or null BT-151
vat_rate string or null BT-152 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
name string or null BT-153
description string or null BT-154
seller_item_id string or null BT-155
buyer_item_id string or null BT-156
standard_item_id Identifier or null BT-157
classifications array of Identifier BT-158
origin_country string or null BT-159

LoginResult

Field Type Required Description
status "choose_organization" | "passkey" | "signed_in" yes signed_in (the session cookie was set), choose_organization (the address belongs to several organizations; call again with org_id) or passkey (touch or create a passkey as passkey says, then send the answer to POST /v1/auth/passkey).
organizations array of Membership The organizations the address is a user of. (default [])
expires_at string (date-time) or null When the session ends (ISO 8601, UTC); null unless signed_in.
passkey PasskeyStep or null The passkey question; null unless passkey.

Membership

Field Type Required Description
org_id string (uuid) yes Id (uuid) of the organization; pass it as org_id to choose it.
org_name string yes Name of the organization.
test_organization boolean true for a test organization (a demo or a test copy). (default false)
user_id string (uuid) yes Id (uuid) of the user record in that organization.
copy_of string (uuid) or null For a test copy, the organization it was made from; null for any other.

Party

Seller (BG-4), buyer (BG-7), payee (BG-10) or seller tax representative (BG-11).

Field Type Required Description
name string or null BT-27 / BT-44 / BT-59 / BT-62
trading_name string or null BT-28 / BT-45 / BT-60
identifiers array of Identifier BT-29 / BT-46
legal_id Identifier or null BT-30 / BT-47 / BT-61
vat_id string or null BT-31 / BT-48 / BT-63
tax_id string or null BT-32 seller tax registration id
legal_info string or null BT-33 additional legal info
electronic_address Identifier or null BT-34 / BT-49
address PostalAddress or null BG-5 / BG-8 / BG-12
contact Contact or null BG-6 / BG-9

PasskeyStep

Field Type Required Description
setup boolean yes true: create a passkey (navigator.credentials.create); false: touch one (navigator.credentials.get).
options object yes The WebAuthn options as JSON (PublicKeyCredentialCreationOptionsJSON or PublicKeyCredentialRequestOptionsJSON), for PublicKeyCredential.parseCreationOptionsFromJSON or parseRequestOptionsFromJSON. They hold a one-time challenge valid for five minutes.

PaymentExportOut

Field Type Required Description
id string (uuid) yes Id of the payment export.
entity string yes Code of the entity.
message_id string yes Message id of the pain.001 file, e.g. ERP-20260930-1A2B3C4D5E6F.
format string yes File format: pain.001.001.09.ch.03 (SPS credit transfers) or pain.008.001.08 (SEPA direct debits).
filename string yes Name of the file.
sha256 string yes SHA-256 of the file, hex; also in the X-Content-SHA256 header.
payment_count integer yes Number of payments in the file.
control_sum string yes Sum of the payment amounts.
created_by object yes The actor that released the file.
created_at string (date-time) yes When it was released (UTC).
payments array of string yes Numbers of the payments in the file.
execution_dates array of ExecutionDate Requested and actual execution date of each payment.

PaymentMeans

BG-16 with credit transfer (BG-17), card (BG-18) or direct debit (BG-19).

Field Type Required Description
code string or null BT-81 UNTDID 4461
text string or null BT-82
account_id string or null BT-84 IBAN or account number
account_name string or null BT-85
bic string or null BT-86
card_number string or null BT-87 (masked)
card_holder string or null BT-88
mandate_id string or null BT-89
debited_account string or null BT-91

PaymentResult

Field Type Required Description
payment_id string (uuid) yes Id of the new payment.
status string yes posted, or pending_approval when the approval policy needs a second person.
fx_difference string yes Realised FX gain (positive) or loss (negative) booked, in the functional currency; 0 without a currency difference.
discount string Cash discount taken (all documents). (default "0.00")
in_transit boolean The payment was booked on the payments-in-transit account, not on the bank account: it awaits execution by the bank (ADR-0060). (default false)
submit SubmitResult yes How the submission went: policy (allow or require_approval), entry id and approval_id.
warnings array of string What to know that did not stop it, in English: an outgoing payment that takes its bank account below zero in the books on the payment date (the money may be there and not booked yet).
warning_reasons array of Reason The same by code (bankBalance.warning.overdrawn, with account, entity, balance, after, currency and on; overdrawn_in_transit adds in_transit when payments the bank has not executed yet count towards it), in the order of warnings.

PeriodOut

Field Type Required Description
id string (uuid) yes Id (uuid) of the period.
fiscal_year integer yes The fiscal year of the period.
number integer yes The period number in the year, from 1; adjustment periods follow the regular ones.
kind string yes regular, or adjustment for a one-day closing period on the last day of the year.
start_date string (date) yes First day of the period (ISO 8601).
end_date string (date) yes Last day of the period (ISO 8601).
status string yes open (entries may be posted) or closed.
closed_at string (date-time) or null yes When the period was closed (ISO 8601, UTC); null while open.
closed_by string or null yes Id of the actor that closed the period; null while open.

PeriodRef

Field Type Required Description
id string (uuid) yes Id (uuid) of the fiscal period.
fiscal_year integer yes The fiscal year of the period.
number integer yes The period number in the year, from 1; adjustment periods follow the regular ones.
kind string yes regular, or adjustment for a one-day closing period on the last day of the year.
start string (date) yes First day of the period (ISO 8601).
end string (date) yes Last day of the period (ISO 8601).
status string yes open (entries may be posted) or closed.

Person

Field Type Required Description
id string (uuid) yes The user's id (GET /v1/people).
email string yes Their e-mail address.
name string or null yes Their name.

PolicyResult

Field Type Required Description
decision "allow" | "deny" | "require_approval" yes allow (go ahead), require_approval (a second person must approve) or deny (refused).
reason string yes The reason text of the rule that decided.
rule_id string yes Id of the rule that decided, or none when no rule matched (a denial).
table_id string yes Id of the decision table that was applied.

PostalAddress

Field Type Required Description
line1 string or null BT-35 / BT-50 / BT-75
line2 string or null BT-36 / BT-51 / BT-76
line3 string or null BT-162 / BT-163 / BT-165
city string or null BT-37 / BT-52 / BT-77
postal_code string or null BT-38 / BT-53 / BT-78
subdivision string or null BT-39 / BT-54 / BT-79
country string or null BT-40 / BT-55 / BT-80

PrecedingInvoice

BG-3.

Field Type Required Description
number string or null BT-25
issue_date string (date) or null BT-26

Reason

Field Type Required Description
words string yes The vocabulary of the code, such as consolidation.exception: the screens word it as <words>.<code>.
code string yes What it is, by a stable code.
details object or null yes The values the words name (amounts as decimal strings, days as ISO dates, lists, or further reasons); null for an older record kept without them.
text string yes The same in English words.

ReceiptInput

Field Type Required Description
receipt_date string (date) or null Date the goods or services arrived (ISO 8601); default today where the company is.
note string or null Free text, e.g. the delivery note number (up to 500 characters). (max length 500)
warehouse string or null Code or id of the warehouse the stock items come into (or go back from); default the entity's default warehouse. Lines that are no stock items ignore it. (max length 40)
lines array of ReceiptLineInput yes What was received per order line, 1 to 500 lines. (min items 1; max items 500)

ReceiptLineInput

Field Type Required Description
line_no integer yes The order line. (min 1)
quantity decimal string yes Received; negative corrects an earlier receipt (at most 6 decimals).

ReconcilingItem

An amount that explains a difference between the ledger and what the VAT report or the return takes: it is in the ledger and in no VAT turnover.

Field Type Required Description
code string yes outside_scope_sales (revenue of lines outside the scope of VAT: interest and fees for late payment, supplies within a VAT group or an Organschaft), outside_scope_purchases (the same on bills), foreign_vat_purchases (foreign VAT that vendors charged under their own country's law, which cannot be reclaimed and is booked as cost, with the net amount of purchases taxed abroad), non_deductible_vat_purchases (the part of input VAT the law does not let the company deduct, booked as cost: vat_recovery_percent of a bill line), fx_rounding (the FX rounding of invoices and bills in a foreign currency), or other_period_sales and other_period_purchases (turnover booked in this period whose VAT is due in another because of its date of supply or, under the cash basis, its payment, less the reverse).
label string yes What it is, in words.
amount string yes In the functional currency: revenue (sales) or expense (purchases) that no VAT turnover contains, positive as the item's name reads (a credit note or a cash discount makes it smaller). fx_rounding is the net expense of the rounding: positive when the rounding cost (a debit), negative when it gained (a credit).

ReportTranslation

How the amounts were translated, and with which rates.

Field Type Required Description
functional_currency string yes The company's own currency.
currency string yes The currency the report is shown in.
source string yes Who publishes the rates: the ECB's reference rates.
dataset_version string yes The version of the reference data used.
closing_rate DayRate or null Balance sheet: the rate of the report date, for assets and liabilities.
average_rates array of AverageRate yes The average rate of each month with income or expenses.
historical_rates array of DayRate Balance sheet: the rate of each day equity was booked on.
difference string or null Balance sheet: the translation difference, the amount in equity that comes from translating at different rates (IAS 21.41); positive is a gain.
reconciled boolean or null Balance sheet: true when the translation difference equals, to the last digit, what the movements of the rates explain (the roll-forward of the consolidation).

ReverseRequest

Field Type Required Description
on string (date) or null Date of the reversal, ISO 8601; its period must exist and be open. Default: the date of the entry being reversed.
reason string yes Why it is reversed (required, at most 500 characters): appended to the description of the reversal entry and recorded in the audit trail and, when the reversal needs approval, in the approval request. (min length 1; max length 500)

Section

Field Type Required Description
report_line string yes The statement line, e.g. pl.opex.other or bs.assets.current.cash.
amount string yes Sum of the balances of its accounts, in the report's currency.
accounts array of AccountBalance yes The accounts on that line.
comparative Comparative or null As the accounts' comparative, for the line; null when not asked for.
budget Comparative or null As the accounts' budget, for the line; null when not asked for.

SourceFileOut

The stored original of a document; the file is GET /v1/documents/{id}/file.

Field Type Required Description
id string (uuid) yes Id of the stored file.
kind string yes What the file is, e.g. vendor_bill.
filename string yes File name as uploaded.
content_type string yes Media type of the file.
size integer yes Size in bytes.
sha256 string yes SHA-256 of the file, hex.
created_at string (date-time) yes When the file was stored (UTC).

SubmitResult

Field Type Required Description
entry_id string (uuid) yes Id (uuid) of the journal entry.
status string yes posted, pending_approval or draft (created without submitting).
number string or null yes The entry number once posted; null otherwise.
policy PolicyResult yes The decision of the approval policy for this entry and caller.
approval_id string (uuid) or null Id (uuid) of the approval request when the entry waits for approval (POST /v1/approvals/{approval_id}/approve); else null.
reason string or null Why the entry waits for approval, in words: the policy's reason, or why a second person must see it (a bill that quotes a purchase order that does not exist), or both; null when it posted.

Totals

BG-22 document totals.

Field Type Required Description
line_total string or null BT-106 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
allowance_total string or null BT-107 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
charge_total string or null BT-108 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
tax_exclusive string or null BT-109 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
tax_total string or null BT-110 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
tax_total_accounting string or null BT-111 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
tax_inclusive string or null BT-112 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
prepaid string or null BT-113 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
rounding string or null BT-114 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
payable string or null BT-115 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
third_party_payments string or null Sum of BT-DEX-002 third party payments (XRechnung extension) (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)

ValidationError

Field Type Required Description
loc array of string | integer yes
msg string yes
type string yes
input any
ctx object

VatBreakdown

BG-23.

Field Type Required Description
taxable_amount string or null BT-116 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
tax_amount string or null BT-117 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
category string or null BT-118
rate string or null BT-119 (pattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$)
exemption_reason string or null BT-120
exemption_reason_code string or null BT-121

VatNetTaxRate

Field Type Required Description
series string yes data-vNext net tax rate series approved by the ESTV, e.g. 'ch.vat.net_rate.software_entwicklung'. (pattern ^[a-z0-9_.-]+$)
activity_id string yes The ESTV's five-character activity code (eCH-0217 activityID). (pattern ^[A-Za-z0-9]{5}$)
accounts array of string Revenue accounts declared under this activity; empty: all other accounts.

VatSettingsInput

Field Type Required Description
method "effective" | "net_tax_rate" | "quick" | "standard" yes 'effective' or 'net_tax_rate' (CH), 'quick' (CA), else 'standard'.
period "half_year" | "month" | "quarter" | "two_months" | "year" yes Return period: month, two_months (the Norwegian termin), quarter, half_year or year.
basis "cash" | "invoice" or null invoice or cash (VAT due when paid), where the country offers it (cash_basis_law). It applies to the documents posted from then on; those posted before keep theirs. Omit to keep the current basis (default invoice).
recapitulative_period "month" | "quarter" or null EU recapitulative statement (ZM) period.
tax_number string or null DE: Steuernummer.
registered_from string (date) or null The day the VAT registration takes effect (a company registered after its books start, or one that kept its earlier returns elsewhere): periods that end before it are not listed as due and not named as unfiled. Omit to keep it; null: since the books start.
net_tax_rates array of VatNetTaxRate The net tax rates the ESTV approved, with their activity codes. Required for net_tax_rate and refused for any other method. Default: none.
settlement_account string or null Account for the VAT payable or receivable (default: role).
tax_fx "daily" | "ecb_daily" | "monthly" or null Official exchange rates for the VAT on foreign-currency documents. CH (MWSTV Art. 45): 'monthly' (ESTV monthly average, default) or 'daily' (daily selling rate); keep the method for at least a whole tax period. DE (UStG §16 Abs. 6): 'monthly' (BMF monthly average, default) or 'ecb_daily' (daily ECB rate, only with the tax office's approval). Omit to keep the current method.
tax_fx_booking boolean or null Also book foreign-currency documents at the official VAT rate instead of the ECB fixing (only rates published when the document is posted). Omit to keep the current choice (default false).
filing_extension boolean or null DE only: the tax office granted the permanent extension of the filing deadline (Dauerfristverlängerung, UStDV §§ 46-48), so each advance return is due on the 10th of the second month after its period. Omit to keep the current choice (default false).
registrations array of string or null CA: the provinces besides its own whose sales tax the entity collects: CA-QC, CA-BC, CA-SK, CA-MB. Omit to keep the current list.
provincial_periods map of "half_year" | "month" | "quarter" | "two_months" | "year" or null CA: per province (CA-BC, CA-SK, CA-MB, CA-QC), the period of its sales tax return where it differs from period. Omit to keep the current periods.
quick_method "resale" | "services" or null CA, required with method quick: resale (goods bought for resale are at least 40% of taxable sales) or services.
oss boolean or null EU only: registered for the One-Stop Shop (OSS) union scheme. Omit to keep the current choice (default false).
oss_from string (date) or null EU only: the day the OSS registration takes effect: the first day of the quarter after the registration, or the day of the first such sale when it is notified by the 10th of the following month (Implementing Regulation 282/2011 art. 57d). Omit to keep it; when oss is switched on without one, the first day of the current quarter.
oss_destination boolean or null EU only: charge the customer's VAT on distance sales to consumers in other member states below the EUR 10,000 threshold too (art. 59c(3); binding for two calendar years). Omit to keep the current choice (default false).

Violation

Field Type Required Description
rule string yes Rule id, e.g. BR-DE-15.
severity "fatal" | "warning" yes fatal (the invoice breaks the rule) or warning.
message string yes What is wrong.
location string or null Where in the invoice, if known.
Stabiso, the Enterprise System of Record · generated from the code and its guides · release d6b82bcf059d