BigQuery field reference
All columns advertised by an example customer dataset, with types, meanings, and documented limitations.
This reference inventories 414 advertised fields in 26 customer views, observed in a staging customer dataset on 2026-10-05. It is a dated example, not a guarantee that your environment exposes the same columns at the same time. Always inspect your own dataset with INFORMATION_SCHEMA.COLUMNS (query in the BigQuery guide). Column descriptions are based on the documented reporting contract or source model where known; “operational/source-specific” explicitly means the field has no promised customer reporting semantics, not that its name should be interpreted as a contract.
October 8, 2026 update: The checked development and staging customer datasets now each advertise 429 fields in 26 views, with matching names and types. Relative to the staging inventory below, the following fields are newly advertised in both datasets:
| View | Added fields (BigQuery type) | Meaning |
|---|---|---|
items | allowed_tab_types (JSON), measurement (JSON), pricing_group_id (STRING), print_preparation (BOOL), variable_quantity (BOOL) | Current catalogue configuration; not a historical sale-line snapshot. |
kitchen_dispatch_items | allocated_amount_cents (INT64), allocated_vat_amount_cents (INT64), guest_field_answers (JSON), measured_stock_id (INT64), measurement (JSON), zero_ticket (BOOL) | Order-side allocation and preparation metadata; not a substitute for confirmed purchase amounts. zero_ticket marks an item prepared elsewhere and is now in view metadata. |
purchase_line_items | guest_field_answers (JSON), measurement (JSON), pre_discount_vat_amount_cents (INT64), revenue_account (STRING) | Sale-line attributes; pre_discount_vat_amount_cents is not authoritative purchase-level VAT (use purchase_vats). |
purchase_refund_line_items | quantity_cents (INT64) | Explicit refunded product quantity in hundredths of a unit (100 = one unit), nullable for amount-only and older refunds. |
printer_jobs.rendered_content (BYTES) was removed from both checked customer views, while remaining in the upstream operational table; the October 5 printer_jobs table below is a historical snapshot and should not be used as a current SELECT * schema. Dev-only purchases.processed_by_retailer_user_id, purchase_line_items.pre_discount_value_cents, and kitchen_dispatch_items.is_surplus were also removed from dev customer views for parity; use purchase_line_items.is_surplus for the sale-line flag. These changes are detailed in the changelog. Other customer datasets, especially production, must be verified separately.
BigQuery view metadata reports nullable columns even when a source column has a database default or NOT NULL constraint. Do not derive source constraints from this inventory. Types and names are those advertised by the customer views, not the upstream PostgreSQL schema. All tables below are read-only views scoped to the customer; joins and money rules are in the guide.
Planned, not part of the 414-field inventory: Price clusters are defined in the source model but are not verified as customer views. These source fields explain the intended customer-scoped tables and relationships; they are not advertised BigQuery column types or availability promises:
| Planned table | Source fields | Meaning |
|---|---|---|
price_clusters | id (UUID), location_id (integer), name (text), version (integer), created_at, updated_at (timestamps) | Current cluster owned by location_id; version is a configuration revision, not a purchase price history. |
price_cluster_entries | cluster_id (UUID), item_id (integer), price_cents (bigint) | Configured item price in minor currency units; join cluster_id to price_clusters.id. |
price_cluster_locations | cluster_id (UUID), location_id (integer) | Child location assigned to a cluster; not necessarily every customer-visible location. |
price_cluster_applications | cluster_id (UUID), location_id (integer), item_id (integer), previous_pricing_override (JSONB) | Currently applied location/item combination; JSON stores the previous pricings and pricing_group_id keys for restoration, not the active price. |
In the planned customer views, the cluster owner must be in location_members; assignment/application locations must additionally be in location_members. Check actual BigQuery types and row availability after replication and view provisioning. See the changelog.
cost_centersdiscountsitem_accountsitem_accounts_mapitemskitchen_dispatch_eventskitchen_dispatch_item_modificationskitchen_dispatch_itemskitchen_dispatcheslocation_memberslocationsprepaid_typesprinter_jobspurchase_applied_feespurchase_line_itemspurchase_payment_methodpurchase_refund_line_itemspurchase_refund_vatspurchase_refundspurchase_vatspurchasesretailer_user_actionstab_eventstab_memberstabsvariants
cost_centers
Cost-center definitions assigned to locations and used for reporting or accounting.
| Field | BigQuery type | Meaning |
|---|---|---|
id | INT64 | Row identifier; join according to the table's documented relationships. |
uuid | STRING | UUID identifier for the cost center. |
name | STRING | Display name. |
description | STRING | Description. |
location_id | INT64 | Location identifier, scoped by this dataset's location membership. |
inherit_to_children | BOOL | Whether the definition is inherited by child locations. |
active | BOOL | Whether this definition is active. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
code | STRING | Configured reporting code. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
discounts
Current location-owned discount/voucher definitions, including gift-card configurations; not a per-purchase redemption ledger.
| Field | BigQuery type | Meaning |
|---|---|---|
id | INT64 | Identifier for this configured discount; not an applied discount or purchase ID. |
location_id | INT64 | Location that owns this discount; rows are scoped to the customer's location membership. |
name | STRING | Configured display name; not a stable reporting identifier. |
enabled | BOOL | Current enabled flag; not the historical state at purchase time. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
valid_from | TIMESTAMP | Configured start of the discount's validity period. |
valid_until | TIMESTAMP | Nullable configured end of the discount's validity period. |
type_specification | JSON | JSON defining the configured discount type and calculation; not a paid discount amount. |
code | STRING | Configured discount code; identify uniquely with location_id, not code alone. |
applies_to_alcohol | BOOL | Whether the discount configuration permits alcohol. |
program_id | STRING | Optional associated discount program identifier. |
voucher_type | STRING | Configured voucher category, such as discount code or promotion. GIFT_CARD rows are gift-card templates; stored value lives on gift cards, not vouchers. |
balance_mode | STRING | Balance-tracking mode; vouchers hold no balance, so new vouchers have NONE. Not a purchase payment method. |
max_uses | INT64 | Optional maximum overall usage count. |
times_used | INT64 | Mutable usage counter; not an individual redemption record. |
per_user_uses | INT64 | Optional maximum uses per user. |
min_order_amount_cents | INT64 | Optional minimum eligible order amount in currency minor units. |
max_discount_amount_cents | INT64 | Optional maximum discount amount in currency minor units. |
initial_balance_cents | INT64 | Initial balance on older vouchers, in currency minor units; vouchers hold no balance and new ones leave it empty. |
remaining_balance_cents | INT64 | Balance left on older vouchers, in currency minor units; no longer deducted on redemption. |
can_combine | BOOL | Whether the configuration permits combination with other discounts. |
auto_apply | BOOL | Whether this discount is configured for automatic application. |
company_id | INT64 | Optional associated company identifier. |
display_title | STRING | Current customer-facing voucher title, where configured. |
display_description | STRING | Current customer-facing voucher description, where configured. |
display_image_url | STRING | Current customer-facing voucher image URL, where configured. |
always_visible | BOOL | Whether the promotion is configured to remain visible. |
is_template | BOOL | Whether this voucher is a blueprint rather than a redeemable instance. |
template_voucher_id | INT64 | Identifier of the template voucher from which this one was created, if any. |
purchase_line_item_id | INT64 | Optional purchase-line reference for a voucher created through a purchase. |
deleted_at | TIMESTAMP | Soft-deletion time, where set; do not treat the current row as a historical sale snapshot. |
design_id | STRING | Optional voucher/gift-card design identifier. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
item_accounts
Accounting account definitions used for catalogue mapping.
| Field | BigQuery type | Meaning |
|---|---|---|
id | STRING | Row identifier; join according to the table's documented relationships. |
account | STRING | Configured accounting account code. |
description | STRING | Accounting account description. |
location_id | INT64 | Location identifier, scoped by this dataset's location membership. |
company_id | INT64 | Company associated with this account, if any. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
inherit_to_children | BOOL | Whether child locations inherit this account. |
item_accounts_map
Links catalogue items to accounting accounts.
| Field | BigQuery type | Meaning |
|---|---|---|
id | STRING | Row identifier; join according to the table's documented relationships. |
item_id | INT64 | Catalogue item (items.id). |
account_id | STRING | Accounting account (item_accounts.id). |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
items
Current catalogue items; not historical purchase-line snapshots.
| Field | BigQuery type | Meaning |
|---|---|---|
id | INT64 | Row identifier; join according to the table's documented relationships. |
company_id | INT64 | Internal identifier/reference; confirm the target table before joining. |
location_id | INT64 | Location identifier, scoped by this dataset's location membership. |
title | STRING | Current catalogue item title; a past sale keeps its own line title. |
description | STRING | Current catalogue description. |
old_image_url | STRING | Legacy image URL. |
ingredients | STRING | Configured ingredient text for the current catalogue item. |
weight | INT64 | Configured weight value; unit is not standardized in this reporting contract. |
discount_percentage | INT64 | Catalogue-level discount configuration; not a sale-line discount snapshot. |
base_price | INT64 | Catalogue base price; not an authoritative historical sale amount. |
deleted | BOOL | Catalogue deletion flag; not evidence that an old purchase was canceled. |
created_date | TIMESTAMP | Time this catalogue record was created. |
integration_id | INT64 | Associated integration identifier. |
integration_item_id | STRING | Item's identifier in an external integration. |
producer | STRING | Configured product producer text. |
weight_string | STRING | Display text for the configured weight. |
semafor_image_url | STRING | Legacy/integration image URL. |
vat_id | INT64 | Standard VAT configuration reference. |
images | JSON | Catalogue image metadata as JSON. |
matabas_product_id | STRING | Internal identifier/reference; confirm the target table before joining. |
full_price | BOOL | Catalogue pricing flag; not a paid sale-line amount. |
image_url | STRING | Current image URL. |
karma_cut_percentage | INT64 | Configured platform-share percentage; not a purchase fee row. |
type | STRING | Catalogue item category/type. |
made_to_order | BOOL | Whether the catalogue item is prepared on demand. |
context | JSON | Context JSON; contents depend on the producing workflow and can change. |
title_prep | STRING | Preparation-facing item title. |
prep_time_minutes | INT64 | Configured preparation duration in minutes. |
coursing_order | INT64 | Configured course ordering for the item. |
purchase_cost_cents | INT64 | Configured purchase cost in currency minor units; not a sale amount. |
is_alcohol | BOOL | Boolean flag for the named property; not a purchase-finality test. |
is_available | BOOL | Current availability, not historical sale availability. |
item_type | STRING | Extensible catalogue classification, not a closed enum; distinct from the recorded sales-line item_type. |
parent_item_id | INT64 | Parent catalogue item, when inherited/related. |
is_inherited | BOOL | Whether this record inherits catalogue data. |
source_location_id | INT64 | Source location for an inherited catalogue item. |
overridden_fields | JSON | JSON describing fields overridden locally. |
inherit_to_children | BOOL | Whether this catalogue record can be inherited by child locations. |
inheritance_updated_at | TIMESTAMP | Last inheritance-related update. |
allowed_overrides | JSON | JSON describing fields permitted to be overridden. |
variable_pricing | BOOL | Whether variable pricing is configured. |
color | STRING | Catalogue display color. |
takeaway_vat_id | INT64 | Takeaway VAT configuration reference. |
min_price_cents | INT64 | Configured minimum price in currency minor units. |
max_price_cents | INT64 | Configured maximum price in currency minor units. |
preparation | STRING | Configured preparation instructions/text. |
kitchen_sort_order | INT64 | Configured kitchen display order. |
metadata | JSON | Partner-specific JSON identifiers; case-sensitive and not a historical sale snapshot. |
ean | STRING | Configured EAN barcode, if present. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
takeaway_account_id | STRING | Accounting account used for takeaway, when configured. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
kitchen_dispatch_events
Events recorded against kitchen dispatches.
| Field | BigQuery type | Meaning |
|---|---|---|
uuid | STRING | UUID-shaped row identifier; join according to the table's documented relationships. |
kitchen_dispatch_id | STRING | Reference to kitchen_dispatches.uuid. |
event | STRING | Kitchen dispatch event name. |
comment | STRING | Optional event comment. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
meta_data | JSON | Extensible JSON metadata; keys are case-sensitive and not a universal integration contract. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
kitchen_dispatch_item_modifications
Variant/modification links recorded against kitchen lines.
| Field | BigQuery type | Meaning |
|---|---|---|
id | INT64 | Row identifier; join according to the table's documented relationships. |
kitchen_dispatch_item_id | STRING | Kitchen item (kitchen_dispatch_items.uuid). |
variant_id | INT64 | Catalogue variant (variants.id). |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
status | STRING | Modification lifecycle status. |
quantity_cents | INT64 | Quantity in hundredths of one unit; 150 means 1.5 units. |
price_cents | INT64 | Modification price in currency minor units. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
kitchen_dispatch_items
Kitchen preparation/order lines; not equivalent to completed sales.
| Field | BigQuery type | Meaning |
|---|---|---|
uuid | STRING | UUID-shaped row identifier; join according to the table's documented relationships. |
kitchen_dispatch_id | STRING | Parent kitchen dispatch (kitchen_dispatches.uuid). |
sale_item_id | INT64 | Source sale-item identifier where populated; not purchase_line_items.id. |
tab_member_id | STRING | Tab member associated with this line. |
price | INT64 | Kitchen/order-side price; use purchase lines for paid sale amounts. |
discount | INT64 | Order-side per-unit adjustment; negative when a price was raised, not a reliable discount amount. Discounts given before payment are already in price. |
comments | JSON | Order-line notes/JSON; may contain customer-provided text. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
tab_settlement_id | STRING | Internal identifier/reference; confirm the target table before joining. |
base_price | INT64 | Order-side base price; not the historical paid sale-line total. |
split_of_kitchen_dispatch_item | STRING | Original kitchen line when this line was split. |
status | STRING | Kitchen-item workflow status; not purchase finality. |
paid_amount | INT64 | Kitchen-side payment allocation; not the purchase total. |
coursing_order | INT64 | Course ordering of this kitchen line. |
item_id | INT64 | Reference to a catalogue item (items.id) where populated. |
quantity_cents | INT64 | Quantity in hundredths of one unit; 150 means 1.5 units. |
parent_kitchen_dispatch_item_id | STRING | Parent kitchen line, where this line is a child/add-on. |
upsell_source | STRING | Source of an upsell association, if recorded. |
upsell_session_id | STRING | Internal identifier/reference; confirm the target table before joining. |
upsell_recommendation_id | STRING | Internal identifier/reference; confirm the target table before joining. |
quantity | INT64 | Quantity in whole-unit compatibility form; use quantity_cents for fractional lines. |
variants | JSON | Selected variant detail as JSON; do not treat as independent purchase lines. |
discount_details | JSON | Order-side discount detail as JSON; integration-specific, not a reporting contract. A pending source migration drops this column; do not depend on it. |
item_state | STRING | Item-level kitchen state; not a purchase state. |
is_takeaway | BOOL | Line-level takeaway choice; more precise than a tab_type shortcut. |
pre_order | BOOL | Whether this item belongs to a pre-order flow. |
context | JSON | Context JSON; contents depend on the producing workflow and can change. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
item_type | STRING | Kitchen item classification; not purchase_line_items.type. |
surplus_entry_id | INT64 | Surplus entry associated with this line, if any. |
fired_at | TIMESTAMP | Time the line was fired to preparation, if available. |
vat_rate_basis_points | INT64 | VAT rate in basis points (1200 = 12%). |
external_line_id | STRING | Internal identifier/reference; confirm the target table before joining. |
Historical metadata exception (staging, 2026-09-28): zero_ticket was queryable as BOOL, but an older customer view's stored schema did not advertise it. It is now advertised as BOOL in the checked development and staging customer views as of October 8, 2026. Check other datasets independently.
kitchen_dispatches
Kitchen orders/dispatches, which can be separate from payments.
| Field | BigQuery type | Meaning |
|---|---|---|
uuid | STRING | UUID-shaped row identifier; join according to the table's documented relationships. |
tab_id | STRING | Tab (tabs.uuid). |
daily_ordinal_number | INT64 | Daily display/order sequence; not a stable purchase identifier. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
desired_pickup_time | TIMESTAMP | Requested pickup time. |
store_commitment_timeout | TIMESTAMP | Store commitment deadline. |
time_slot_id | INT64 | Selected time-slot identifier. |
time_slot_starts_at | TIMESTAMP | Selected time-slot start. |
time_slot_ends_at | TIMESTAMP | Selected time-slot end. |
latest_state | STRING | Kitchen dispatch lifecycle state; not a completed payment. |
location_id | INT64 | Location identifier, scoped by this dataset's location membership. |
tab_member_id | STRING | Tab member associated with this kitchen dispatch. |
source | STRING | Order source/channel. |
message | STRING | Kitchen/order message; may contain customer-provided text. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
external_order_id | STRING | External platform's order identifier. |
external_order_number | STRING | External display/order number. |
metadata | JSON | Extensible JSON metadata; keys are case-sensitive and not a universal integration contract. |
location_members
Location IDs included in this customer dataset's access scope.
| Field | BigQuery type | Meaning |
|---|---|---|
id | INT64 | Location ID included in this customer's hierarchy and dataset scope. |
locations
Limited, customer-scoped location details.
| Field | BigQuery type | Meaning |
|---|---|---|
location_id | INT64 | Location identifier (same namespace as purchases.location_id). |
name | STRING | Location display name. |
external_name | STRING | Location's external name. |
country | STRING | Country code/label as exposed by the view; not a timezone. |
metadata | JSON | Limited customer-visible location JSON; not a source of guaranteed timezone or all private keys. |
prepaid_types
Configured prepaid payment types, labels, and reporting codes.
| Field | BigQuery type | Meaning |
|---|---|---|
id | STRING | Row identifier; join according to the table's documented relationships. |
location_id | INT64 | Location identifier, scoped by this dataset's location membership. |
code | STRING | Configured reporting code; use this rather than a display label for mappings. |
label | STRING | Human-readable prepaid method label. |
sort_order | INT64 | Display ordering. |
cost_center_id | INT64 | Linked cost center, if configured. |
requires_comment | BOOL | Whether a comment is required when using this type. |
archived_at | TIMESTAMP | Time the prepaid type was archived, if archived. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
printer_jobs
Operational print jobs; rendered content can be binary.
| Field | BigQuery type | Meaning |
|---|---|---|
id | STRING | Row identifier; join according to the table's documented relationships. |
printer_group_id | STRING | Printer group intended for the job. |
claimed_by_printer | STRING | Printer that claimed the job, if any. |
kitchen_dispatch_id | STRING | Related kitchen dispatch, if this is a kitchen print. |
tab_id | STRING | Related tab, if this is a tab/receipt print. |
retries | INT64 | Number of print attempts/retries. |
content | JSON | Original print content; inspect its type before using it in a connector. |
meta_data | JSON | Extensible JSON metadata; keys are case-sensitive and not a universal integration contract. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
latest_state | STRING | Most recent print-job state; not a sale state. |
idempotency_key | STRING | Deduplication key for creating the print job. |
correlation_id | STRING | Correlation identifier for tracing the print request. |
origin_service | STRING | Service that produced the print job, where recorded. |
target_printer_id | STRING | Explicit printer target, when provided. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
rendered_media_type | STRING | MIME/media type of rendered output. |
rendered_at | TIMESTAMP | Time rendered output was created. |
rendered_content | BYTES | Raw rendered print payload (BYTES); cast to Base64 only for a consumer that needs it. |
purchase_applied_fees
Commercial/payment fees associated with a purchase, not sold articles.
| Field | BigQuery type | Meaning |
|---|---|---|
id | INT64 | Row identifier; join according to the table's documented relationships. |
purchase_id | INT64 | Reference to purchases.id; for refunds this is the ORIGINAL sale. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
charged_amount_cents | INT64 | Commercial fee charged, in currency minor units; not a product sale. |
vat_amount_cents | INT64 | VAT included in the applied fee, in currency minor units. |
vat_rate_basis_points | INT64 | VAT rate in basis points (1200 = 12%). |
fee_type | STRING | Configured fee category. |
contract_fee_id | INT64 | Contract fee definition, when applicable. |
price_plan_stage_fee_id | INT64 | Price-plan fee definition, when applicable. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
fee_rule_id | STRING | Matched fee rule, when applicable. |
charge_mode | STRING | How/when this fee is charged. |
usage_accumulated_at | TIMESTAMP | Time fee usage was accumulated, if applicable. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
purchase_line_items
Sale/payment lines belonging to purchases.
| Field | BigQuery type | Meaning |
|---|---|---|
id | INT64 | Stable line identifier; unique within this environment. |
type | STRING | product (goods), tip (gratuity), or amount (unallocated tab payment). |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
purchase_id | INT64 | Reference to purchases.id; for refunds this is the ORIGINAL sale. |
title | STRING | Title saved with this sale; prefer over current catalogue title for receipts. |
final_amount_cents | INT64 | VAT-inclusive, post-discount PER-UNIT amount in currency minor units. |
vat_rate_basis_points | INT64 | VAT rate in basis points (1200 = 12%). |
vat_amount_cents | INT64 | VAT component per unit, in currency minor units. |
article_no | STRING | Internal/fiscal reference; not guaranteed to match a customer's SKU. |
quantity | INT64 | Quantity in whole-unit compatibility form; use quantity_cents for fractional lines. |
parent_line_item_id | INT64 | Parent sale-line ID when recorded; split amount allocations can be flat. Kitchen parent links may recover the relationship within the same purchase. |
applied_total_discount_amount_cents | INT64 | VAT-inclusive discount on the whole line. On ledger tabs every discount on the line for this payment, given before or at payment; on other tabs the payment-time discount, such as a voucher. Paid line = total_amount_cents minus this discount. |
origin_item_id | INT64 | Recorded catalogue item ID when present; a kitchen_dispatch_item_id link can recover item identity on some third-party lines with a NULL origin. |
applied_modifications | JSON | Inline pricing/modification JSON; not automatically extra sale rows. |
quantity_cents | INT64 | Quantity in hundredths of one unit; 150 means 1.5 units. |
total_amount_cents | INT64 | Whole-line total before the line's discount (applied_total_discount_amount_cents). On ledger tabs the price before every discount; on other tabs a discount given on the item before payment is already in it. Do not multiply by quantity. |
total_vat_amount_cents | INT64 | Whole-line VAT in currency minor units; historical discounted rows can be pre-discount. Use purchase_vats for purchase-level reporting. |
kitchen_dispatch_item_id | STRING | Related kitchen_dispatch_items.uuid, where linked. |
total_with_modifications_cents | INT64 | Pre-discount total including modifications; nullable receipt-oriented field. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
item_type | STRING | Extensible sales-line text, not a closed enum. Keep regular/surplus; exclude service_fee, marketplace_fee and marketplace_discount; hold unknown values for review. |
is_surplus | BOOL | Marks a surplus product; surplus is still a real sale. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
purchase_payment_method
Purchase-level payment method details and later provider enrichment.
| Field | BigQuery type | Meaning |
|---|---|---|
id | INT64 | Row identifier; join according to the table's documented relationships. |
purchase_id | INT64 | Purchase this payment-method detail describes; keep purchase as the reporting grain. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
brand | STRING | Provider method/brand or prepaid display label; not a universal tender-code enum. |
last4 | STRING | Last four card digits when supplied; sensitive payment detail. |
shopper_ref | STRING | Provider shopper reference, if supplied; handle as sensitive data. |
alias | STRING | Provider payment alias, if supplied. |
funding_source | STRING | Provider enrichment; not a complete standalone tender classification. |
issuer_country | STRING | Issuer country when returned by the payment provider. |
card_bin | STRING | Card BIN when supplied; handle as sensitive payment detail. |
card_fingerprint | STRING | Provider card fingerprint, if supplied; handle as sensitive data. |
psp_fingerprint | STRING | Provider fingerprint, if supplied; handle as sensitive data. |
payment_account_reference | STRING | Provider account reference, if supplied; handle as sensitive data. |
matched_user_id | INT64 | Karma user associated by payment-method matching, where available. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
payment_method_variant | STRING | Provider-specific variant, when supplied. |
payment_method_id | STRING | Karma payment-method UUID; prepaid configuration joins to prepaid_types.id. Not the partner reporting code. |
prepaid_type_code | STRING | String reporting code snapshotted at payment time; location-scoped, nullable historically, and not guaranteed to match later-edited configuration. |
purchase_refund_line_items
Refund allocations to original purchase lines; monetary amounts do not establish returned quantities.
| Field | BigQuery type | Meaning |
|---|---|---|
id | INT64 | Row identifier; join according to the table's documented relationships. |
purchase_refund_id | INT64 | Reference to purchase_refunds.id. |
purchase_line_item_id | INT64 | Reference to the original purchase_line_items.id. |
total_amount_cents | INT64 | Positive monetary amount allocated to the original line, not units returned. |
seller_amount_cents | INT64 | Seller's portion of the refund allocation in currency minor units. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
quantity_cents (not in this October 5 snapshot) | INT64 | Available in checked development and staging views since October 8; explicit refunded product quantity in hundredths of a unit (100 = one unit), NULL for amount-only or historical allocations. Check your view before querying. |
Historical rollout note: quantity_cents became advertised as INT64 in a checked development customer view on October 5, 2026. As of October 8 it is also advertised in the checked staging customer view; no production customer-view availability is claimed. See the changelog.
purchase_refund_vats
Refunded VAT amounts grouped by VAT rate.
| Field | BigQuery type | Meaning |
|---|---|---|
purchase_refund_id | INT64 | Reference to purchase_refunds.id. |
vat_rate_basis_points | INT64 | VAT rate in basis points (1200 = 12%). |
refunded_vat_amount_cents | INT64 | Positive VAT magnitude refunded at this rate. |
id | INT64 | Row identifier; join according to the table's documented relationships. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
purchase_refunds
Refund attempts/results referring to original purchases.
| Field | BigQuery type | Meaning |
|---|---|---|
id | INT64 | Identifier for this refund attempt/result; use separately from the original purchase ID. |
purchase_id | INT64 | Original purchase (purchases.id); inspect its state: technical zero-refunds can reference failed purchases. |
psp_request_ref | STRING | Provider reference for the refund request, if available. |
psp_response_ref | STRING | Provider reference returned for the refund, if available. |
psp_refunded_amount_cents | INT64 | Amount reported refunded by the provider, when known; for confirmed refunds use this before falling back to amount_cents. |
psp_karma_provided_ref | STRING | Karma-supplied provider correlation reference, if available. |
state | STRING | pending, canceled, confirmed, or failed; only confirmed is a finalized refund. |
reason | STRING | Free-text refund reason. |
initiated_by | STRING | Actor that initiated the refund, where recorded. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
refunded_fee_amount_cents | INT64 | Amount of fees refunded, if known. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
amount_cents | INT64 | Nullable requested/recorded refund magnitude in currency minor units; may be NULL even on a confirmed refund. |
idempotency_key | STRING | Deduplication key used for this refund request. |
cr_receipt_id | STRING | Nullable fiscal refund/credit receipt reference; not the original sale receipt. |
cr_registered_at | TIMESTAMP | Nullable time the confirmed refund was later registered with the cash register. |
purchase_vats
VAT totals grouped by rate for each purchase.
| Field | BigQuery type | Meaning |
|---|---|---|
purchase_id | INT64 | Reference to purchases.id; for refunds this is the ORIGINAL sale. |
vat_rate_basis_points | INT64 | VAT rate in basis points (1200 = 12%). |
vat_amount_cents | INT64 | Purchase VAT total for this rate, in currency minor units. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
id | INT64 | Row identifier; join according to the table's documented relationships. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
purchases
One purchase/payment record; the primary sales reporting grain.
| Field | BigQuery type | Meaning |
|---|---|---|
id | INT64 | Stable per-purchase key in this environment; use for a per-purchase export. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
intent_id | STRING | Payment-intent UUID used to correlate the payment attempt. |
psp | STRING | Payment provider/type; combine with purchase_payment_method for tender details. |
psp_request_ref | STRING | Provider reference on payment request, when present. |
psp_response_ref | STRING | Provider reference returned after payment, when present. |
state | STRING | pending, canceled, confirmed, or failed; only confirmed is a finalized purchase. |
location_id | INT64 | Location identifier, scoped by this dataset's location membership. |
paying_tab_member_id | STRING | Nullable tab-member reference; LEFT JOIN to tab_members.uuid, then tab_members.tab_id to tabs.uuid. A confirmed purchase may have no tab member. |
paying_user_id | INT64 | Paying Karma user, when known. |
currency_code | STRING | ISO 4217 currency code for the purchase amount. |
legacy_payment_id | INT64 | Link to a legacy payment, only when applicable. |
cr_receipt_id | STRING | Nullable cash-register receipt reference; not a universal sale key. |
search_tags | STRING | Optional searchable text with related references; not an export key. |
purchased_at | TIMESTAMP | UTC payment-confirmation instant; BigQuery exposes it as TIMESTAMP. |
psp_karma_provided_ref | STRING | Karma-supplied provider correlation reference, when present. |
terminal_id | STRING | Terminal identifier, when payment involved a terminal. |
initiated_by_service | STRING | Service that initiated the purchase, where recorded. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
metadata | JSON | Extensible JSON metadata; keys are case-sensitive and not a universal integration contract. |
amount_cents | INT64 | Nullable purchase/payment amount in currency minor units, including NULL on ordinary POS sales; not a universal paid-total column. |
version | INT64 | Internal version of the purchase row; not an API/schema version. |
idempotency_key | STRING | Purchase request deduplication key, where populated. |
disputed | BOOL | Whether the purchase has a dispute flag. |
psp_fee_forward_rule_id | STRING | Fee forwarding rule, if matched. |
psp_fee_forwarded | BOOL | Whether provider-fee forwarding was recorded. |
retailer_user_actions
Operational audit actions by retailer users; not sales or payments.
| Field | BigQuery type | Meaning |
|---|---|---|
id | INT64 | Row identifier; join according to the table's documented relationships. |
action | STRING | Recorded retailer user action. |
retailer_user_id | INT64 | Actor retailer user identifier. |
location_id | INT64 | Location identifier, scoped by this dataset's location membership. |
metadata | JSON | Extensible JSON metadata; keys are case-sensitive and not a universal integration contract. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
action_type | STRING | Action classification. |
entity_type | STRING | Type of entity affected. |
entity_id | INT64 | Identifier of entity affected. |
changes | JSON | JSON describing the change. |
ip_address | STRING | Actor IP address; sensitive audit information. |
user_agent | STRING | Actor user-agent string; sensitive audit information. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
tab_events
State/events recorded against a tab.
| Field | BigQuery type | Meaning |
|---|---|---|
uuid | STRING | UUID-shaped row identifier; join according to the table's documented relationships. |
tab_id | STRING | Reference to tabs.uuid. |
event | STRING | Tab event name. |
comment | STRING | Optional event comment. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
tab_members
Participation/payment identity within a tab.
| Field | BigQuery type | Meaning |
|---|---|---|
uuid | STRING | Tab member UUID; purchases.paying_tab_member_id points here. |
tab_id | STRING | Parent tab UUID (tabs.uuid). |
storefront_session_id | STRING | Storefront session reference, when applicable. |
initiator | BOOL | Whether this member initiated the tab. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
member_type | STRING | Type of tab participant. |
user_id | INT64 | Customer/user ID, when known. |
retail_user_id | INT64 | Retail user ID, when known. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
auto_pay_payment_method_id | STRING | Auto-pay method reference, if configured. |
tabs
Ordering/payment container; a tab can have multiple purchases.
| Field | BigQuery type | Meaning |
|---|---|---|
uuid | STRING | Tab UUID; not a per-purchase/receipt ID. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
location_id | INT64 | Location identifier, scoped by this dataset's location membership. |
storefront_qr_code_id | STRING | Internal identifier/reference; confirm the target table before joining. |
selected_payment_flow | STRING | Payment-flow selection for the tab. |
latest_state | STRING | Tab lifecycle state; not a finalized sale test. |
order_amount | INT64 | Legacy/order-side amount; confirm semantics before financial reporting. |
paid_amount | INT64 | Legacy/order-side paid amount; use monetary purchase records for sales. |
tip_amount | INT64 | Tab-side gratuity amount; reconcile separately from goods. |
tab_type | STRING | Table, takeaway, or over-the-counter context; not a definitive consumption flag. |
coursing_order | INT64 | Course ordering recorded on the tab. |
payment_mode | STRING | Tab payment mode. |
total_amount_cents | INT64 | Tab total in currency minor units; not one purchase amount. |
paid_amount_cents | INT64 | Amount paid on the tab (non-tip lines of confirmed purchases minus confirmed refunds), in currency minor units. Fee lines count in paid but not in total_amount_cents, so paid can exceed the total, as on marketplace orders with a booked delivery fee. |
payment_split | INT64 | Tab split-payment configuration/value. |
booking_id | STRING | Related booking, if any. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
remaining_balance_cents | INT64 | Outstanding tab balance in currency minor units: total_amount_cents minus paid_amount_cents, never below zero. |
cost_center_id | INT64 | Selected cost center, if any. |
external_ref | STRING | External system reference, if any. |
external_source | STRING | Source of the external reference. |
external_fetched_at | TIMESTAMP | Time external tab data was fetched. |
metadata | JSON | Extensible JSON metadata; keys are case-sensitive and not a universal integration contract. |
service_fee_charged_intent_id | STRING | Internal identifier/reference; confirm the target table before joining. |
service_fee_charged_at | TIMESTAMP | Timestamp of the named event; not necessarily sale time. |
pos_owns_total | BOOL | Whether the POS owns the tab total. |
variants
Current variant/add-on catalogue definitions; not historical sale snapshots.
| Field | BigQuery type | Meaning |
|---|---|---|
id | INT64 | Row identifier; join according to the table's documented relationships. |
variant_group_id | INT64 | Variant group identifier. |
amount | INT64 | Configured variant amount; not an authoritative sale-line amount. |
type | STRING | Variant category/type. |
default_selection | BOOL | Whether preselected in the catalogue. |
name | STRING | Current variant display name; not a historical sale-line title. |
description | STRING | Current variant description; not a historical sale-line snapshot. |
meta_data | JSON | Extensible JSON metadata; keys are case-sensitive and not a universal integration contract. |
created_at | TIMESTAMP | Time this row was created; not necessarily when payment completed. |
updated_at | TIMESTAMP | Time this row was last updated; child-table updates need separate tracking. |
rank | INT64 | Display ordering. |
item_id | INT64 | Associated catalogue item (items.id), if a standalone item backs the variant. |
quantity | INT64 | Quantity in whole-unit compatibility form; use quantity_cents for fractional lines. |
allow_quantity_change | BOOL | Whether the variant quantity may be adjusted. |
min_quantity | INT64 | Configured minimum quantity in whole-unit compatibility form. |
max_quantity | INT64 | Configured maximum quantity in whole-unit compatibility form. |
quantity_cents | INT64 | Configured variant quantity in hundredths of a unit. |
min_quantity_cents | INT64 | Minimum configured quantity in hundredths. |
max_quantity_cents | INT64 | Maximum configured quantity in hundredths. |
datastream_metadata | STRUCT<uuid STRING, source_timestamp INT64> | Replication metadata (including source timestamp); not a business-event time or promised export cursor. |
Planned: tab ledger (not in this view inventory)
The tab ledger records what a tab owes, every discount by name and source, and how each payment and refund is spread over the tab's lines. It is defined in the source model but not verified as customer views. The fields below are PostgreSQL source fields, not advertised BigQuery types or availability promises. Every ledger identifier is a time-ordered UUID (version 7). Every ledger table is append-only: a correction is a new row with reverses_id pointing at the row it cancels, never an edit. A payment's discharge is recorded once, from the purchase's lines when it turns confirmed; it is reversed only if the purchase leaves confirmed or its payer moves to another tab.
| Planned table | Source fields | Meaning |
|---|---|---|
ledger_accounts | id (UUID), currency (text), created_at | One account per owner; a ledger tab points at it with tabs.ledger_account_id. |
ledger_charges | id, account_id, reverses_id (UUID), amount_cents (integer), created_at | Gross amount owed per charge. |
item_charges | charge_id, kitchen_dispatch_item_id (UUID), quantity_cents, unit_price_cents (integer) | Charge for one order line. |
fee_charges | charge_id (UUID), fee_type (text) | Charge for a fee or other non-item line; not part of the tab total. |
charge_tax_rates | charge_id (UUID), tax_rate_bps (integer) | VAT rate per charge; no row when the rate is unknown. |
ledger_reductions | id, charge_id, reverses_id (UUID), amount_cents (integer), created_at | Discount amount taken off a charge. |
account_discounts | id, account_id (UUID), label, kind (text), value (numeric), created_at | Applied discount: name, kind and value. Its source is the source table that points at it. Not the discounts definitions. |
discount_reductions | reduction_id, discount_id (UUID), quantity_cents (integer) | Which applied discount each reduction belongs to, over which quantity; over whole units the same amount on every unit. |
tab_purchase_discounts | discount_id, purchase_intent_id (UUID), scope (text) | The payment attempt each applied discount came with. scope payment: bound to that payment (join purchase_intent_id to purchases.intent_id); order: given on the items before payment. A discount without a row is an item discount, such as one given by staff. |
voucher_discounts | discount_id (UUID), voucher_reservation_id (integer) | Discount from one redeemed Karma voucher; one discount per voucher. |
manual_discounts | discount_id, kitchen_dispatch_item_id (UUID), retailer_user_id (integer), reason (text) | Discount given by staff. |
ledger_discharges | id, account_id, reverses_id (UUID), amount_cents (integer), created_at | Amount paid (positive) or refunded (negative), tips excluded. |
ledger_allocations | id, discharge_id, charge_id, reverses_id (UUID), amount_cents (integer), created_at | Part of a discharge applied to one charge. |
Existing views gain tabs.ledger_account_id, purchases.discharge_id, and purchase_refunds.discharge_id (UUID); all three are NULL outside the ledger. Only tabs created after the ledger is enabled get an account. When the ledger cannot record a change, the change still goes through, the tab leaves the ledger (ledger_account_id becomes NULL) and its account stops growing. A discount given before payment lowers the kitchen line's price (the ledger writes it). Every discount, given before or at payment, is in applied_total_discount_amount_cents of the purchase lines that pay for its items, whose total_amount_cents is the price before every discount. Every discount is its own applied discount with its own name, and a purchase's lines are derived from what the ledger planned for that payment. Integration-specific discount detail and the ledger's internal pricing and payment-coverage tables are not planned as customer views. Ledger rows carry no location_id: planned views scope them through the owning tab's location_id in location_members. Existing purchase, kitchen and tab columns keep their meaning; purchase lines say price, discount and net, as a voucher's line does. Check the changelog for rollout status; these tables are not included in the counts above.