Sign in

API reference

https://api.ocost.io/public/v1

Ocost API 1 · The OpenAPI document

Routes

get/public/v1/documents/{document_id}

Get Document

One document as ocost.document.v1.

Parameters

  • document_idpathstring (uuid)requiredA document's id: from a file's documents or a search result

Responses

get/public/v1/files

List Files

The files changed at or after updated_since, oldest change first, of the statuses asked for: what a connector polls. The next page is next_cursor's; with no more, keep the last cursor and ask with it later for what changed since. A change made as a page is read comes on a later one.

Parameters

  • statusqueryFileStatus[] | nullOnly files of these statuses; repeat it for several
  • updated_sincequerystring (date-time) | nullFiles changed at or after this time (ISO 8601)
  • cursorquerystring | nullnext_cursor of the page before
  • limitqueryintegerFiles per page

Responses

post/public/v1/files

Send File

Sends a file to be read (multipart, field file): 202 with the file, received, when it is new; 200 with the file as it is when the same bytes were sent before (they are read and counted once; the first external_ref stays). Each answer says the month's documents left in X-Ocost-Documents-Left. 413 past 25 MB, 415 for a kind Ocost doesn't read (an archive among them), 409 when the same bytes are a file of the business the key doesn't see (a person's own upload).

Request body · multipart/form-data

  • external_refstringYour own id for it (an Odoo bill's), kept and given back
  • filestring (binary)requiredA PDF, an image (JPEG, PNG, TIFF, WebP) or an e-invoice's XML (XRechnung, UBL, CII); at most 25 MB
  • namestringIts file name; the upload's own when left out

Responses

get/public/v1/files/{file_id}

Get File

A file: its status, why it isn't read where it isn't, and the documents it holds once it is.

Parameters

  • file_idpathstring (uuid)requiredThe file's id, as POST /files answered it

Responses

delete/public/v1/files/{file_id}

Delete File

Erases the file for good, at once: its documents, their lines, sources and parties, its passages and its reading, and the original in storage. 409 while it is being read (urn:ocost:file:reading), and while Ocost still needs it as Files would keep it: an invoice paid, matched or exported, a bank statement, an open question, a project's file (urn:ocost:file:linked, the reason in detail); 404 after.

Parameters

  • file_idpathstring (uuid)requiredThe file's id, as POST /files answered it

Responses

get/public/v1/files/{file_id}/content

Get File Content

The original's bytes, as they were sent.

Parameters

  • file_idpathstring (uuid)requiredThe file's id, as POST /files answered it

Responses

get/public/v1/files/{file_id}/document

Get File Document

The file's first document as ocost.document.v1: what a bill is filled from. A file holding several lists them all (documents), each at /documents/{id}. 404 while it has none.

Parameters

  • file_idpathstring (uuid)requiredThe file's id, as POST /files answered it

Responses

Schemas

Address

  • citystring | nullBT-37, BT-52
  • countrystring | nullBT-40, BT-55: ISO 3166-1 alpha-2
  • postal_codestring | nullBT-38, BT-53
  • streetstring | nullBT-35 (seller), BT-50 (buyer)

Attention

What a person should look at before booking it.

  • sums: A check with sums: true failed
  • outgoing: The business issued it
  • possible_duplicate: An earlier document has its kind, number and seller (possible_duplicate_of)
  • self_billed: A self-billed invoice (Gutschrift): the buyer issued it

"sums" | "outgoing" | "possible_duplicate" | "self_billed"

Card

What a document without fields of its own says: a title, a summary and its facts (deadlines first).

  • factsFact[]required
  • summarystring | null
  • titlestring | null

Check

A check Ocost ran in code, and whether it passed.

  • atstring | nullThe rate or the line it is about
  • fieldsstring[]requiredThe paths it is about, as sources names them
  • nameCheckNamerequiredWhat it checked; sums says whether it is one of the sums
  • passedbooleanrequired
  • sumsbooleanrequiredOne of the sums (total, vat, vat_net, vat_tax, gross, payable, signs, skonto, deduction, deductions, quantity): fill a bill only when all pass

CheckName

A check Ocost ran in code on what it read.

  • total: A total was read
  • vat: A VAT group's VAT is its net × rate (at the rate)
  • vat_net: The VAT groups' nets add up to the net
  • vat_tax: The VAT groups' VAT adds up to the VAT
  • gross: Net plus VAT is the gross (the net, with no VAT printed)
  • payable: What is left to pay is between nothing and the gross
  • signs: No total is negative
  • deduction: A deducted invoice's net plus VAT is its gross (at which)
  • deductions: The gross less the deductions is what is left to pay
  • quantity: A delivered quantity is positive, or the line is backordered (at the line)
  • skonto: A Skonto is plausible: up to 10 %, within a year
  • line: A line's quantity × price, less its discount, is its net (at the line)
  • lines_net: The lines add up to the net (the gross, priced with VAT)
  • lines_currency: The lines are in another currency than the totals (at it)
  • vat_lines: A VAT group's net is its lines' (at the rate)
  • iban: The IBAN's check digits hold
  • vat_id: A German VAT ID's check digit holds
  • issued_on: The issue date is neither years ago nor ahead
  • due_on: The due date isn't before the issue date
  • service: The service period starts before it ends
  • valid_until: A quote holds until after its issue date
  • delivery_on: The delivery date is near the issue date
  • stated: The amounts stated in a second currency add up
  • stated_rate: The amounts in both currencies agree at the rate printed, else the ECB's (at the rate)
  • payment_sum: A contract's payment: net plus VAT is its gross (at which)
  • payment_vat: A contract's payment: its VAT is its net × rate
  • payment_sign: A contract's payment: its amounts are positive
  • step: A stepped rent's step falls in the term, in order
  • first_payment: A contract's first payment falls in its term
  • deposit: A contract's deposit is positive

"total" | "vat" | "vat_net" | "vat_tax" | "gross" | "payable" | "signs" | "deduction" | "deductions" | "quantity" | "skonto" | "line" | "lines_net" | "lines_currency" | "vat_lines" | "iban" | "vat_id" | "issued_on" | "due_on" | "service" | "valid_until" | "delivery_on" | "stated" | "stated_rate" | "payment_sum" | "payment_vat" | "payment_sign" | "step" | "first_payment" | "deposit"

Confidence

How sure Ocost is of a value, from its checks: never a model's grade.

  • checked: A check confirmed it, or it came from an e-invoice
  • read: Nothing speaks against it
  • doubt: A check failed (why names it), or its words weren't on its page

"checked" | "read" | "doubt"

Contact

  • emailstring | nullBT-43, BT-58: an address as printed
  • phonestring | nullBT-42, BT-57: as printed

Deduction

A final invoice's: an earlier invoice it takes off.

  • grossstring | null
  • issue_datestring (date) | null
  • netstring | null
  • numberstring | null
  • taxstring | null

Direction

Whether the business received or issued it.

  • incoming: To the business: a supplier's
  • outgoing: The business issued it
  • unsure: Its parties don't say

"incoming" | "outgoing" | "unsure"

Document

ocost.document.v1: one document as Ocost read it.

  • attentionAttention[]required
  • buyerParty | nullBG-7
  • buyer_referencestring | nullBT-10
  • cardCard | null
  • checksCheck[]required
  • currencystring | nullBT-5, ISO 4217
  • deductionsDeduction[]required
  • deliver_toAddress | nullBG-15
  • delivery_datestring (date) | nullBT-72
  • directionDirectionrequired
  • due_datestring (date) | nullBT-9
  • early_payment_discountsEarlyPaymentDiscount[]required
  • file_idstring (uuid)requiredThe file it is in
  • idstring (uuid)requiredThe document
  • invoicing_period_endstring (date) | nullBT-74
  • invoicing_period_startstring (date) | nullBT-73
  • issue_datestring (date) | nullBT-2
  • kindKindrequired
  • kind_detailKindDetailrequired
  • linesLine[]required
  • numberstring | nullBT-1
  • order_referencestring | nullBT-13
  • order_referencesstring[]requiredEvery order it names
  • other_partiesOtherParty[]requiredEvery other party named
  • pagesinteger[]requiredIts pages in the file, from 1
  • payeeParty | nullBG-10: when not the seller
  • paymentPaymentrequired
  • possible_duplicate_ofstring (uuid) | nullAn earlier document of the same kind, number and seller
  • preceding_invoicestring | nullBT-25
  • read_withReadWithrequired
  • schema"ocost.document.v1"Always this
  • sellerParty | nullBG-4
  • sourcesobjectrequiredPer value, by its path: number, issue_date, due_date, delivery_date, valid_until, currency, order_reference, seller.name, buyer.name, seller.vat_id, buyer.vat_id, seller.contact.email, buyer.contact.email, seller.contact.phone, buyer.contact.phone, seller.website, buyer.website, seller.legal_registration_id, buyer.legal_registration_id, totals.net, totals.tax, totals.gross, totals.payable, payment.iban, payment.means_code, payment.paid_on, lines, other_parties[n].name, deductions[n].gross; a later Ocost may add paths
  • tax_checkTaxCheck | null
  • totalsTotalsrequired
  • type_codestring | nullBT-3, UNCL 1001: 380 commercial invoice, 381 credit note, 384 corrected invoice, 389 self-billed invoice, 326 partial invoice, 386 prepayment invoice, 325 pro forma invoice, 875 partial construction invoice, 876 partial final construction invoice, 877 final construction invoice, 383 debit note, 393 factored invoice, 751 invoice information for accounting purposes, 81 credit note related to goods or services, 83 credit note related to financial adjustments, 261 self-billed credit note, 262 consolidated credit note, goods and services, 396 factored credit note, 532 forwarder's credit note; an e-invoice may carry another
  • valid_untilstring (date) | nullA quote's
  • vat_breakdownVatGroup[]required
  • worked_outWorkedOut[]required

DocumentRef

One document a file holds.

  • idstring (uuid)required
  • kindKindrequired
  • numberstring | nullBT-1, as printed
  • pagesinteger[]requiredIts pages in the file, from 1

EarlyPaymentDiscount

Skonto: XRechnung's #SKONTO# in BT-20.

  • base_amountstring | nullWhat it is taken off, where printed; null: the amount due
  • daysintegerrequired
  • due_datestring (date) | nullThe last day for it: the issue date plus days
  • percentstringrequired2 for 2 %

Fact

  • amountstring | null
  • currencystring | nullISO 4217, of amount
  • datestring (date) | null
  • kindFactKindrequired
  • labelstringrequiredWhat it is, in the document's words
  • numberstring | null
  • pageinteger | null
  • textstring | null

FactKind

What a fact on a document's card is.

  • deadline: A date something is due by; its label says what
  • valid_from: The day it is valid from
  • valid_until: The day it is valid until
  • reference: A number naming something else
  • amount: An amount
  • party: Someone besides its issuer and recipient
  • date: Any other date: an inspection, an acceptance
  • other: Anything else

"deadline" | "valid_from" | "valid_until" | "reference" | "amount" | "party" | "date" | "other"

FieldError

One invalid field of a request.

  • locstring | integer[]required
  • msgstringrequired
  • typestringrequired

FileStatus

How far Ocost is with a file.

  • received: Stored, not read yet
  • reading: Being read
  • read: Read: documents lists what it holds
  • not_read: Stored, not read; reason says why
  • failed: Ocost couldn't read it; reason says why

"received" | "reading" | "read" | "not_read" | "failed"

FoundBy

How a passage was found.

  • words: By its words
  • meaning: By its meaning
  • both: By both

"words" | "meaning" | "both"

FoundFact

  • labelstringrequired
  • textstring | null

Hit

  • found_byFoundByrequired
  • highlightsany[][]requiredWhere the words are in text: [start, end) character ranges
  • pageintegerrequired
  • textstringrequired

Kind

What a document is, grouped so an integrator branches on few; the exact kind is kind_detail.

  • invoice: An invoice to pay: partial, final, advance, collective, recurring, self-billed (type_code says which)
  • credit_note: A credit note
  • invoice_correction: A corrected invoice
  • receipt: A receipt: paid already
  • pro_forma: A pro forma invoice: not to pay
  • delivery_note: A delivery note
  • order: An order: a purchase, service, work or project order
  • order_confirmation: An order's or a reservation's confirmation
  • quote: A quote (offer)
  • contract: A contract: agreements, leases, insurance policies, mandates
  • statement: A factor's statement
  • payment_reminder: A payment reminder
  • other: Anything else: kind_detail and card say what

"invoice" | "credit_note" | "invoice_correction" | "receipt" | "pro_forma" | "delivery_note" | "order" | "order_confirmation" | "quote" | "contract" | "statement" | "payment_reminder" | "other"

KindDetail

The exact kind, one of Ocost's document types, for information: branch on kind, which groups them (the guide's reference lists which).

