API documentation

Extraction fields

Understand the normalized JSON shape returned after processing completes.

Extraction response shape

Extraction responses are keyed by normalized field name. Each field contains a system-ready value and the source candidates that explain where the value came from.

Extraction JSON
{
  "data": {
    "type": {
      "value": "invoice",
      "candidates": ["Invoice"]
    },
    "document_number": {
      "value": "RE-2026-1048",
      "candidates": ["RE-2026-1048"]
    },
    "issue_date": {
      "value": "2026-05-10",
      "candidates": ["10 May 2026"]
    },
    "sender_name": {
      "value": "Meyer Supply GmbH",
      "candidates": ["Meyer Supply GmbH"]
    },
    "recipient_name": {
      "value": "Northwind Operations Ltd.",
      "candidates": ["Northwind Operations Ltd."]
    },
    "currency": {
      "value": "EUR",
      "candidates": ["EUR"]
    },
    "gross_amount": {
      "value": "1079.50",
      "candidates": ["Amount due EUR 1,079.50"]
    },
    "tax_breakdowns": {
      "value": [
        {
          "taxable_amount": "1079.50",
          "tax_amount": "0.00",
          "tax_rate": "0.00",
          "taxability": "taxable",
          "tax_collection_mechanism": "reverse_charge",
          "tax_exemption_reason": "Intra-EU B2B reverse charge"
        }
      ],
      "candidates": ["Reverse charge applies under Article 196 VAT Directive"]
    }
  }
}
Property Type Description
dataObjectObject keyed by field name. Standard keys are listed below; account-specific or future fields can add more keys.
data.<field>.valueString, array, object, or nullNormalized value to map into your system.
data.<field>.candidatesArray or nullRaw or derived evidence considered for that field. Store it if you build review screens or support tooling.

Normalized values

Use value for automation and candidates for review. The same response shape is used for PDFs, images, office documents, email files, XML/e-invoices, and structured source files.

Kind Format Example Notes
Missing valueJSON nullnullThe field was not visible, not applicable, or not extracted with enough confidence.
AmountDot-decimal string with two digits1079.50Negative balances keep a leading minus sign, for example -42.30.
DateYYYY-MM-DD2026-05-10Dates are normalized when the document provides enough information.
CurrencyISO 4217EURAlways uppercase when extracted.
CountryISO 3166-1 alpha-2DE, MTUsed for sender and recipient country codes.
Tax rowArray of objectstax_breakdowns.valueOne row per visible tax rate or category.

Tax breakdown rows

tax_breakdowns.value is null or an array. Each row represents one visible tax rate or tax category from the document. Use rows when your system needs posting, VAT/GST handling, reverse-charge treatment, or audit trails.

Reverse-charge tax row
{
  "tax_breakdowns": {
    "value": [
      {
        "taxable_amount": "1079.50",
        "tax_amount": "0.00",
        "tax_rate": "0.00",
        "taxability": "taxable",
        "tax_collection_mechanism": "reverse_charge",
        "tax_exemption_reason": "Intra-EU B2B reverse charge"
      }
    ],
    "candidates": ["Reverse charge applies under Article 196 VAT Directive"]
  }
}
Subfield Type Allowed values / format Description
taxable_amountDecimal string or null1079.50Amount the row's tax is calculated from, excluding tax.
tax_amountDecimal string or null205.10, 0.00Tax amount for this row.
tax_rateDecimal string or null19.00, 7.00, 0.00Percentage rate shown on the document. The percent sign is omitted.
taxabilityString or nulltaxable, zero_rated, exempt, out_of_scopeWhether the row is taxable, zero-rated, exempt, or outside the tax system.
tax_collection_mechanismString or nullseller_collected, reverse_charge, buyer_use_tax, not_collectedWho accounts for the tax. Reverse charge belongs here.
tax_exemption_reasonString or nullFree text from the documentVisible exemption, zero-rating, out-of-scope, or reverse-charge reason.

Field metadata

Every standard extraction key below can appear in the data object. Use the field name as the stable mapping key; use candidates when operators need to review how the value was selected.

Document fields

Field reference for the keys available in document extraction. A field can be present with null when it is not visible or not applicable to the uploaded document.

Identity and dates

FieldTypeExampleDescription
typeStringinvoiceDocument class such as invoice, credit-note, reminder, salary-statement, bank-statement, contract, balance-sheet, tax-assessment-note, timesheet, letter, email, or other.
titleString or nullInvoiceVisible document title or email subject.
dateDate or null2026-05-10Main document date when the document has a single primary date.
issue_dateDate or null2026-05-10Issue date for invoices, letters, contracts, and similar documents.
payment_due_dateDate or null2026-06-09Payment due date or due-by date.
period_startDate or null2026-04-01Start of the service, billing, statement, or reporting period.
period_endDate or null2026-04-30End of the service, billing, statement, or reporting period.
document_numberString or nullRE-2026-1048Invoice number, document number, receipt number, or similar visible identifier.
customer_idString or nullC-88421Customer, debtor, or buyer identifier shown on the document.
contract_idString or nullMSA-2024-17Contract, agreement, or subscription identifier.
order_idString or nullPO-77819Purchase order, sales order, or order reference.
reference_idString or nullREF-59K2General reference number when it is not specifically a customer, contract, order, or payment reference.
cost_centerString or nullFIN-AP-DECost center or internal accounting code visible on the document.

