Appearance
PCT Data Contract
This document specifies the data entities and columns that a data provider must deliver via the Plato Connector Target (PCT). Each entity corresponds to a CSV file pushed to S3.
General Requirements
- File Format: All files must be in CSV format with comma-separated values
- Encoding: UTF-8 encoding is required
- Header Row: The first row must contain column names exactly as specified below
- Quoting: Fields containing commas, newlines, or double quotes must be enclosed in double quotes. Double quotes within a field must be escaped by doubling them (e.g.
"She said ""hello""). - Data Types:
- All fields are treated as strings unless otherwise noted
- Timestamp fields: RFC 3339 format, e.g.
2017-05-25T00:00:00.000Z; must be UTC (Zsuffix), or have a numerical offset (e.g.+02:00). UTC is preferred. - Date-only fields: must be
yyyy-MM-dd, e.g.2026-12-01 - Numeric fields: Use decimal notation (e.g.
123.45). Integer values do not need a decimal point (e.g.42not42.0). Do not use thousands separators (e.g.1234567not1,234,567) - Boolean fields: Use
true/false,1/0, oryes/noconsistently
Data Delivery
Data is delivered as CSV files to an S3 bucket that Plato sets up for you. The folder you write a file into tells Plato three things: whose data it is, which operation it is, and which entity it contains.
data/{tenant}/reconcile/{EntityName}/{version}/{batchid}
data/{tenant}/update/{EntityName}/{version}
data/{tenant}/delete/{EntityName}/{version}A delivery is one export session of yours: everything that one export run uploads. It contains all the tenants and all the operations (reconcile, update, delete) that this export is meant to send. Every delivery ends with exactly one success file at the fixed path data/success (see Signalling Delivery Completion).
The path ends at the folder: you do not choose a file name. Plato's Push API names every uploaded file itself, from the time of the upload. To deliver several files for the same entity, upload each one to the same path.
Path segments:
| Segment | What to put there | Example |
|---|---|---|
data | Always the literal word data. | data |
{tenant} | The identifier Plato assigns to your company. Plato gives it to you during onboarding; use it exactly as given. If your data is split into several separately delivered units (e.g. one per legal entity), Plato assigns one identifier per unit. | acme |
| operation | reconcile, update or delete, in lower case (see Operations below). | reconcile |
{EntityName} | The entity name in UpperCamelCase / PascalCase, exactly as in the headings of this document (e.g. Customers, OrderLines, ProductVariants). | Customers |
{version} | The version of this data contract: 1 for this document. Only the number, without a v prefix. | 1 |
{batchid} | Reconcile only. A name you choose for one complete snapshot of the entity (see Reconcile batches below). Update and delete paths have no batch folder. | 2026-09-29_7f3c9a12 |
Operations:
| Operation | Purpose |
|---|---|
| reconcile | Full snapshot of the entity. Records missing from a new snapshot compared to the previous one are detected as deletions. |
| update | Incremental changes since the last reconcile or update. |
| delete | Explicit record deletions: the key columns of each deleted record (see Delete files below). |
These operations can be combined freely. For example, you can use reconcile for periodic full snapshots (with automatic deletion detection between snapshots) and update for intra-day incremental changes. You can also add explicit delete signals on top of either approach. If deletion detection is not required, sending all data via update alone is sufficient.
Reconcile batches
A reconcile batch is a complete snapshot of one entity: every record that currently exists. {batchid} names that snapshot.
- Choose a new, unique batch id for every snapshot. Any value that is safe in a folder name works. We recommend starting it with the date, followed by a random or sequential part, e.g.
2026-09-29_7f3c9a12. - A snapshot may consist of many files. Put all files of the same snapshot into the same
{batchid}folder. This is how you split a large snapshot, for example a first historical load of several million invoice lines, into files of a manageable size. - Plato uses only the latest batch of each entity (the batch whose files arrived last). A new batch replaces the previous snapshot as a whole. So never spread one snapshot over several batch ids: only the last one would count, and every record that is only in an earlier batch would be treated as deleted.
- A batch is part of a delivery. The delivery's success file comes after the last file of every batch in it (see Signalling Delivery Completion).
Delete files
A delete file lists records that no longer exist in your ERP, one row per record. It is processed in the same run as the reconcile and update files of its delivery.
Only the key columns are required. The key is
unique_id, except for these entities:Entity Key columns CreditMemoLinescredit_memo_line_unique_idEntityAttributeValuesentity_type,plato_attribute_keyInvoiceLinesinvoice_line_unique_idOrderLinessales_order_line_unique_idProductVariantAttributeValuesproduct_variant_unique_id,product_attribute_unique_idProductVariantGroupAttributeValuesproduct_variant_group_unique_id,product_attribute_unique_idQuoteLinesquote_line_unique_idOther columns may be present, e.g. when your export writes the full row; Plato ignores them.
Part of a regular delivery. Upload delete files to
data/{tenant}/delete/{EntityName}/{version}, before the delivery's success file (see Signalling Delivery Completion).The latest entry wins. For each record, Plato applies whichever of reconcile, update and delete arrived last. A deleted record is marked as deleted in Plato and keeps its last delivered values. If a later update or reconcile carries it again, it is live again.
A delete for a record Plato never received changes nothing.
Example paths
Each block below is one delivery, and each line one upload. The Push API adds the file name.
A reconcile snapshot of Customers, split into two files, then the success file:
data/acme/reconcile/Customers/1/2026-09-29_7f3c9a12 # upload 1: part 1 of the snapshot
data/acme/reconcile/Customers/1/2026-09-29_7f3c9a12 # upload 2: part 2 of the snapshot
data/success # upload 3: success file, after the last partAn update with the invoice lines changed since the last delivery, then the success file:
data/acme/update/InvoiceLines/1 # upload 1: the changed invoice lines
data/success # upload 2: success fileAn explicit deletion of order lines, then the success file:
data/acme/delete/OrderLines/1 # upload 1: the deleted order lines
data/success # upload 2: success fileOne export session for two tenants, acme and acme_nord, with several operations, then one success file for all of it:
data/acme/reconcile/Customers/1/2026-09-29_7f3c9a12 # upload 1: acme, Customers snapshot
data/acme/update/InvoiceLines/1 # upload 2: acme, changed invoice lines
data/acme/delete/OrderLines/1 # upload 3: acme, deleted order lines
data/acme_nord/reconcile/Customers/1/2026-09-29_4b81e0d5 # upload 4: acme_nord, snapshot part 1
data/acme_nord/reconcile/Customers/1/2026-09-29_4b81e0d5 # upload 5: acme_nord, snapshot part 2
data/success # upload 6: one success file, after uploads 1-5 have finishedSignalling Delivery Completion
Uploading data files does not start processing. At the end of each delivery (one export session, see Data Delivery), upload one success file to this path:
data/successThe path is always exactly data/success, in lower case, whichever tenants, entities and operations the delivery contains.
Rules:
- Exactly one success file per delivery. Not one per tenant, entity, export job or operation: one for the whole export session.
- Upload it only after every other upload of the delivery has finished, i.e. the Push API has answered
200 OKfor each one. Never upload it while any upload of the delivery is still running. If it arrives earlier, Plato processes an incomplete delivery; in a reconcile snapshot, the records that have not arrived yet are treated as deleted. - Contents are ignored. Any file works; Plato only reacts to its arrival.
Each success file starts one processing run, which processes the whole delivery.
Delivering Entities and Columns
Plato offers a broad set of features, and each entity and column in this contract feeds some of them. The description of every entity and column says what Plato uses it for, so you can see what your users gain from each piece of data. For CRM data supported by Plato, see https://api.platoapp.ai/docs.
TIP
We strongly recommend delivering the full extent of the PCT model, so that all Plato features are available to your users.
- Entities: deliver the entities your ERP has. Tell Plato during onboarding which entities you will not deliver, so the pipeline does not wait for their files.
- Columns: if you deliver an entity, every column listed for it must be in the header row, even if it is empty in every row. A missing column is a delivery error.
- Values: a column may be empty where your ERP has no value for it. The amount and margin columns of document lines are the exception: they are required in every row (see Amounts and Margins).
Example: your ERP has no barcodes. The ProductVariants file still has the ean and gtin columns in its header row, with empty values.
Amounts and Margins
Every document line entity (e.g. OrderLines, InvoiceLines) carries four amount columns. They are the only amounts Plato calculates with: revenue, the order sum and margins, per line and summed per document, all come from these four.
| Column | What it is |
|---|---|
total_amount_before_header_discount | Net line total before the header discount. |
total_amount_after_header_discount | Net line total after the header discount. |
gross_margin_before_header_discount | Gross margin of the line before the header discount. |
gross_margin_after_header_discount | Gross margin of the line after the header discount. |
- Plato takes these values as delivered. It converts them into your base currency with
currency_rate_to_baseand adds them up, but never recalculates them. The price, discount and cost columns (retail_price,line_discount_percentage,line_discount_amount,header_discount_percentage,line_delivery_costs,header_other_costsand the like) are information only: Plato stores them, and calculates no amount or margin from them. Deliver each line's totals and margins exactly as your ERP calculates them. - All four are required in every row. Plato reports figures both before and after the header discount, so it needs both. If your ERP has no header discount, or knows only one of the two values, deliver that same value in the
beforeand theaftercolumn. - The sign depends on the entity. Each column's description says whether to deliver it as a positive or a negative amount.
Example: an invoice line with a net total of 100.00 and a gross margin of 30.00, from an ERP that has no header discount:
total_amount_before_header_discount | total_amount_after_header_discount | gross_margin_before_header_discount | gross_margin_after_header_discount |
|---|---|---|---|
100.00 | 100.00 | 30.00 | 30.00 |
Identifiers
Most entities carry three identifier columns (link tables such as CustomerToSalesReps carry only unique_id):
| Column | What it is | Used by Plato for |
|---|---|---|
unique_id | The key of the record. | Recognising the same record in every delivery, and linking records between entities (e.g. an invoice line to its customer). |
display_id | The number your users know, e.g. the customer number. | Displaying and searching the record in the Plato app. |
resource_id | The id your ERP needs to find the record again. | Writing back to your ERP (e.g. creating orders). |
If your system uses one number for all three purposes, simply repeat the unique_id value in display_id and resource_id. Use different values only where your system needs it, e.g. when your ERP writes back via an internal id that users never see.
Rules for unique_id
- Unique within its entity. No two customers share a
unique_id, no two invoice lines share one. A customer and an invoice line may have the same value. Categories are the one exception: theirunique_idonly needs to be unique within its category tree (hierarchy_name). - Stable. A record keeps the same
unique_idin every delivery. Never re-number it or derive it from the row position or the export run. If it changes, Plato sees a deleted record and a new one, and the history and links of the old one are lost. - References use it. A column ending in
_unique_id(e.g.customer_unique_idon an invoice line) points to another record and must contain exactly that record'sunique_id, as delivered in its own file. A reference that matches no record leaves the link missing in Plato.
Transaction lines
Transaction entities (OrderLines, InvoiceLines, ...) have one row per document line and carry the identifiers twice: for the document (e.g. invoice_unique_id) and for the line (e.g. invoice_line_unique_id).
- The same applies to their display and resource ids: repeat the unique id if your system has no separate value.
- The document id is the same on every line of the document.
- The line id is unique across all lines, not just within one document. Line number
10exists on almost every invoice, so combine it with the document number, e.g.RE-2026-00017-10.
Example
Customers
unique_id | display_id | resource_id | name_1 |
|---|---|---|---|
10042 | 10042 | 10042 | Acme GmbH |
InvoiceLines
invoice_unique_id | invoice_line_unique_id | invoice_line_display_id | customer_unique_id |
|---|---|---|---|
RE-2026-00017 | RE-2026-00017-10 | 10 | 10042 |
The customer's number 10042 is repeated in all three identifier columns, and customer_unique_id is 10042 because that is the customer's unique_id. If your ERP used a separate internal key for write-back, e.g. 981, only the customer's resource_id would be 981; unique_id and customer_unique_id would stay 10042.
Entity Timestamps
Every entity has created_at and updated_at columns (see General Requirements for format). They are metadata: Plato stores them but does not use them to process your data.
| Column | Description |
|---|---|
created_at | Timestamp when the record was created in the source system. |
updated_at | Timestamp when the record was last modified in the source system. |
Delivery cadence
Every delivery starts one processing run (see Signalling Delivery Completion), so how often you deliver matters more than how much you deliver. Deliver each entity group at this cadence:
| Entity group | Delta (update and delete) | Full export (reconcile) |
|---|---|---|
| Master data: customers, customer entities, contacts, assignments, reference data, products | Once a day | On demand once deletes are delivered in the delta; weekly until then |
| Transactional data: open documents (quote and order lines), posted documents (invoice and credit memo lines), and the header and line relations | Every 30 or 60 minutes, during working hours only. The interval is configurable per installation. | On demand once deletes are delivered in the delta; weekly until then |
- Deltas carry only new and changed records. Records that have not changed since the last delivery are not sent again.
- Deletes are part of the delta. Send deleted records with the
deleteoperation (see Delete files). Once you do, Plato no longer needs regular full exports to detect deletions: it asks for areconcileonly when one is needed. Until then, send a full export once a week. Never send a full export every day. - No deliveries outside business hours or at weekends, unless data has changed in that time.
- Exceptions are agreed per installation with Plato, e.g. up to three delta deliveries at the weekend for a company that asked for weekend updates.
A freshness warning is raised after 1 day without new data; an error after 2 days.
Customer Model
The PCT data model distinguishes between Customers and CustomerEntities:
- Customers: The main business entity representing a customer account.
- CustomerEntities: Addressable units associated with a customer -- for example, a warehouse (ship-to), a billing department (invoice-to), or a purchasing office (sell-to).
- CustomerEntityRoleAssignments: Links a customer to its entities with a specific role (
SELL_TO,SHIP_TO,INVOICE_TO).
This distinction is important when a customer has different addresses for ordering, invoicing, and delivery. Sales document lines reference customer entities via sell_to_unique_id, ship_to_unique_id, and invoice_to_unique_id.
Record Status Values
Most entities carry a status column. The allowed values and their meaning in Plato:
| Status | Meaning |
|---|---|
NORMAL | Default. The record is fully visible and usable in Plato. |
BLOCKED | The record is visible in the Plato app, but excluded from writebacks and AI recommendations. |
HIDDEN | The record is not visible in the Plato app. |
Records delivered without a status are treated as NORMAL.
ProductVariants only: the product status additionally allows EXPIRED_EXTERNALLY (the manufacturer no longer produces the item; remaining stock can still be sold), IN_PREPARATION (the product is being added; not yet in stock, but it can already be sold) and EXPIRED_INTERNALLY (the item is no longer purchased or replenished; remaining stock can still be sold). Note that the Plato app currently treats blocked and hidden product variants the same way: blocked products are hidden from the app.
Plato Status
The plato_line_status field drives automatic calculation of header-level document status in Plato.
Quote Status
Line-level values: OPEN, RECEIVED, PARTIALLY_RECEIVED, LOST, CANCELLED, OTHER
Header status calculation (evaluated top to bottom, first match wins; cancelled items are excluded from evaluation unless all are cancelled; only RECEIVED items count as received):
| Header Status | EN Display | DE Display | Condition |
|---|---|---|---|
| CANCELLED | Cancelled | Storniert | All items cancelled |
| RECEIVED | Received | Erhalten | All items received |
| PARTIALLY_RECEIVED | Partially Received | Teilw. Erhalten | At least 1 item received, not all |
| LOST | Lost | Verloren | All items lost |
| OPEN | Open | Offen | All other cases |
Order Status
Line-level values: OPEN, CANCELLED, BILLED, PARTIALLY_BILLED, SHIPPED, PARTIALLY_SHIPPED, PICKED, PARTIALLY_PICKED, OTHER
Header status calculation (evaluated top to bottom, first match wins; cancelled items are excluded from evaluation unless all are cancelled):
| Header Status | EN Display | DE Display | Condition |
|---|---|---|---|
| CANCELLED | Cancelled | Storniert | All items cancelled |
| BILLED | Fully billed | Fakturiert | All items billed |
| PARTIALLY_BILLED | Partially billed | Teilweise fakturiert | At least 1 item billed, not all |
| SHIPPED | Fully delivered | Geliefert | All items delivered |
| PARTIALLY_SHIPPED | Partially delivered | Teilweise geliefert | At least 1 item delivered, not all |
| PICKED | Fully picked | Kommissioniert | All items picked |
| PARTIALLY_PICKED | Partially picked | Teilweise kommissioniert | At least 1 item picked, not all |
| OPEN | Open | Offen | No items picked |
| OTHER | Other | Anderes | Catch-all |
| UNKNOWN | Unknown | Unbekannt | Missing or inconsistent data from ERP |
Entity Relationships
The diagram below shows how entities reference each other via foreign key columns.
Customers
|-- CustomerContacts (via customer_unique_id)
|-- CustomerEntities (via CustomerEntityRoleAssignments.customer_unique_id)
|-- CustomerToSalesReps (via customer_unique_id) --> SalesReps
|
|-- OrderLines (via customer_unique_id)
|-- InvoiceLines (via customer_unique_id)
|-- QuoteLines (via customer_unique_id)
|-- CreditMemoLines (via customer_unique_id)
ProductVariants
|-- Brands (via brand_unique_id)
|-- Manufacturers (via manufacturer_unique_id)
|-- ProductsToCategories (via product_variant_unique_id) --> Categories
|-- ProductVariantToSuppliers (via product_variant_unique_id) --> Suppliers
|-- ProductVariantAttributeValues (via product_variant_unique_id)
|-- ProductVariantRelations (via product_variant_unique_id)
|-- ProductVariantGrouping --> ProductVariantGroupAttributeValues
Categories
|-- CategoriesToCategories (parent/child hierarchy)
Transaction lines (OrderLines, InvoiceLines, QuoteLines, CreditMemoLines) share:
|-- customer_unique_id --> Customers
|-- sell_to_unique_id / ship_to_unique_id / invoice_to_unique_id --> CustomerEntities
|-- product_unique_id --> ProductVariants
|-- clerk_unique_id --> Clerks
|-- currency_unique_id --> Currencies
|-- supplier_unique_id --> Suppliers
|-- storage_location_unique_id --> StorageLocations
|-- header_document_type_unique_id --> SalesDocumentTypes
|-- customer_contact_unique_id --> CustomerContacts
SalesDocumentHeaderRelations / SalesDocumentLineRelations
Link documents across types (e.g. Quote -> Order -> Invoice)Table of Contents
Master Data (24 entities)
Reference data that defines business entities and their relationships.
- Brands
- Categories
- CategoriesToCategories
- Clerks
- Currencies
- CustomerContacts
- CustomerEntities
- CustomerEntityRoleAssignments
- Customers
- CustomerToSalesReps
- EntityAttributeValues
- Manufacturers
- ProductsToCategories
- ProductVariantAndProductVariantGroupAttributes
- ProductVariantAttributeValues
- ProductVariantGroupAttributeValues
- ProductVariantGrouping
- ProductVariantRelations
- ProductVariants
- ProductVariantToSuppliers
- SalesDocumentTypes
- SalesReps
- StorageLocations
- Suppliers
Transaction Data (6 entities)
Transactional data representing business events (orders, invoices, quotes, credit memos).
- CreditMemoLines
- InvoiceLines
- OrderLines
- QuoteLines
- SalesDocumentHeaderRelations
- SalesDocumentLineRelations
Master Data Entities
Brands
Brand master data. Plato uses brands to identify brand-loyal customers, which improves the accuracy of Plato's recommendations.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
name_1 | First name line of the address, typically the company name. |
name_2 | Second name line, e.g. a name addition or a department. |
name_3 | Third name line. |
legal_entity_name | Legal entity or company name. |
telephone_number | Primary telephone number. |
email | Email address. |
mobile_number | Mobile phone number. |
fax_number | Fax number. |
address_line_1 | Street and house number. |
address_line_2 | Second address line, e.g. floor or apartment. |
address_line_3 | Third address line, e.g. c/o or a building name. |
state_or_province | State or province. |
zip_code | Postal / zip code. |
city | City name. |
country_code | ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. Plato identifies the country by this code. |
country | Name of the country, e.g. Deutschland. The country itself is identified by country_code. |
post_box | Post office box number. |
zip_code_post_box | Postal code for the post office box. |
status | Record status in your ERP. Allowed values: NORMAL, BLOCKED, HIDDEN. Tells Plato whether to use the record normally, keep it out of write-back and AI recommendations (BLOCKED) or hide it (HIDDEN); see Record Status Values. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
Categories
Category master data. Plato uses categories to build hierarchies of product variants for category-based recommendations. With hierarchy_name you can deliver several category trees, e.g. your ERP product groups (Warengruppen) or your web-shop categories.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
hierarchy_name | Name of the category tree this category belongs to, e.g. your ERP product groups (Warengruppen) or your web-shop categories. A category's unique_id only needs to be unique within its tree. Lets Plato keep several category trees apart. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
category_name | Name of the category, e.g. Power tools. Plato AI uses it for category-based recommendations. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
CategoriesToCategories
Links each category to its parent category. Plato uses these links to build the category hierarchy for category-based recommendations. Deliver one link per parent-child pair, for each category tree (hierarchy_name).
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
hierarchy_name | Name of the category tree this link belongs to. Parent and child must be in the same tree. |
parent_category_unique_id | Reference to the parent category in the hierarchy. Must equal the referenced record's unique_id; see Identifiers. Plato places the child category under this category in the category tree. |
child_category_unique_id | Reference to the child category in the hierarchy. Must equal the referenced record's unique_id; see Identifiers. The category that Plato places under the parent. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
Clerks
The people in your company who create or change sales documents in the ERP (Erfasser), e.g. inside-sales staff. Plato uses them to tell who created each quote and order and to compare the sales handled by each clerk.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
salutation | Salutation, e.g. Herr or Frau. |
first_name | First name of the clerk. Together with last_name it forms the clerk's full name in Plato. |
last_name | Last name of the clerk. Together with first_name it forms the clerk's full name in Plato. |
email | Email address of the clerk. |
telephone_number | Telephone number of the clerk. |
job_title | Job title or function of the clerk. |
department | Department or organisational unit of the clerk. |
status | Record status in your ERP. Allowed values: NORMAL, BLOCKED, HIDDEN. Tells Plato whether to use the record normally, keep it out of write-back and AI recommendations (BLOCKED) or hide it (HIDDEN); see Record Status Values. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
Currencies
The currencies your sales documents are in, including which one is your company's base currency. Plato uses them to know the currency of each amount and to convert all amounts into your base currency, so figures from documents in different currencies can be compared.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
currency_id | Your ERP's code for the currency. |
currency_iso_code | ISO 4217 currency code (e.g. EUR, USD). |
display_name | Name of the currency, e.g. Euro. |
symbol | Currency symbol, e.g. € or $. |
is_base_currency | Whether this is your base currency, i.e. your default currency. Plato uses the base currency for all monetary values. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
CustomerContacts
The contact persons at your customers, e.g. buyers or purchasing managers. Plato links each sales document to its contact person, so your sales reps know whom to talk to at each customer.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
customer_unique_id | Reference to the customer account. Must equal the referenced record's unique_id; see Identifiers. Links the contact person to its customer. |
salutation | Salutation, e.g. Herr or Frau. |
first_name | First name of the contact person. Together with last_name it forms the contact's full name in Plato. |
last_name | Last name of the contact person. Together with first_name it forms the contact's full name in Plato. |
telephone_number | Primary telephone number. |
email | Email address. |
fax_number | Fax number. |
job_title | Job title or function. |
department | Department or organisational unit. |
mobile_number | Mobile phone number. |
status | Record status in your ERP. Allowed values: NORMAL, BLOCKED, HIDDEN. Tells Plato whether to use the record normally, keep it out of write-back and AI recommendations (BLOCKED) or hide it (HIDDEN); see Record Status Values. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
CustomerEntities
The addresses and locations of your customers that orders, deliveries and invoices go to, e.g. a purchasing office (sell-to, Auftraggeber), a warehouse (ship-to, Warenempfänger) or a billing department (invoice-to, Rechnungsempfänger). Link each one to its customer and role via CustomerEntityRoleAssignments; see Customer Model. Plato uses them to know where each order is ordered from, delivered to and invoiced to.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
name_1 | First name line of the address, typically the company name. |
name_2 | Second name line, e.g. a name addition or a department. |
name_3 | Third name line. |
legal_entity_name | Legal entity or company name. |
telephone_number | Primary telephone number. |
email | Email address. |
mobile_number | Mobile phone number. |
fax_number | Fax number. |
address_line_1 | Street and house number. |
address_line_2 | Second address line, e.g. floor or apartment. |
address_line_3 | Third address line, e.g. c/o or a building name. |
state_or_province | State or province. |
zip_code | Postal / zip code. |
city | City name. |
country_code | ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. Plato identifies the country by this code. |
country | Name of the country, e.g. Deutschland. The country itself is identified by country_code. |
post_box | Post office box number. |
zip_code_post_box | Postal code for the post office box. |
status | Record status in your ERP. Allowed values: NORMAL, BLOCKED, HIDDEN. Tells Plato whether to use the record normally, keep it out of write-back and AI recommendations (BLOCKED) or hide it (HIDDEN); see Record Status Values. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
CustomerEntityRoleAssignments
Assigns each customer address (CustomerEntity) to its customer and says which role it plays there: SELL_TO (Auftraggeber), SHIP_TO (Warenempfänger) or INVOICE_TO (Rechnungsempfänger). One address can have several roles. Plato links an address to a customer only through these assignments, so deliver one assignment per customer, address and role; see Customer Model.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
customer_unique_id | Reference to the customer account. Must equal the referenced record's unique_id; see Identifiers. Links the address to its customer. |
customer_entity_unique_id | Reference to the customer entity (operational counterparty). Must equal the referenced record's unique_id; see Identifiers. Gives the customer its address for this role. |
role_type | Role the address plays for this customer: SELL_TO (Auftraggeber), SHIP_TO (Warenempfänger) or INVOICE_TO (Rechnungsempfänger). |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
Customers
Your customer accounts: the companies you sell to. The customer is at the centre of Plato: all quotes, orders, invoices and revenue are tied to a customer, and Plato AI uses each customer's purchase history for recommendations. Addresses such as ship-to and invoice-to are delivered separately as CustomerEntities; see Customer Model.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
name_1 | First name line of the address, typically the company name. |
name_2 | Second name line, e.g. a name addition or a department. |
legal_entity_name | Legal entity or company name. |
telephone_number | Primary telephone number. |
email | Email address. |
mobile_number | Mobile phone number. |
fax_number | Fax number. |
address_line_1 | Street and house number. |
address_line_2 | Second address line, e.g. floor or apartment. |
address_line_3 | Third address line, e.g. c/o or a building name. |
state_or_province | State or province. |
zip_code | Postal / zip code. |
city | City name. |
country_code | ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. Plato identifies the country by this code. |
country | Name of the country, e.g. Deutschland. The country itself is identified by country_code. |
post_box | Post office box number. |
zip_code_post_box | Postal code for the post office box. |
status | Record status in your ERP. Allowed values: NORMAL, BLOCKED, HIDDEN. Tells Plato whether to use the record normally, keep it out of write-back and AI recommendations (BLOCKED) or hide it (HIDDEN); see Record Status Values. |
industry_id | Code of the industry the customer operates in (Branche). Plato uses it to segment customers by industry. If no separate ID exists, use the same value as industry_name. |
industry_name | Name of the industry the customer operates in (Branche). Plato uses it to segment customers by industry. |
sales_area_id | Code of the sales area the customer is served through (Vertriebsgebiet). Plato uses it to segment customers by sales area. If no separate ID exists, use the same value as sales_area_name. |
sales_area_name | Name of the sales area the customer is served through (Vertriebsgebiet). Plato uses it to segment customers by sales area. |
branch_id | Code of your branch that owns the customer relationship (Niederlassung). Plato uses it to segment customers by branch. If no separate ID exists, use the same value as branch_name. |
branch_name | Name of your branch that owns the customer relationship (Niederlassung). Plato uses it to segment customers by branch. |
customer_class_id | Code of the customer's classification, usually an ABC class (A, B or C). Plato uses it to segment customers by class. If no separate ID exists, use the same value as customer_class_name. |
customer_class_name | Name of the customer's classification, usually an ABC class (A, B or C). Plato uses it to segment customers by class. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
CustomerToSalesReps
Assigns your customers to the sales reps responsible for them, as inside rep (Innendienst) or outside rep (Außendienst). A customer can have several reps. Plato uses the assignments to give each rep a view of their own customers. A sales rep's revenue in Plato is the revenue of the customers assigned to them. When Plato is set up so that reps see only their own customers, these assignments decide which customers each rep sees.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
customer_unique_id | Reference to the customer account. Must equal the referenced record's unique_id; see Identifiers. Identifies the customer the sales rep is assigned to. |
sales_rep_unique_id | Reference to the sales representative. Must equal the referenced record's unique_id; see Identifiers. Identifies the sales rep the customer is assigned to. |
sales_rep_role | Role of the rep for this customer: INSIDE_REP (Innendienst) or OUTSIDE_REP (Außendienst). |
status | Record status in your ERP. Allowed values: NORMAL, BLOCKED, HIDDEN. Tells Plato whether to use the record normally, keep it out of write-back and AI recommendations (BLOCKED) or hide it (HIDDEN); see Record Status Values. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
EntityAttributeValues
Extends any of the existing Plato entities with fields this contract does not have yet, e.g. an attribute your ERP keeps on customers or products. Each row names the entity it extends (entity_type), the attribute (plato_attribute_key) and its value. Notify Plato before you deliver an extension, so it can be agreed and put to use.
| Column | Description |
|---|---|
entity_type | The entity the attribute extends, e.g. PRODUCT_VARIANT or CUSTOMER. |
plato_attribute_key | Name of the attribute, as agreed with Plato. |
value | Value of the attribute. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
Manufacturers
The manufacturers of the products you sell. Link each product to its manufacturer via manufacturer_unique_id on ProductVariants. Plato uses them to analyse sales per manufacturer.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
name_1 | First name line of the address, typically the company name. |
name_2 | Second name line, e.g. a name addition or a department. |
name_3 | Third name line. |
legal_entity_name | Legal entity or company name. |
telephone_number | Primary telephone number. |
email | Email address. |
mobile_number | Mobile phone number. |
fax_number | Fax number. |
address_line_1 | Street and house number. |
address_line_2 | Second address line, e.g. floor or apartment. |
address_line_3 | Third address line, e.g. c/o or a building name. |
state_or_province | State or province. |
zip_code | Postal / zip code. |
city | City name. |
country_code | ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. Plato identifies the country by this code. |
country | Name of the country, e.g. Deutschland. The country itself is identified by country_code. |
post_box | Post office box number. |
zip_code_post_box | Postal code for the post office box. |
status | Record status in your ERP. Allowed values: NORMAL, BLOCKED, HIDDEN. Tells Plato whether to use the record normally, keep it out of write-back and AI recommendations (BLOCKED) or hide it (HIDDEN); see Record Status Values. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
ProductsToCategories
Assigns your product variants to their categories. A product can be in several categories, e.g. one per category tree (hierarchy_name). Plato uses these assignments to place each product in the category hierarchy for category-based recommendations.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
hierarchy_name | Name of the category tree of the referenced category, exactly as delivered in Categories. Together with category_unique_id it identifies the category. |
product_variant_unique_id | Reference to the product variant. Must equal the referenced record's unique_id; see Identifiers. Places the product variant in the category. |
category_unique_id | Reference to the category. Must equal the referenced record's unique_id; see Identifiers. Together with hierarchy_name it identifies the category. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
ProductVariantAndProductVariantGroupAttributes
The product attributes you use, e.g. length, colour or voltage, optionally following a classification standard such as ETIM. Plato uses these definitions to name and interpret the attribute values of your products and product groups.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
attribute_name | Technical name of the attribute, e.g. LENGTH. |
attribute_display_name | Name of the attribute as your users know it, e.g. Länge. |
attribute_description | Description of the attribute. |
attribute_data_type | Data type of the attribute value (e.g. string, integer, boolean). |
namespace | Namespace or standard for the attribute (e.g. ETIM). Tells Plato which standard the attribute follows. |
namespace_key | Key within the namespace (e.g. EF123456 for ETIM). |
metadata | Additional structured details as JSON. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
ProductVariantAttributeValues
The attribute values of each product variant, e.g. length 2 m or colour red. Plato uses them to assess which product variants are the same product or similar products.
| Column | Description |
|---|---|
product_variant_unique_id | Reference to the product variant. Must equal the referenced record's unique_id; see Identifiers. Together with product_attribute_unique_id it identifies the record. |
product_attribute_unique_id | Reference to the product attribute definition. Must equal the referenced record's unique_id; see Identifiers. Together with product_variant_unique_id it identifies the record. |
attribute_value | Value of the attribute, e.g. 2 or red, delivered as text. How Plato reads it is set by attribute_data_type in the attribute definition. |
metadata | Additional structured details as JSON. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
ProductVariantGroupAttributeValues
The attribute values that apply to a whole product variant group, e.g. the material shared by all sizes of one article. Plato uses them, together with the variant values, to assess which product variants are the same product or similar products.
| Column | Description |
|---|---|
product_variant_group_unique_id | Reference to the product variant group. Must equal the referenced record's unique_id; see Identifiers. Together with product_attribute_unique_id it identifies the record. |
product_attribute_unique_id | Reference to the product attribute definition. Must equal the referenced record's unique_id; see Identifiers. Together with product_variant_group_unique_id it identifies the record. |
attribute_value | Value of the attribute, e.g. 2 or red, delivered as text. How Plato reads it is set by attribute_data_type in the attribute definition. |
metadata | Additional structured details as JSON. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
ProductVariantGrouping
Products that come in several variants, e.g. a T-shirt available in several sizes and colours, or a cable in several lengths. Plato uses it to treat the variants of one product together, e.g. to recommend the product rather than one specific variant.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
name | Name of the product, e.g. T-Shirt Basic. Plato AI uses it as product text. |
description_short | Short product description. Used by Plato AI to find similar products. |
description_long | Long / detailed product description. Used by Plato AI to find similar products. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
ProductVariantRelations
How your products relate to each other: a product's accessories (ACCESSORY), the product that replaces it (REPLACEMENT), and its successor or predecessor (SUCCESSOR, PREDECESSOR). Plato uses these relations for its sales recommendations.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
product_variant_unique_id | Reference to the product variant. Must equal the referenced record's unique_id; see Identifiers. The article the relation starts from. |
related_product_variant_unique_id | Reference to the related product variant. Must equal the referenced record's unique_id; see Identifiers. The related article. |
relation_type | Type of relationship between product variants. Allowed values: REPLACEMENT, SUCCESSOR, PREDECESSOR, ACCESSORY. Tells Plato whether the related article is a replacement, successor, predecessor or accessory. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
ProductVariants
The items you sell: one row per article, e.g. each size or colour of a T-shirt. These are the products Plato recommends to your customers. Sales document lines reference them, so Plato knows what each customer bought. Plato also uses their units and packaging when it writes orders back to your ERP.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
name | Name of the product variant, e.g. T-Shirt Basic blue M. Plato AI uses it to identify the product. |
description | Product description text. Used by Plato AI as product text, in particular when no product groups are delivered. |
description_long | Long / detailed product description. Used by Plato AI to find similar products. |
retail_price | Net retail / list price of the product variant, per price_scale_factor units, e.g. the price per 100 pieces when the factor is 100. |
package_unit | Package unit of measure (e.g. carton, pallet). Used when Plato writes orders back to your ERP. Plato AI also uses it for quote recommendations. |
unit_sales | Sales unit of measure (e.g. piece, meter, kg). Used when Plato writes orders back to your ERP. Plato AI also uses it for quote recommendations. |
unit_storage | Storage unit of measure. Used when Plato writes orders back to your ERP. |
sales_unit_to_storage_unit_factor | Number of sales units in one storage unit. Defaults to 1 if not provided. Used when Plato writes orders back to your ERP. |
sales_units_per_package_unit | Number of sales units per package. Defaults to 1 if not provided. Used when Plato writes orders back to your ERP. Plato AI also uses it for quote recommendations. |
price_scale_factor | Number of units the price refers to, e.g. 100 when retail_price is the price per 100 pieces. Defaults to 1 if not provided; when sent, must be greater than 0. Used when Plato writes orders back to your ERP. |
package_can_be_broken | Whether a package can be split into individual sales units. Used when Plato writes orders back to your ERP. |
status | Record status in your ERP. Allowed values: NORMAL, BLOCKED, EXPIRED_EXTERNALLY, IN_PREPARATION, EXPIRED_INTERNALLY, HIDDEN. Tells Plato whether to use the record normally, keep it out of write-back and AI recommendations (BLOCKED) or hide it (HIDDEN); see Record Status Values. The product-only values are explained there. |
manufacturer_unique_id | Reference to the manufacturer. Must equal the referenced record's unique_id; see Identifiers. Links the article to its manufacturer for Plato's product analytics. |
manufacturer_product_variant_id | Manufacturer's own product identifier / article number. |
brand_unique_id | Reference to the brand. Must equal the referenced record's unique_id; see Identifiers. Plato AI uses the brand to identify brand-loyal customers. |
web_shop_url | URL to the product in the web shop. |
product_image_url | URL to the product image (must be web-accessible). |
gtin | Global Trade Item Number (barcode). Plato AI uses it to identify the product and similar variants. If a product has no GTIN, Plato falls back to the EAN of its main supplier (ProductVariantToSuppliers). |
partial_packing_type | Partial packing type. Used when Plato writes orders back to your ERP. Plato AI also uses it for quote recommendations. |
parts_list_type | Type of parts list (e.g. BOM, set). Used when Plato writes orders back to your ERP. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
ProductVariantToSuppliers
Which suppliers you buy each product from. A product can have several suppliers; mark the main one with is_main_supplier. Plato uses these assignments to provide supplier analytics.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
product_variant_unique_id | Reference to the product variant. Must equal the referenced record's unique_id; see Identifiers. Identifies the article the supplier assignment belongs to. |
supplier_unique_id | Reference to the supplier of the product variant. Must equal the referenced record's unique_id; see Identifiers. Identifies the supplier you buy the product from. |
supplier_product_variant_id | Supplier's own article number for the product. |
ean | European Article Number (barcode). Used by Plato AI to enrich product details and identify similar variants. If the product has no GTIN, Plato uses the EAN of its main supplier. |
is_main_supplier | Whether this is the main supplier of the product. Mark at most one supplier per product. Plato uses the main supplier when it writes orders back to your ERP. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
SalesDocumentTypes
The sales document types you use, e.g. order, quote, return or express order. You can deliver any document types, as long as each one is mapped to one Plato document family (QUOTE, ORDER, INVOICE or CREDITMEMO) in sales_document_type_family. The family tells Plato how to treat each document, e.g. whether it counts towards the order sum (Auftragseingang) or billed revenue.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
sales_document_type_family | Plato document family. Allowed values: QUOTE, ORDER, INVOICE, CREDITMEMO. Tells Plato whether the type is a quote, order, invoice or credit memo. |
name | Name of the document type, e.g. Expressauftrag. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
SalesReps
The sales representatives of your company, inside and outside reps (Innendienst and Außendienst). Assign them to customers via CustomerToSalesReps. Each Plato user can be linked to their sales rep, so they see their own customers; Plato also reports sales per rep, based on the customers assigned to them.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
salutation | Salutation, e.g. Herr or Frau. |
first_name | First name of the sales rep. Together with last_name it forms the rep's full name in Plato. |
last_name | Last name of the sales rep. Together with first_name it forms the rep's full name in Plato. |
email | Email address. |
telephone_number | Primary telephone number. |
job_title | Job title or function. |
department | Department or organisational unit. |
status | Record status in your ERP. Allowed values: NORMAL, BLOCKED, HIDDEN. Tells Plato whether to use the record normally, keep it out of write-back and AI recommendations (BLOCKED) or hide it (HIDDEN); see Record Status Values. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
StorageLocations
The warehouses and storage locations goods are shipped from. Plato uses them to compare sales per warehouse.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
name | Name of the warehouse, e.g. Zentrallager Hamburg. |
name_1 | First name line of the warehouse's address. |
name_2 | Second name line of the warehouse's address. |
address_line_1 | Street and house number. |
address_line_2 | Second address line, e.g. floor or apartment. |
address_line_3 | Third address line, e.g. c/o or a building name. |
zip_code | Postal / zip code. |
city | City name. |
country_code | ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. Plato identifies the country by this code. |
status | Record status in your ERP. Allowed values: NORMAL, BLOCKED, HIDDEN. Tells Plato whether to use the record normally, keep it out of write-back and AI recommendations (BLOCKED) or hide it (HIDDEN); see Record Status Values. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
Suppliers
The suppliers you buy your products from. Link products to their suppliers via ProductVariantToSuppliers. Plato uses them to provide supplier analytics.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
resource_id | ID in the ERP system. Used when Plato writes back to your ERP (e.g. creating orders). If your system has no separate value, repeat the unique_id; see Identifiers. |
display_id | The number your users know from the ERP, e.g. the customer or article number. Lets users recognise and find the record in Plato. If your system has no separate value, repeat the unique_id; see Identifiers. |
name_1 | First name line of the address, typically the company name. |
name_2 | Second name line, e.g. a name addition or a department. |
name_3 | Third name line. |
legal_entity_name | Legal entity or company name. |
telephone_number | Primary telephone number. |
email | Email address. |
mobile_number | Mobile phone number. |
fax_number | Fax number. |
address_line_1 | Street and house number. |
address_line_2 | Second address line, e.g. floor or apartment. |
address_line_3 | Third address line, e.g. c/o or a building name. |
state_or_province | State or province. |
zip_code | Postal / zip code. |
city | City name. |
country_code | ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. Plato identifies the country by this code. |
country | Name of the country, e.g. Deutschland. The country itself is identified by country_code. |
post_box | Post office box number. |
zip_code_post_box | Postal code for the post office box. |
status | Record status in your ERP. Allowed values: NORMAL, BLOCKED, HIDDEN. Tells Plato whether to use the record normally, keep it out of write-back and AI recommendations (BLOCKED) or hide it (HIDDEN); see Record Status Values. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
Transaction Data Entities
CreditMemoLines
Your credit memos, delivered as one row per credit memo line. Each line also carries the credit memo's header data, e.g. customer, credit memo date and number. Plato deducts them from billed revenue, so revenue figures reflect what your customers were actually charged.
| Column | Description |
|---|---|
credit_memo_unique_id | Unique identifier for the credit memo: the same value on every line of the same document; see Identifiers. Plato groups the lines on this ID to build the credit memo header. |
credit_memo_resource_id | ERP identifier for the credit memo. Used when Plato writes credit memos back to your ERP. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
credit_memo_display_id | User-facing credit memo number. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
credit_memo_line_unique_id | Unique identifier for the credit memo line: unique across all lines of this entity and stable across deliveries; see Identifiers. Plato uses it to track each line across deliveries. |
credit_memo_line_resource_id | ERP identifier for the credit memo line. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
credit_memo_line_display_id | User-facing credit memo line identifier. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
position | Line position within the sales document. Deliver as a zero-padded string (e.g. 0000010000) so lines sort in document order. Lets Plato list the records in the same order as your ERP. |
header_document_type_unique_id | Reference to the document type (e.g. standard order, express order). Must equal the referenced record's unique_id; see Identifiers. Lets users filter credit memos by type in the sales document lists of the Plato app. |
header_document_type_name | Name of the document type. |
customer_unique_id | Reference to the customer account. Must equal the referenced record's unique_id; see Identifiers. Links the credit memo to the customer, so it counts in that customer's sales history, in Plato's revenue and order analysis, and in Plato AI. |
sell_to_unique_id | Reference to the sell-to customer entity (ordering party). Must equal the referenced record's unique_id; see Identifiers. Tells Plato the ordering party of the credit memo. |
ship_to_unique_id | Reference to the ship-to customer entity (delivery recipient). Must equal the referenced record's unique_id; see Identifiers. Tells Plato the delivery recipient of the credit memo. |
invoice_to_unique_id | Reference to the invoice-to customer entity (billing recipient). Must equal the referenced record's unique_id; see Identifiers. Tells Plato the billing recipient of the credit memo. |
product_unique_id | Reference to the product variant. Must equal the referenced record's unique_id; see Identifiers. Links the line to the article, so Plato AI can use it for recommendations. |
product_name | Product name at the time of the transaction. Used by Plato AI to identify similar products. |
retail_price | Net list price of the product per price_scale_factor units, e.g. the price per 100 pieces when the factor is 100. |
gtin | Global Trade Item Number (barcode). Used by Plato AI to enrich product details and identify similar variants. |
ean | European Article Number (barcode). Used by Plato AI to enrich product details and identify similar variants. |
supplier_product_variant_id | Supplier's own article number for the product. |
parts_list_type | Type of parts list (e.g. BOM, set). Used when Plato writes documents back to your ERP. |
partial_packing_type | Partial packing type. Used when Plato writes documents back to your ERP. |
supplier_unique_id | Reference to the supplier of the product variant. Must equal the referenced record's unique_id; see Identifiers. Links the line to its supplier in Plato's data. |
header_po_number | Customer's purchase order number (Kommission). Reference to the customer's purchasing system or tender. |
header_text | Free-text note on the document header. |
currency_unique_id | Currency of the monetary values in this document (Currencies.unique_id). Must equal the referenced record's unique_id; see Identifiers. Tells Plato which currency the line's amounts are in. |
currency_rate_to_base | How much one unit of the document currency is worth in your base currency, e.g. 1.08. Plato multiplies the line's amounts by this rate to convert them into your base currency. Set to 1 if the document is in your base currency. |
storage_location_unique_id | Reference to the storage location / warehouse. Must equal the referenced record's unique_id; see Identifiers. Tells Plato which warehouse the line ships from. |
line_discount_percentage | Line-level discount as a fraction, e.g. 0.10 for 10 %. |
header_discount_percentage | Header-level discount applied across all lines of the document, as a fraction, e.g. 0.10 for 10 %. |
header_delivery_costs | Header-level delivery / freight costs. |
header_other_costs | Other header-level costs or surcharges. |
line_delivery_costs | Line-level delivery / freight costs. |
line_other_costs | Other line-level costs or surcharges. |
total_amount_before_header_discount | Net line total before the header discount is applied, in the document currency. Deliver it as a negative amount. Required in every row; see Amounts and Margins. |
total_amount_after_header_discount | Net line total after the header discount, in the document currency. Plato counts this amount towards billed revenue. Deliver it as a negative amount. Required in every row; see Amounts and Margins. |
gross_margin_before_header_discount | Gross margin of the line before the header discount. Deliver it as a negative amount. Required in every row; see Amounts and Margins. |
gross_margin_after_header_discount | Gross margin of the line after the header discount. Plato uses it for the margin figures of billed revenue. Deliver it as a negative amount. Required in every row; see Amounts and Margins. |
quantity | Quantity on the document line, in the sales unit (unit_sales). Used by Plato AI. Deliver it as a positive quantity; only the amounts carry the negative sign. |
unit_sales | Sales unit of measure (e.g. piece, meter, kg). Used when Plato writes documents back to your ERP. |
unit_storage | Storage unit of measure. Used when Plato writes documents back to your ERP. |
sales_unit_to_storage_unit_factor | Number of sales units in one storage unit. Used when Plato writes documents back to your ERP. |
package_unit | Package unit of measure (e.g. carton, pallet). Used when Plato writes documents back to your ERP. |
sales_units_per_package_unit | Number of sales units per package. Used when Plato writes documents back to your ERP. |
price_scale_factor | Number of units the price refers to, e.g. 100 when retail_price is the price per 100 pieces. Defaults to 1 if not provided; when sent, must be greater than 0. Used when Plato writes documents back to your ERP. |
order_date | Date the underlying order was placed. |
credit_memo_date | Posting date of the credit memo. Plato places the credit in billed revenue by this date. |
release_date | Date the document was released or confirmed. |
delivery_date | Actual or planned delivery date. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
erp_line_status | Your ERP's own status of the line, as your users know it. |
erp_header_status | Your ERP's own status of the document, as your users know it. |
line_text | Free-text note per line item. |
line_reference | External reference per line item. |
clerk_unique_id | Reference to the clerk (Erfasser) who created or modified the document. Must equal the referenced record's unique_id; see Identifiers. Tells Plato which clerk handled the credit memo. |
is_cancelled | Whether the document or line has been cancelled. Tells Plato whether the credit memo or the line was cancelled. |
cancelled_reason | Reason for cancellation (e.g. customer request, duplicate). |
customer_contact_unique_id | Reference to the customer contact person for this document. Must equal the referenced record's unique_id; see Identifiers. Tells Plato the contact person for the credit memo. |
contact_name_override | Contact name captured at the time the sales document was created. |
delivery_name_1 | Delivery recipient: first name line, typically the company name. |
delivery_name_2 | Delivery recipient: second name line, e.g. a name addition or a department. |
delivery_name_3 | Delivery recipient: third name line. |
delivery_address_line_1 | Delivery address: street and house number. |
delivery_address_line_2 | Delivery address: second address line, e.g. floor or apartment. |
delivery_address_line_3 | Delivery address: third address line, e.g. c/o or a building name. |
delivery_address_state_or_province | Delivery address: state or province. |
delivery_address_zip_code | Delivery address: postal code. |
delivery_address_city | Delivery address: city. |
delivery_address_country_code | Delivery address: ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. |
delivery_address_country | Delivery address: name of the country, e.g. Deutschland. |
billing_name_1 | Billing recipient: first name line, typically the company name. |
billing_name_2 | Billing recipient: second name line, e.g. a name addition or a department. |
billing_name_3 | Billing recipient: third name line. |
billing_address_line_1 | Billing address: street and house number. |
billing_address_line_2 | Billing address: second address line, e.g. floor or apartment. |
billing_address_line_3 | Billing address: third address line, e.g. c/o or a building name. |
billing_address_state_or_province | Billing address: state or province. |
billing_address_zip_code | Billing address: postal code. |
billing_address_city | Billing address: city. |
billing_address_country_code | Billing address: ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. |
billing_address_country | Billing address: name of the country, e.g. Deutschland. |
InvoiceLines
Your invoices, delivered as one row per invoice line. Each line also carries the invoice's header data, e.g. customer, invoice date and invoice number. Invoices are what your customers were billed for: Plato counts them towards billed revenue in its analytics. Deliver debit memos as invoice lines too; there is no separate debit memo entity. Linked to their order lines via SalesDocumentLineRelations, they also give each order line its invoice date and billed status.
| Column | Description |
|---|---|
invoice_unique_id | Unique identifier for the invoice: the same value on every line of the same document; see Identifiers. Plato groups the lines on this ID to build the invoice header. |
invoice_resource_id | ERP identifier for the invoice. Used when Plato writes invoices back to your ERP. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
invoice_display_id | User-facing invoice number. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
invoice_line_unique_id | Unique identifier for the invoice line: unique across all lines of this entity and stable across deliveries; see Identifiers. Plato uses it to track each line across deliveries. |
invoice_line_resource_id | ERP identifier for the invoice line. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
invoice_line_display_id | User-facing invoice line identifier. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
position | Line position within the sales document. Deliver as a zero-padded string (e.g. 0000010000) so lines sort in document order. Lets Plato list the records in the same order as your ERP. |
header_document_type_unique_id | Reference to the document type (e.g. standard order, express order). Must equal the referenced record's unique_id; see Identifiers. Lets users filter invoices by type in the sales document lists of the Plato app. |
header_document_type_name | Name of the document type. |
customer_unique_id | Reference to the customer account. Must equal the referenced record's unique_id; see Identifiers. Links the invoice to the customer, so it counts in that customer's sales history, in Plato's revenue and order analysis, and in Plato AI. |
sell_to_unique_id | Reference to the sell-to customer entity (ordering party). Must equal the referenced record's unique_id; see Identifiers. Tells Plato the ordering party of the invoice. |
ship_to_unique_id | Reference to the ship-to customer entity (delivery recipient). Must equal the referenced record's unique_id; see Identifiers. Tells Plato the delivery recipient of the invoice. |
invoice_to_unique_id | Reference to the invoice-to customer entity (billing recipient). Must equal the referenced record's unique_id; see Identifiers. Tells Plato the billing recipient of the invoice. |
product_unique_id | Reference to the product variant. Must equal the referenced record's unique_id; see Identifiers. Links the line to the article, so Plato AI can use it for recommendations. |
product_name | Product name at the time of the transaction. Used by Plato AI to identify similar products. |
retail_price | Net list price of the product per price_scale_factor units, e.g. the price per 100 pieces when the factor is 100. |
gtin | Global Trade Item Number (barcode). Used by Plato AI to enrich product details and identify similar variants. |
ean | European Article Number (barcode). Used by Plato AI to enrich product details and identify similar variants. |
supplier_product_variant_id | Supplier's own article number for the product. |
parts_list_type | Type of parts list (e.g. BOM, set). Used when Plato writes documents back to your ERP. |
partial_packing_type | Partial packing type. Used when Plato writes documents back to your ERP. |
supplier_unique_id | Reference to the supplier of the product variant. Must equal the referenced record's unique_id; see Identifiers. Links the line to its supplier in Plato's data. |
header_po_number | Customer's purchase order number (Kommission). Reference to the customer's purchasing system or tender. |
header_text | Free-text note on the document header. |
currency_unique_id | Currency of the monetary values in this document (Currencies.unique_id). Must equal the referenced record's unique_id; see Identifiers. Tells Plato which currency the line's amounts are in. |
currency_rate_to_base | How much one unit of the document currency is worth in your base currency, e.g. 1.08. Plato multiplies the line's amounts by this rate to convert them into your base currency. Set to 1 if the document is in your base currency. |
storage_location_unique_id | Reference to the storage location / warehouse. Must equal the referenced record's unique_id; see Identifiers. Tells Plato which warehouse the line ships from. |
line_discount_percentage | Line-level discount as a fraction, e.g. 0.10 for 10 %. |
header_discount_percentage | Header-level discount applied across all lines of the document, as a fraction, e.g. 0.10 for 10 %. |
header_delivery_costs | Header-level delivery / freight costs. |
header_other_costs | Other header-level costs or surcharges. |
line_delivery_costs | Line-level delivery / freight costs. |
line_other_costs | Other line-level costs or surcharges. |
total_amount_before_header_discount | Net line total before the header discount is applied, in the document currency. Deliver it as a positive amount. Required in every row; see Amounts and Margins. |
total_amount_after_header_discount | Net line total after the header discount, in the document currency. Plato counts this amount towards billed revenue. Deliver it as a positive amount. Required in every row; see Amounts and Margins. |
gross_margin_before_header_discount | Gross margin of the line before the header discount. Deliver it as a positive amount. Required in every row; see Amounts and Margins. |
gross_margin_after_header_discount | Gross margin of the line after the header discount. Plato uses it for the margin figures of billed revenue. Deliver it as a positive amount. Required in every row; see Amounts and Margins. |
quantity | Quantity on the document line, in the sales unit (unit_sales). Used by Plato AI. |
unit_sales | Sales unit of measure (e.g. piece, meter, kg). Used when Plato writes documents back to your ERP. |
unit_storage | Storage unit of measure. Used when Plato writes documents back to your ERP. |
sales_unit_to_storage_unit_factor | Number of sales units in one storage unit. Used when Plato writes documents back to your ERP. |
package_unit | Package unit of measure (e.g. carton, pallet). Used when Plato writes documents back to your ERP. |
sales_units_per_package_unit | Number of sales units per package. Used when Plato writes documents back to your ERP. |
price_scale_factor | Number of units the price refers to, e.g. 100 when retail_price is the price per 100 pieces. Defaults to 1 if not provided; when sent, must be greater than 0. Used when Plato writes documents back to your ERP. |
order_date | Date the underlying order was placed. |
invoice_date | Posting date of the invoice. Plato places billed revenue in time by this date. |
release_date | Date the document was released or confirmed. |
delivery_date | Actual or planned delivery date. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
erp_line_status | Your ERP's own status of the line, as your users know it. |
erp_header_status | Your ERP's own status of the document, as your users know it. |
line_text | Free-text note per line item. |
line_reference | External reference per line item. |
clerk_unique_id | Reference to the clerk (Erfasser) who created or modified the document. Must equal the referenced record's unique_id; see Identifiers. Tells Plato which clerk handled the invoice. |
is_cancelled | Whether the document or line has been cancelled. Tells Plato whether the invoice or the line was cancelled. |
cancelled_reason | Reason for cancellation (e.g. customer request, duplicate). |
customer_contact_unique_id | Reference to the customer contact person for this document. Must equal the referenced record's unique_id; see Identifiers. Tells Plato the contact person for the invoice. |
contact_name_override | Contact name captured at the time the sales document was created. |
delivery_name_1 | Delivery recipient: first name line, typically the company name. |
delivery_name_2 | Delivery recipient: second name line, e.g. a name addition or a department. |
delivery_name_3 | Delivery recipient: third name line. |
delivery_address_line_1 | Delivery address: street and house number. |
delivery_address_line_2 | Delivery address: second address line, e.g. floor or apartment. |
delivery_address_line_3 | Delivery address: third address line, e.g. c/o or a building name. |
delivery_address_state_or_province | Delivery address: state or province. |
delivery_address_zip_code | Delivery address: postal code. |
delivery_address_city | Delivery address: city. |
delivery_address_country_code | Delivery address: ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. |
delivery_address_country | Delivery address: name of the country, e.g. Deutschland. |
billing_name_1 | Billing recipient: first name line, typically the company name. |
billing_name_2 | Billing recipient: second name line, e.g. a name addition or a department. |
billing_name_3 | Billing recipient: third name line. |
billing_address_line_1 | Billing address: street and house number. |
billing_address_line_2 | Billing address: second address line, e.g. floor or apartment. |
billing_address_line_3 | Billing address: third address line, e.g. c/o or a building name. |
billing_address_state_or_province | Billing address: state or province. |
billing_address_zip_code | Billing address: postal code. |
billing_address_city | Billing address: city. |
billing_address_country_code | Billing address: ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. |
billing_address_country | Billing address: name of the country, e.g. Deutschland. |
line_discount_amount | Line-level discount as an absolute amount. |
OrderLines
Your sales orders, delivered as one row per order line. Each line also carries the order's header data, e.g. customer, order date and order number. Orders are what your customers actually buy: Plato AI learns from this purchase history for its recommendations, and Plato counts them towards the order sum (Auftragseingang) in its analytics.
| Column | Description |
|---|---|
sales_order_unique_id | Unique identifier for the sales order: the same value on every line of the same document; see Identifiers. Plato groups the lines on this ID to build the order header. |
sales_order_resource_id | ERP identifier for the sales order. Used when Plato writes orders back to your ERP. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
sales_order_display_id | User-facing sales order number. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
sales_order_line_unique_id | Unique identifier for the sales order line: unique across all lines of this entity and stable across deliveries; see Identifiers. Plato uses it to track each line across deliveries. |
sales_order_line_resource_id | ERP identifier for the sales order line. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
sales_order_line_display_id | User-facing sales order line identifier. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
position | Line position within the sales document. Deliver as a zero-padded string (e.g. 0000010000) so lines sort in document order. Lets Plato list the records in the same order as your ERP. |
header_document_type_unique_id | Reference to the document type (e.g. standard order, express order). Must equal the referenced record's unique_id; see Identifiers. Lets users filter orders by type in the sales document lists of the Plato app. |
header_document_type_name | Name of the document type. |
customer_unique_id | Reference to the customer account. Must equal the referenced record's unique_id; see Identifiers. Links the order to the customer, so it counts in that customer's sales history, in Plato's revenue and order analysis, and in Plato AI. |
sell_to_unique_id | Reference to the sell-to customer entity (ordering party). Must equal the referenced record's unique_id; see Identifiers. Tells Plato the ordering party of the order. |
ship_to_unique_id | Reference to the ship-to customer entity (delivery recipient). Must equal the referenced record's unique_id; see Identifiers. Tells Plato the delivery recipient of the order. |
invoice_to_unique_id | Reference to the invoice-to customer entity (billing recipient). Must equal the referenced record's unique_id; see Identifiers. Tells Plato the billing recipient of the order. |
product_unique_id | Reference to the product variant. Must equal the referenced record's unique_id; see Identifiers. Links the line to the article, so Plato AI can use it for recommendations. |
product_name | Product name at the time of the transaction. Used by Plato AI to identify similar products. |
retail_price | Net list price of the product per price_scale_factor units, e.g. the price per 100 pieces when the factor is 100. |
gtin | Global Trade Item Number (barcode). Used by Plato AI to enrich product details and identify similar variants. |
ean | European Article Number (barcode). Used by Plato AI to enrich product details and identify similar variants. |
supplier_product_variant_id | Supplier's own article number for the product. |
parts_list_type | Type of parts list (e.g. BOM, set). Used when Plato writes documents back to your ERP. |
partial_packing_type | Partial packing type. Used when Plato writes documents back to your ERP. |
supplier_unique_id | Reference to the supplier of the product variant. Must equal the referenced record's unique_id; see Identifiers. Links the line to its supplier in Plato's data. |
header_po_number | Customer's purchase order number (Kommission). Reference to the customer's purchasing system or tender. |
header_text | Free-text note on the document header. |
currency_unique_id | Currency of the monetary values in this document (Currencies.unique_id). Must equal the referenced record's unique_id; see Identifiers. Tells Plato which currency the line's amounts are in. |
currency_rate_to_base | How much one unit of the document currency is worth in your base currency, e.g. 1.08. Plato multiplies the line's amounts by this rate to convert them into your base currency. Set to 1 if the document is in your base currency. |
storage_location_unique_id | Reference to the storage location / warehouse. Must equal the referenced record's unique_id; see Identifiers. Tells Plato which warehouse the line ships from. |
line_discount_percentage | Line-level discount as a fraction, e.g. 0.10 for 10 %. |
header_discount_percentage | Header-level discount applied across all lines of the document, as a fraction, e.g. 0.10 for 10 %. |
header_delivery_costs | Header-level delivery / freight costs. |
header_other_costs | Other header-level costs or surcharges. |
line_delivery_costs | Line-level delivery / freight costs. |
line_other_costs | Other line-level costs or surcharges. |
total_amount_before_header_discount | Net line total before the header discount is applied, in the document currency. Deliver it as a positive amount. Required in every row; see Amounts and Margins. |
total_amount_after_header_discount | Net line total after the header discount, in the document currency. Plato counts this amount towards the order sum (Auftragseingang). Deliver it as a positive amount. Required in every row; see Amounts and Margins. |
gross_margin_before_header_discount | Gross margin of the line before the header discount. Deliver it as a positive amount. Required in every row; see Amounts and Margins. |
gross_margin_after_header_discount | Gross margin of the line after the header discount. Plato uses it for the margin figures of the order sum (Auftragseingang). Deliver it as a positive amount. Required in every row; see Amounts and Margins. |
quantity_ordered | Quantity originally ordered, in the sales unit (unit_sales). Used for fulfilment tracking, and by Plato AI and Plato's analytics to count what was ordered. |
quantity_delivered | Quantity delivered so far (cumulative), in the sales unit (unit_sales). Used for fulfilment tracking: lets Plato track how much of the line was delivered. |
quantity_invoiced | Quantity invoiced so far (cumulative), in the sales unit (unit_sales). Used for fulfilment tracking: lets Plato track how much of the line was invoiced. |
unit_sales | Sales unit of measure (e.g. piece, meter, kg). Used when Plato writes documents back to your ERP. |
unit_storage | Storage unit of measure. Used when Plato writes documents back to your ERP. |
sales_unit_to_storage_unit_factor | Number of sales units in one storage unit. Used when Plato writes documents back to your ERP. |
package_unit | Package unit of measure (e.g. carton, pallet). Used when Plato writes documents back to your ERP. |
sales_units_per_package_unit | Number of sales units per package. Used when Plato writes documents back to your ERP. |
price_scale_factor | Number of units the price refers to, e.g. 100 when retail_price is the price per 100 pieces. Defaults to 1 if not provided; when sent, must be greater than 0. Used when Plato writes documents back to your ERP. |
order_date | Date the order was placed, not the date of a later invoice. Plato places the order in the order sum (Auftragseingang) by this date. |
release_date | Date the document was released or confirmed. |
desired_delivery_date | Customer-requested delivery date. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
line_text | Free-text note per line item. |
line_reference | External reference per line item. |
clerk_unique_id | Reference to the clerk (Erfasser) who created or modified the document. Must equal the referenced record's unique_id; see Identifiers. Tells Plato which clerk handled the order. |
plato_line_status | Normalised line status. Plato uses it to calculate the order header status; see Plato Status. Plato AI uses it to select the lines it includes in sales insights. |
erp_line_status | Your ERP's own status of the line, as your users know it. |
erp_header_status | Your ERP's own status of the document, as your users know it. |
is_cancelled | Whether the document or line has been cancelled. Tells Plato whether the order or the line was cancelled. |
cancelled_reason | Reason for cancellation (e.g. customer request, duplicate). |
customer_contact_unique_id | Reference to the customer contact person for this document. Must equal the referenced record's unique_id; see Identifiers. Tells Plato the contact person for the order. |
contact_name_override | Contact name captured at the time the sales document was created. |
delivery_name_1 | Delivery recipient: first name line, typically the company name. |
delivery_name_2 | Delivery recipient: second name line, e.g. a name addition or a department. |
delivery_name_3 | Delivery recipient: third name line. |
delivery_address_line_1 | Delivery address: street and house number. |
delivery_address_line_2 | Delivery address: second address line, e.g. floor or apartment. |
delivery_address_line_3 | Delivery address: third address line, e.g. c/o or a building name. |
delivery_address_state_or_province | Delivery address: state or province. |
delivery_address_zip_code | Delivery address: postal code. |
delivery_address_city | Delivery address: city. |
delivery_address_country_code | Delivery address: ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. |
delivery_address_country | Delivery address: name of the country, e.g. Deutschland. |
billing_name_1 | Billing recipient: first name line, typically the company name. |
billing_name_2 | Billing recipient: second name line, e.g. a name addition or a department. |
billing_name_3 | Billing recipient: third name line. |
billing_address_line_1 | Billing address: street and house number. |
billing_address_line_2 | Billing address: second address line, e.g. floor or apartment. |
billing_address_line_3 | Billing address: third address line, e.g. c/o or a building name. |
billing_address_state_or_province | Billing address: state or province. |
billing_address_zip_code | Billing address: postal code. |
billing_address_city | Billing address: city. |
billing_address_country_code | Billing address: ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. |
billing_address_country | Billing address: name of the country, e.g. Deutschland. |
QuoteLines
Your quotes, delivered as one row per quote line. Each line also carries the quote's header data, e.g. customer, quote date and quote number. Quotes show what your customers are interested in before they order: Plato uses them to help your sales team follow up on open quotes, and Plato AI uses the quote history for its recommendations.
| Column | Description |
|---|---|
quote_unique_id | Unique identifier for the quote: the same value on every line of the same document; see Identifiers. Plato groups the lines on this ID to build the quote header. |
quote_resource_id | ERP identifier for the quote. Used when Plato writes quotes back to your ERP. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
quote_display_id | User-facing quote number. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
quote_line_unique_id | Unique identifier for the quote line: unique across all lines of this entity and stable across deliveries; see Identifiers. Plato uses it to track each line across deliveries. |
quote_line_resource_id | ERP identifier for the quote line. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
quote_line_display_id | User-facing quote line identifier. If your system has no separate value, repeat the matching unique_id; see Identifiers. |
position | Line position within the sales document. Deliver as a zero-padded string (e.g. 0000010000) so lines sort in document order. Lets Plato list the records in the same order as your ERP. |
header_document_type_unique_id | Reference to the document type (e.g. standard order, express order). Must equal the referenced record's unique_id; see Identifiers. Lets users filter quotes by type in the sales document lists of the Plato app. |
header_document_type_name | Name of the document type. |
customer_unique_id | Reference to the customer account. Must equal the referenced record's unique_id; see Identifiers. Links the quote to the customer, so it counts in that customer's sales history, in Plato's revenue and order analysis, and in Plato AI. |
sell_to_unique_id | Reference to the sell-to customer entity (ordering party). Must equal the referenced record's unique_id; see Identifiers. Tells Plato the ordering party of the quote. |
ship_to_unique_id | Reference to the ship-to customer entity (delivery recipient). Must equal the referenced record's unique_id; see Identifiers. Tells Plato the delivery recipient of the quote. |
invoice_to_unique_id | Reference to the invoice-to customer entity (billing recipient). Must equal the referenced record's unique_id; see Identifiers. Tells Plato the billing recipient of the quote. |
product_unique_id | Reference to the product variant. Must equal the referenced record's unique_id; see Identifiers. Links the line to the article, so Plato AI can use it for recommendations. |
product_name | Product name at the time of the transaction. Used by Plato AI to identify similar products. |
retail_price | Net list price of the product per price_scale_factor units, e.g. the price per 100 pieces when the factor is 100. |
gtin | Global Trade Item Number (barcode). Used by Plato AI to enrich product details and identify similar variants. |
ean | European Article Number (barcode). Used by Plato AI to enrich product details and identify similar variants. |
supplier_product_variant_id | Supplier's own article number for the product. |
parts_list_type | Type of parts list (e.g. BOM, set). Used when Plato writes documents back to your ERP. |
partial_packing_type | Partial packing type. Used when Plato writes documents back to your ERP. |
supplier_unique_id | Reference to the supplier of the product variant. Must equal the referenced record's unique_id; see Identifiers. Links the line to its supplier in Plato's data. |
header_po_number | Customer's purchase order number (Kommission). Reference to the customer's purchasing system or tender. |
header_text | Free-text note on the document header. |
currency_unique_id | Currency of the monetary values in this document (Currencies.unique_id). Must equal the referenced record's unique_id; see Identifiers. Tells Plato which currency the line's amounts are in. |
currency_rate_to_base | How much one unit of the document currency is worth in your base currency, e.g. 1.08. Plato multiplies the line's amounts by this rate to convert them into your base currency. Set to 1 if the document is in your base currency. |
storage_location_unique_id | Reference to the storage location / warehouse. Must equal the referenced record's unique_id; see Identifiers. Tells Plato which warehouse the line ships from. |
line_discount_percentage | Line-level discount as a fraction, e.g. 0.10 for 10 %. |
header_discount_percentage | Header-level discount applied across all lines of the document, as a fraction, e.g. 0.10 for 10 %. |
header_delivery_costs | Header-level delivery / freight costs. |
header_other_costs | Other header-level costs or surcharges. |
line_delivery_costs | Line-level delivery / freight costs. |
line_other_costs | Other line-level costs or surcharges. |
total_amount_before_header_discount | Net line total before the header discount is applied, in the document currency. Deliver it as a positive amount. Required in every row; see Amounts and Margins. |
total_amount_after_header_discount | Net line total after the header discount, in the document currency. Deliver it as a positive amount. Required in every row; see Amounts and Margins. |
gross_margin_before_header_discount | Gross margin of the line before the header discount. Deliver it as a positive amount. Required in every row; see Amounts and Margins. |
gross_margin_after_header_discount | Gross margin of the line after the header discount. Plato uses it for margin figures. Deliver it as a positive amount. Required in every row; see Amounts and Margins. |
quantity_ordered | Quantity quoted, in the sales unit (unit_sales). Plato AI uses it for its recommendations. |
unit_sales | Sales unit of measure (e.g. piece, meter, kg). Used when Plato writes documents back to your ERP. |
unit_storage | Storage unit of measure. Used when Plato writes documents back to your ERP. |
sales_unit_to_storage_unit_factor | Number of sales units in one storage unit. Used when Plato writes documents back to your ERP. |
package_unit | Package unit of measure (e.g. carton, pallet). Used when Plato writes documents back to your ERP. |
sales_units_per_package_unit | Number of sales units per package. Used when Plato writes documents back to your ERP. |
price_scale_factor | Number of units the price refers to, e.g. 100 when retail_price is the price per 100 pieces. Defaults to 1 if not provided; when sent, must be greater than 0. Used when Plato writes documents back to your ERP. |
quote_date | Business document date of the quote as shown in the ERP. Not the technical record-creation timestamp; see created_at. Places the quote in time in Plato. |
quote_due_date | Expiration date of the quote. |
release_date | Date the document was released or confirmed. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
plato_line_status | Normalised line status. Plato uses it to calculate the quote header status; see Plato Status. Plato AI uses it to select the lines it includes in sales insights. |
erp_line_status | Your ERP's own status of the line, as your users know it. |
erp_header_status | Your ERP's own status of the document, as your users know it. |
is_cancelled | Whether the document or line has been cancelled. Tells Plato whether the quote or the line was cancelled. |
cancelled_reason | Reason for cancellation (e.g. customer request, duplicate). |
line_text | Free-text note per line item. |
line_reference | External reference per line item. |
clerk_unique_id | Reference to the clerk (Erfasser) who created or modified the document. Must equal the referenced record's unique_id; see Identifiers. Tells Plato which clerk handled the quote. |
customer_contact_unique_id | Reference to the customer contact person for this document. Must equal the referenced record's unique_id; see Identifiers. Tells Plato the contact person for the quote. |
contact_name_override | Contact name captured at the time the sales document was created. |
delivery_name_1 | Delivery recipient: first name line, typically the company name. |
delivery_name_2 | Delivery recipient: second name line, e.g. a name addition or a department. |
delivery_name_3 | Delivery recipient: third name line. |
delivery_address_line_1 | Delivery address: street and house number. |
delivery_address_line_2 | Delivery address: second address line, e.g. floor or apartment. |
delivery_address_line_3 | Delivery address: third address line, e.g. c/o or a building name. |
delivery_address_state_or_province | Delivery address: state or province. |
delivery_address_zip_code | Delivery address: postal code. |
delivery_address_city | Delivery address: city. |
delivery_address_country_code | Delivery address: ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. |
delivery_address_country | Delivery address: name of the country, e.g. Deutschland. |
billing_name_1 | Billing recipient: first name line, typically the company name. |
billing_name_2 | Billing recipient: second name line, e.g. a name addition or a department. |
billing_name_3 | Billing recipient: third name line. |
billing_address_line_1 | Billing address: street and house number. |
billing_address_line_2 | Billing address: second address line, e.g. floor or apartment. |
billing_address_line_3 | Billing address: third address line, e.g. c/o or a building name. |
billing_address_state_or_province | Billing address: state or province. |
billing_address_zip_code | Billing address: postal code. |
billing_address_city | Billing address: city. |
billing_address_country_code | Billing address: ISO 3166-1 alpha-2 country code, e.g. DE, AT or CH. |
billing_address_country | Billing address: name of the country, e.g. Deutschland. |
SalesDocumentHeaderRelations
How your sales documents follow from each other, at document level: a quote converted into an order or an order into an invoice (CONVERSION), or an invoice credited by a credit memo (CREDIT). Plato uses these links to follow each deal from quote to invoice, e.g. to see which quotes turned into orders.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
source_document_family | Document family of the source document, one of the Plato document families: QUOTE, ORDER, INVOICE or CREDITMEMO (as in SalesDocumentTypes). Together with source_document_unique_id it identifies the document. |
source_document_unique_id | Reference to the source document (e.g. the quote that was converted to an order). Must equal the referenced record's unique_id; see Identifiers. Identifies the document the link starts from. |
target_document_family | Document family of the target document, one of the Plato document families: QUOTE, ORDER, INVOICE or CREDITMEMO (as in SalesDocumentTypes). Together with target_document_unique_id it identifies the document. |
target_document_unique_id | Reference to the target document (e.g. the order created from the quote). Must equal the referenced record's unique_id; see Identifiers. Identifies the document the link points to. |
relation_type | Type of relationship between documents. Allowed values: CONVERSION, CREDIT. Tells Plato whether the link is a conversion or a credit. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |
SalesDocumentLineRelations
The same links between individual document lines: which quote line became which order line, and which order line was invoiced or credited by which invoice or credit memo line. Plato uses them to know which order lines have been invoiced and when. Where your ERP delivers invoices without the underlying order, Plato uses these links to derive the order from the invoice lines.
| Column | Description |
|---|---|
unique_id | Identifier of the record. Unique within this entity and stable across deliveries; see Identifiers. Plato uses it to recognise the record across deliveries and to link other records to it. |
source_document_family | Document family of the source document, one of the Plato document families: QUOTE, ORDER, INVOICE or CREDITMEMO (as in SalesDocumentTypes). Together with source_document_unique_id it identifies the document. |
source_document_unique_id | Reference to the source document (e.g. the quote that was converted to an order). Must equal the referenced record's unique_id; see Identifiers. Lets Plato tie an invoice back to its order. |
source_line_unique_id | Reference to the source document line. Must equal the referenced record's unique_id; see Identifiers. Identifies the line the link starts from. |
target_document_family | Document family of the target document, one of the Plato document families: QUOTE, ORDER, INVOICE or CREDITMEMO (as in SalesDocumentTypes). Together with target_document_unique_id it identifies the document. |
target_document_unique_id | Reference to the target document (e.g. the order created from the quote). Must equal the referenced record's unique_id; see Identifiers. Identifies the document the link points to. |
target_line_unique_id | Reference to the target document line. Must equal the referenced record's unique_id; see Identifiers. Identifies the line the link points to, so Plato can match the two lines. |
relation_type | Type of relationship between documents. Allowed values: CONVERSION, CREDIT. Plato uses CONVERSION links to tie invoices back to their orders. |
created_at | Timestamp when the record was created in the source system. Metadata only: Plato stores it but does not use it to process your data. |
updated_at | Timestamp when the record was last modified in the source system. Metadata only: Plato stores it but does not use it to process your data. |