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. |
DocumentLink
| 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. |
ExportLink
| 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. |