"acceptance_protocol" | "agreement" | "bonus_payment_notification" | "certificate" | "certificate_of_destruction" | "collective_invoice" | "contract" | "cost_statement" | "court_order" | "credit_note" | "reimbursement" | "customer_statistics" | "decision" | "delivery_note" | "final_report" | "lump_sum_overview" | "test_report" | "insurance_policy" | "invoice" | "invoice_correction" | "laboratory_report" | "logistics_appendix" | "maintenance_log" | "maintenance_report" | "mandate" | "request_for_medical_consultation" | "notification" | "offer" | "order" | "order_confirmation" | "order_form" | "payment_reminder" | "payroll" | "pay_slip" | "prescription" | "project_order" | "work_record" | "receipt" | "recommendation" | "lease_contract" | "report" | "inquiry" | "requirement" | "reservation_confirmation" | "separator_sheet" | "service_order" | "service_report" | "service_documentation" | "declaration" | "time_sheet" | "work_order" | "work_report" | "recurring_rental_invoice" | "settlement_amount" | "electronic_summary" | "administrative_fee" | "payment_voucher" | "pro_forma_invoice" | "copy_of_invoice" | "bailiff" | "membership_fee" | "statement" | "enforcement_case" | "information" | "fee_invoice" | "cost_calculation" | "fee_notice" | "advance_payment_invoice" | "invoice_audit" | "credit_invoice" | "final_invoice" | "partial_invoice" | "annex" | "direct_debit_advice" | "process_history" | "internal_project_information" | "bank_transaction_report" | "purchase_order" | "request_for_quotation" | "rejection" | "form"