Amounts and payment

FieldTypeExampleDescription
currencyString or nullEURISO 4217 currency code.
net_amountDecimal string or null1079.50Total amount before tax.
gross_amountDecimal string or null1079.50Total payable amount including tax.
tax_amountDecimal string or null0.00Total tax amount across the document when visible or derivable.
tax_rateDecimal string or null19.00Single visible tax rate when the document has one overall rate. Multi-rate documents should use tax_breakdowns.
opening_balanceDecimal string or null1482.25Opening balance, mainly for bank statements and account statements.
closing_balanceDecimal string or null952.10Closing balance, mainly for bank statements and account statements.
payment_statusString or nullopenPayment state when visible, commonly paid, open, or a document-specific wording.
payment_referenceString or nullRE-2026-1048Structured or free-text reference to include with payment.
account_holderString or nullMeyer Supply GmbHBank account holder or payment recipient name.
ibanString or nullDE89370400440532013000IBAN exactly as normalized from the document.
bicString or nullCOBADEFFXXXBIC/SWIFT code.
bankString or nullCommerzbankBank name.

Tax classification

FieldTypeExampleDescription
tax_breakdownsArray or nullSee tax breakdown rowsPer-rate or per-category tax rows. Prefer this over summary fields for accounting automation.
tax_systemString or nullvatTax system such as vat, gst, sales_tax, withholding_tax, or other.
taxabilityString or nulltaxableTop-level taxability summary. Row-level values in tax_breakdowns are more precise.
tax_collection_mechanismString or nullreverse_chargeTop-level summary of who accounts for tax. Row-level values are more precise for mixed documents.
cross_border_tax_treatmentString or nulleu_b2b_serviceGeography/treatment summary such as domestic_taxable, eu_b2b_service, eu_goods, third_country_service, export, us_sales_tax, or us_use_tax.
supply_typeString or nullserviceSupply type: service, goods, or mixed.
tax_exemption_reasonString or nullIntra-EU B2B reverse chargeVisible exemption, zero-rating, out-of-scope, or reverse-charge reason.

Parties and addresses

FieldTypeExampleDescription
sender_nameString or nullMeyer Supply GmbHIssuer, seller, supplier, service provider, or sender.
sender_streetString or nullIndustriestrasse 14Sender street and house number.
sender_zipString or null50667Sender postal code.
sender_cityString or nullCologneSender city.
sender_stateString or nullNRWSender state, province, or region.
sender_country_codeString or nullDESender country as ISO 3166-1 alpha-2.
sender_tax_idString or null219/5800/1234Sender tax identifier that is not specifically a VAT/GST number.
sender_vat_numberString or nullDE123456789Sender VAT/GST number.
recipient_nameString or nullNorthwind Operations Ltd.Buyer, customer, recipient, or bill-to party.
recipient_streetString or nullTriq il-Port 8Recipient street and house number.
recipient_zipString or nullVLT 1440Recipient postal code.
recipient_cityString or nullVallettaRecipient city.
recipient_stateString or nullMaltaRecipient state, province, or region.
recipient_country_codeString or nullMTRecipient country as ISO 3166-1 alpha-2.
recipient_tax_idString or nullMT-TAX-88421Recipient tax identifier that is not specifically a VAT/GST number.
recipient_vat_numberString or nullMT12345678Recipient VAT/GST number.

Contact and notes

FieldTypeExampleDescription
emailString or nullbilling@example.comContact email visible on the document.
phone_numberString or null+49 221 555010Contact phone number visible on the document.
websiteString or nullhttps://meyer.exampleWebsite URL visible on the document.
company_register_idString or nullHRB 123456Company register, chamber, or corporate registry identifier.
noteString or nullReverse charge appliesRelevant visible note that does not fit another normalized field.

Email fields

These fields are extracted from EML and MSG uploads. Email files can also populate shared fields such as type, title, date, sender_name, and recipient_name.

FieldTypeExampleDescription
fromString or nullBilling TeamEmail sender display name.
from_emailString or nullbilling@example.comEmail sender address.
toString or nullAccounts PayableEmail recipient display name.
to_emailString or nullap@northwind.exampleEmail recipient address.
subjectString or nullInvoice RE-2026-1048Email subject.
message_idString or null<invoice-1048@example.com>Email Message-ID header.
in_reply_toString or null<thread-2026@example.com>Email In-Reply-To header when available.