Line

BG-25.

  • attributes{ [key]: string }requiredWhat it is, as printed: colour, size, material, brand, …
  • backordered_quantitystring | nullStill to come
  • base_quantitystring | nullBT-149: how many units price is for; null: one
  • batchstring | nullIts batch (Charge), as printed
  • discount_percentstring | nullThe line's discount: 5
  • idstringrequiredBT-126: its position
  • namestringrequiredBT-153
  • net_amountstring | nullBT-131
  • ordered_quantitystring | nullA delivery note's
  • pricestring | nullBT-146: the net price
  • pznstring | nullA medicine's PZN
  • quantitystring | nullBT-129
  • seller_item_idstring | nullBT-155: the article number
  • standard_item_idstring | nullBT-157: the GTIN (scheme 0160)
  • unitstring | nullBT-130: UNECE Rec 20 (C62, HUR, KGM) or Rec 21 (XCT); null when none is printed or it is no code
  • vat_categoryVatCategory | nullBT-151
  • vat_ratestring | nullBT-152, percent

Means

How it is paid, as a word.

  • transfer: A credit transfer (means_code 58)
  • direct_debit: A direct debit (59)
  • card: A card (48)
  • already_paid: It says it is paid already (no code)

"transfer" | "direct_debit" | "card" | "already_paid"

MeansCode

BT-81: how it is paid, UNCL 4461.

  • 58: SEPA credit transfer
  • 59: SEPA direct debit
  • 48: Bank card

"58" | "59" | "48"

OtherParty

  • addressAddress | nullBG-5, BG-8
  • contactContact | nullBG-6, BG-9
  • legal_registration_idstring | nullBT-30, BT-47: the register entry (HRB …)
  • namestring | nullBT-27 (seller), BT-44 (buyer)
  • printed_rolestring | nullThe words printed for its role
  • rolePartyRolerequiredWhat it is to the document
  • tax_registration_idstring | nullBT-32: the tax number (Steuernummer)
  • vat_idstring | nullBT-31, BT-48
  • websitestring | nullAs printed: a host, with or without its scheme

Party

  • addressAddress | nullBG-5, BG-8
  • contactContact | nullBG-6, BG-9
  • legal_registration_idstring | nullBT-30, BT-47: the register entry (HRB …)
  • namestring | nullBT-27 (seller), BT-44 (buyer)
  • tax_registration_idstring | nullBT-32: the tax number (Steuernummer)
  • vat_idstring | nullBT-31, BT-48
  • websitestring | nullAs printed: a host, with or without its scheme

PartyRole

What another party is to the document; printed_role is its words.

  • seller: The seller
  • buyer: The buyer
  • invoicee: Who it is addressed to, when not the buyer (Rechnungsempfänger)
  • service_recipient: Who receives the service, when not the buyer (Leistungsempfänger)
  • payer: Who pays, when not the buyer
  • payee: Who is paid, when not the seller
  • ship_to: Where the goods go (Warenempfänger)
  • carrier: Who carries the goods
  • factor: Who bought the receivable
  • debtor: Whose receivable it is (a factor's debtor)
  • guarantor: Who guarantees it (Bürge)
  • landlord: The landlord
  • tenant: The tenant
  • subtenant: The subtenant
  • contractor: The contractor
  • subcontractor: The subcontractor
  • principal: Who commissions the work (Auftraggeber, Bauherr)
  • agent: Who acts for a party: a property manager, a broker
  • insurer: The insurer
  • policyholder: The policyholder
  • other: Any other role: printed_role says which

"seller" | "buyer" | "invoicee" | "service_recipient" | "payer" | "payee" | "ship_to" | "carrier" | "factor" | "debtor" | "guarantor" | "landlord" | "tenant" | "subtenant" | "contractor" | "subcontractor" | "principal" | "agent" | "insurer" | "policyholder" | "other"

Payment

BG-16.

  • bicstring | nullBT-86
  • ibanstring | nullBT-84, without spaces
  • meansMeans | nullThe same, as a word
  • means_codeMeansCode | nullBT-81, UNCL 4461; null when it doesn't say or it was paid already
  • net_daysinteger | nullThe days the terms give to pay in full from the issue date
  • paid_onstring (date) | nullThe day it says it was paid or charged, where printed
  • termsstring | nullBT-20, as printed

Problem

RFC 9457 problem details, with errors for invalid fields.

  • detailstring | null
  • errorsFieldError[] | null
  • instancestring | null
  • reasonstring | nullRead-only (type urn:ocost:read-only, docs/specs/056): why, trial_ended, unpaid or ended
  • renews_onstring (date) | nullA month's limit used (type urn:ocost:limit:<kind>): the day it renews
  • statusintegerrequired
  • titlestringrequired
  • typestring

PublicFile

A file sent, and how far Ocost is with it.

  • content_typestringrequired
  • created_atstring (date-time)required
  • documentsDocumentRef[]requiredOnce read: what it holds
  • external_refstring | nullYour own id for it, as sent
  • idstring (uuid)required
  • namestringrequired
  • pagesinteger | nullIts pages, once counted
  • pages_readinteger | nullThe first pages read of a file longer than Ocost reads; null: all of them
  • reasonReason | nullWhy it is not_read or failed
  • renews_onstring (date) | nullFor reason: limit: the day the month's documents renew; it is read then by itself
  • sha256stringrequiredThe bytes' SHA-256, hex: the same bytes are one file; empty for a file Ocost made itself before it is hashed
  • size_bytesintegerrequired
  • statusFileStatusrequired
  • updated_atstring (date-time)required

PublicFiles

  • filesPublicFile[]requiredOldest change first
  • morebooleanrequiredMore pages are there now: ask again at once
  • next_cursorstring | nullAsk with this as cursor for the next page, and later for what changed since; null when nothing was listed yet

ReadWith

How Ocost read it: never a model's or provider's name.

  • e_invoice: From its XML, exactly
  • reader: From its pages

"e_invoice" | "reader"

Reason

Why a file is not_read or failed.

  • limit: The month's documents are used up; read on renews_on
  • model_off: This business may not have PDFs and images read; e-invoices still are
  • nothing_found: No document in it
  • too_large: Too many pages or too large an image
  • damaged: Not a file Ocost can open
  • unavailable: No reading service answered for a day; send it again
  • failed: Reading failed
  • other: Any other reason

"limit" | "model_off" | "nothing_found" | "too_large" | "damaged" | "unavailable" | "failed" | "other"

SearchMeaning

Whether search by meaning answered.

  • available: It did
  • unavailable: The index is building or its model unreachable; the words still answer

"available" | "unavailable"

SearchResult

  • buyerstring | nullAs read
  • currencystring | null
  • document_idstring (uuid) | nullNull for a file without one
  • document_urlstring | nullThe document, in this API
  • factsFoundFact[]requiredIts card's facts that have the words
  • file_idstring (uuid)required
  • file_namestringrequired
  • file_urlstringrequiredThe file, in this API
  • grossstring | null
  • issue_datestring (date) | null
  • kindKind | null
  • numberstring | null
  • pagesinteger[]required
  • passagesHit[]requiredAt most 5, best first
  • sellerstring | nullAs read

SearchResults

  • meaningSearchMeaningrequired
  • resultsSearchResult[]required
  • totalintegerrequiredHow many matched, up to the pool's 300
  • truncatedbooleanrequiredMore matched than the pool holds

Source

Where a value was read, and how sure Ocost is of it.

  • confidenceConfidencerequired
  • pageinteger | nullWhere it was read, from 1
  • quotestring | nullThe words it was read from
  • whystring | nullFor a doubt: the failed check's name

TaxCase

Which German rules an incoming invoice is held to.

  • standard: § 14 Abs. 4 UStG: an invoice with VAT
  • small: § 33 UStDV: a small amount, up to 250 €
  • reverse_charge: § 13b, § 14a Abs. 5 UStG: the business owes the VAT
  • intra_eu: § 14a Abs. 3 UStG: an intra-community supply
  • exempt: § 14 Abs. 4 Satz 1 Nr. 8 UStG: an exempt supply

"standard" | "small" | "reverse_charge" | "intra_eu" | "exempt"

TaxCheck

An incoming invoice's § 14 UStG check (Germany's rules).

TaxItem

  • at_stakebooleanrequiredMissing, it costs the input VAT deduction
  • itemTaxItemKindrequired
  • lawstringrequiredThe paragraph that asks for it

TaxItemKind

What an invoice lacks, or has wrong, for its case.

  • supplier_name: The supplier's full name
  • supplier_address: The supplier's full address
  • supplier_tax_id: The supplier's tax number or VAT ID
  • recipient_name: The recipient's full name
  • recipient_address: The recipient's full address
  • recipient_not_us: It is addressed to someone else than the business
  • recipient_address_not_ours: It is addressed to an address that isn't the business's
  • issued_on: The issue date
  • number: The invoice number
  • description: The quantity and kind of the goods or services
  • service_date: The day of the supply or service
  • net: The net per rate
  • tax_rate: The VAT rate
  • tax_amount: The VAT
  • exemption_note: The note on why it is exempt
  • reverse_charge_note: The note that the recipient owes the VAT (Steuerschuldnerschaft des Leistungsempfängers)
  • intra_eu_note: The note that it is an intra-community supply
  • supplier_vat_id: The supplier's VAT ID
  • recipient_vat_id: The recipient's VAT ID
  • vat_charged: German VAT charged where the business owes it itself (§ 13b): not deductible, and paying it pays VAT twice

"supplier_name" | "supplier_address" | "supplier_tax_id" | "recipient_name" | "recipient_address" | "recipient_not_us" | "recipient_address_not_ours" | "issued_on" | "number" | "description" | "service_date" | "net" | "tax_rate" | "tax_amount" | "exemption_note" | "reverse_charge_note" | "intra_eu_note" | "supplier_vat_id" | "recipient_vat_id" | "vat_charged"

Totals

BG-22.

  • grossstring | nullBT-112
  • netstring | nullBT-109
  • payablestring | nullBT-115: what is left to pay; null when it is the gross
  • prices_include_vatbooleanrequiredIts lines' prices and amounts include VAT (a receipt)
  • taxstring | nullBT-110

VatCategory

BT-118, BT-151: the VAT category, UNCL 5305 as EN 16931 uses it.

  • S: Standard rate
  • Z: Zero rated goods
  • E: Exempt from VAT
  • AE: Reverse charge: the buyer owes the VAT
  • K: Intra-community supply, VAT exempt
  • G: Export outside the EU, free of VAT
  • O: Outside the scope of VAT
  • L: Canary Islands' IGIC
  • M: Ceuta and Melilla's IPSI
  • B: Transferred VAT (Italy's split payment)

"S" | "Z" | "E" | "AE" | "K" | "G" | "O" | "L" | "M" | "B"

VatGroup

BG-23.

  • categoryVatCategory | nullBT-118
  • exemption_reasonstring | nullBT-120
  • ratestring | nullBT-119, percent: 19
  • tax_amountstringrequiredBT-117
  • taxable_amountstringrequiredBT-116

WorkedOut

An amount Ocost worked out because the one read can't be it.

WorkedOutField

The amount worked out, by its path.

  • totals.net: BT-109
  • totals.tax: BT-110
  • totals.gross: BT-112

"totals.net" | "totals.tax" | "totals.gross"

WorkedOutRule

How Ocost worked an amount out.

  • groups: The VAT groups' sum
  • net_tax: Net plus VAT
  • skonto: The gross read was the amount less Skonto
  • payable: The gross read was what is left to pay
  • outside: The net with an amount outside the VAT groups: a deposit, a tip

"groups" | "net_tax" | "skonto" | "payable" | "outside"