The Rossum extraction schema described is designed to satisfy common needs of the customers in Europe and part of the APAC countries. There is a separate schema for the US market. The difference between the two is mainly in handling of the taxation where Rossum uses line level taxation with Tax Codes to the Europe and APAC (this schema) whilst the header level taxation without Tax Codes in the US.
ℹ️ Key (color coding of the fields in the schema)Captured fields - fields that are extracted from the document using Rossum AI predictions and ORC reading.
Matching fields - Fields that are result of matching using master data maintained in the Rossum’s Master Data Hub. Majority of the datasets are replicated from Coupa directly.
Calculated/Manual fields - Fields that are calculated based on values of other fields or default values. Formula fields are fields that hold the business logic.
For details about the Coupa fields please refer to the API documentation:
Header Fields
Name | Properties | Description | Coupa mapping |
---|---|---|---|
General Information | |||
Document Type | "id": "document_type", "type": "enum", "required": true | Trainable (AI predicted) classification enumerator to recognize two standard document types: Tax Invoice and Credit Note. There is special logic related to the Credit Note document type that depends on the value of this field. Business rules: If the Coupa Total (calculated) is < 0 and the document is not marked as 'Credit Note' there is a warning and automation is blocked. If Document Type == 'Credit Note' then adjust the sign of the value according to the configuration of the Credit notes amounts field configuration. If Document Type == 'Credit Note' draft the document in Coupa. | No direct mapping, but Coupa fields document-type and is-credit-note are set based on the value. |
Invoice Number | "id": "document_id", "type": "string", "required": false | Invoice Number extracted from the document. Business rules: If the value is longer than 40 characters (Coupa maximum) there is a warning on the field in the UI and automation of the document is blocked. If there is no value present in the field the warning and automation is blocked. | |
Invoice Number (manual) | "id": "document_id_manual", "type": "string", "required": true | The value from the extracted field Invoice Number is copied to this field and it can be manually modified by the user if needed. Business rules: If the extracted invoice number is longer than 40 characters (Coupa maximal length) the value copied to this field is automatically cut from the right side to 40 characters. The length of the field cannot exceed 40 characters. If the user enters logner value there is an error and document in Rossum cannot be confirmed. | invoice-number |
Invoice Date | "id": "date_issue", "type": "date", "required": true | Invoice Date extracted from the document. | |
Invoice Date (manual) | "id": "date_issue_manual", "type": "string", "required": true | The value from the extracted field Invoice Date is copied to this field and it can be manually modified by the user if needed. | invoice-date |
Due Date | "id": "date_due", "type": "date", "required": false | Due Date extracted from the document. | |
Payment Terms | "id": "terms", "type": "string", "required": false | Invoice Number extracted from the document. | |
Payment Terms (calculated) | "id": "terms_normalized", "type": "string", ”source”: “formula“, ”hidden”: true, "required": false | Calculated value of the payment terms. Rossum tries to calculate the payment terms (in days) in the following order (the first calculation returning a value ends the evaluation):
| |
Payment Terms Match | "id": "payment_terms_match", "type": "enum", "required": false | Match of the existing active payment term object replicated from Coupa. The matching is based on the Payment Terms (calculated) number of days. If there are multiple terms found user can select one manually. The field is by default not mandatory in Rossum, but can be easily made mandatory if required by the customer. Business rules: If the payment terms matched/selected in this field differ from the payment terms defined for the supplier in Coupa, there is a warning and automation is blocked. Dataset: payment_terms | payment-term The payment-term is object in Coupa linked to the Invoice on the header level. The mapping is based on the id of the object. |
Description | "id": "header_description", "type": "string", "required": false | Description that can be captured from the header level of the document. Relates to the Fallback Line Item logic and serves as a description for the cases when there are no actual line items extracted from the documents. | |
Description (export) | "id": "description_export", "type": "string", ”hidden”: false, ”source”: “formula“, "required": false |
The field is editable by the user. Relates to the Fallback Line Item logic and serves as a description for the cases when there are no actual line items extracted from the documents. | description The field in Coupa is on the item level and the value of this field is used only when there are no actual line items extracted from the document in Rossum and fallback line item is create using header level values. |
Supplier Part Number | "id": "code", "type": "string", "required": false | Supplier Part Number that can be captured from the header level of the document. Relates to the Fallback Line Item logic and it is used for the PO line matching for the cases when there are no actual line items extracted from the documents. | |
Notes | "id": "notes_manual", "type": "string", "required": false | Manual entry field. Usually used by AP teams to leave notes on documents that cannot be immediately confirmed (postpone reasons, exceptions handling notes, …). There is by default no mapping to Coupa, but it is common requirement to map the value a custom field there. | |
Customer Section | |||
Customer Name | "id": "recipient_name", "type": "string", "required": false | Customer (entity/subsidiary) name extracted from the document. It is not directly mapped to Coupa, but it is used in the matching logic to find the customer (Chart of Accounts) record replicated from Coupa (See Customer Match field below). | |
Customer Address | "id": "recipient_address", "type": "string", "required": false | Customer (entity/subsidiary) address extracted from the document. It is not directly mapped to Coupa, but it is used in the matching logic to find the customer (Chart of Accounts) record replicated from Coupa (See Customer Match field below). | |
Customer Tax Number | "id": "recipient_tax_id", "type": "string", "required": false | Customer (entity/subsidiary) tax id (VAT Number in Europe) extracted from the document. It is not directly mapped to Coupa, but it is used in the matching logic to find the customer (Chart of Accounts) record replicated from Coupa (See Customer Match field below). | |
Customer Tax Number (normalized) | "id": "recipient_tax_id_normalized", "type": "string", ”hidden”: true, "required": false | Normalized value of the Customer Tax Number. The normalization removes all non-alphanumeric characters from the value. | |
Customer (Search) | "id": "recipient_search", ”source”: “manual“, "type": "string", ”hidden”: false, "required": false | Manual field to search for the Customer in Coupa dataset based on the name. It is used in combination with the Memorisation mechanism to override the memorized value if it was selected incorrectly in previous document. | |
Customer Match | "id": "recipient_match", "type": "enum", "required": false | Match of the active Customer in the data replicated from the Coupa database. The replicated object from Coupa is Account Type. The customer is referred to as Chart of Accounts on the header level of the invoice in the Coupa UI. The high level description of the matching logic if following (the first query that returns one or more records ends the evaluation):
The field is mandatory and if there is no unique match found user is forced to manually select one either from prefiltered list (result of fuzzy matching) or from the full list of the customer. Please note that the field is not directly mapped to Coupa. It is because Rossum logic prefers information from the PO on the PO backed documents. The logic is evaluated on the level of the Customer (export) field. See description below. Business rules:
Dataset: account_types | |
Customer Ship-To Match | "id": "recipient_ship_to_match", "type": "enum", "required": false | Match of the header level Ship To address based on the extracted Customer Address. On PO backed invoices the Ship To address is prefilled based on the PO data. The high level description of the matching logic if following (the first query that returns one or more records ends the evaluation):
Dataset: addresses | ship-to-address The ship-to-address is object in Coupa linked to the Invoice on the header level. The mapping is based on the id of the object. |
Customer Name Match | "id": "recipient_name_match", "type": "enum", ”hidden”: true, "required": false | The value is propagated from the Customer that is matched in the Customer Match field. This is so called “additional mapping“ field and it has no matching logic of its own. Dataset: account_types | |
Customer Primary Address Match | "id": "recipient_primary_address_match", "type": "enum", ”hidden”: true, "required": false | The value is propagated from the Customer that is matched in the Customer Match field. The value is used for filtering of the Tax Registrations described in the Customer Tax Reg. Match field below. This is so called “additional mapping“ field and it has no matching logic of its own. Dataset: account_types | |
Customer Tax Reg. Match | "id": "recipient_tax_registration_match", "type": "enum", ”hidden”: false, "required": false | Match of the object that is linked in the header level Buyer VAT ID in Coupa. Customers in Coupa can have multiple tax registrations even from different countries. The high level description of the matching logic if following (the first query that returns one or more records ends the evaluation):
The matching logic is only triggered if Customer Match is not empty as it depends on the Customer Primary Address Match which links the tax registrations and the account types in Coupa. Only active tax registrations of the matched customer are part of the logic described above. Dataset: tax_registrations | buyer-tax-registration The buyer-tax-registration is object in Coupa linked to the Invoice on the header level. The mapping is based on the number of the tax registration. |
Customer Country Code Match | "id": "recipient_country_code_match", "type": "enum", ”hidden”: true, "required": false | The value is propagated from the Customer’s Tax Registration that is matched in the Customer Tax Reg. Match field. It represents country of the matched Tax Registration of the customer. The value is used for filtering of the tax codes described in the Tax Code Match field below. This is so called “additional mapping“ field and it has no matching logic of its own. Dataset: tax_registrations | |
Customer Entity Country Code Match | "id": "recipient_entity_country_code_match", "type": "enum", ”hidden”: true, "required": false | The value is propagated from the Customer that is matched in the Customer Match field. It represents country of the matched customer. The value is used for filtering of the tax codes described in the Tax Code Match field below. This is so called “additional mapping“ field and it has no matching logic of its own. Dataset: account_types | |
Customer ID (export) | "id": "recipient_export", "type": "string", ”hidden”: true, ”source”: “formula“, "required": true | The logic in Rossum prefers information from the POs on the PO backed documents. It is the case also for the Customer (Chart of Accounts). Logic implemented in this field ensures that the customer that is linked to the first item of the first PO matched on this document is used as invoice Chart of Accounts in Coupa. The order of the priority for the evaluation of this field is following:
| account-type The account-type is object in Coupa linked to the Invoice on the header level. The mapping is based on the id of the object. |
Customer (export) | "id": "recipient_name_export", "type": "string", ”hidden”: false, ”source”: “formula“, "required": true | The field value is visible representation of the exported customer name and itself is not mapped to Coupa. The logic in Rossum prefers information from the POs on the PO backed documents. It is the case also for the Customer (Chart of Accounts). Logic implemented in this field ensures that the customer that is linked to the first item of the first PO matched on this document is used as invoice Chart of Accounts in Coupa. The order of the priority for the evaluation of this field is following:
| |
Supplier Section | |||
Supplier Name | "id": "sender_name", "type": "string", "required": false | Supplier name extracted from the document. It is not directly mapped to Coupa, but it is used in the matching logic to find the customer record replicated from Coupa (See Customer Match field below). | |
Supplier Address | "id": "sender_address", "type": "string", "required": false | Supplier address extracted from the document. It is not directly mapped to Coupa, but it is used in the matching logic to find the supplier record replicated from Coupa (See Supplier Match field below). | |
Supplier Tax Number | "id": "sender_tax_id", "type": "string", "required": false | Supplier tax id (VAT Number in Europe) extracted from the document. It is not directly mapped to Coupa, but it is used in the matching logic to find the supplier record replicated from Coupa (See Supplier Match field below). | |
Supplier Tax Number (normalized) | "id": "sender_tax_id_normalized", "type": "string", ”hidden”: true, ”source”: “formula“, "required": false | Normalized value of the Supplier Tax Number. The normalization removes all non-alphanumeric characters from the value. Link to formula field with code: Rossum | |
Supplier (Search) | "id": "sender_search", ”source”: “manual“, "type": "string", ”hidden”: false, "required": false | Manual field to search for the Supplier in Coupa dataset based on the name. It is used in combination with the Memorisation mechanism to override the memorized value if it was selected incorrectly in previous document. | |
Supplier Match | "id": "sender_match", "type": "enum", "required": false | Match of the active supplier record in the data replicated from the Coupa database. The high level description of the matching logic if following (the first query that returns one or more records ends the evaluation):
The field is mandatory and if there is no unique match found user is forced to manually select one either from prefiltered list (result of fuzzy matching) or from the full list of the customer. Please note that the field is not directly mapped to Coupa. It is because Rossum logic prefers information from the PO on the PO backed documents. The logic is evaluated on the level of the Customer (export) field. See description below. Business rules:
Dataset: suppliers | supplier |
Supplier Country Code Match | "id": "sender_country_code_match", "type": "enum", ”hidden”: true, "required": false | The value is propagated from the supplier record that is matched in the Supplier Match field. It represents country of the matched supplier. This is so called “additional mapping“ field and it has no matching logic of its own. Dataset: suppliers | |
Supplier Payment Days Match | "id": "sender_payment_days_match", "type": "enum", ”hidden”: true, "required": false | The value is propagated from the supplier record that is matched in the Supplier Match field. It represents number of days from the supplier’s default payment terms in Coupa. It is used in the Payment Terms (calculated) logic described above. This is so called “additional mapping“ field and it has no matching logic of its own. Business rules:
Dataset: suppliers | |
Supplier Display Name Match | "id": "sender_display_name_match", "type": "enum", ”hidden”: true, "required": false | The value is propagated from the supplier record that is matched in the Supplier Match field. It represents number of days from the supplier’s default payment terms in Coupa. It is used in the Payment Terms (calculated) logic described above. The field is used in the This is so called “additional mapping“ field and it has no matching logic of its own. Dataset: suppliers | |
Supplier Number (export) | "id": "sender_export", "type": "string", ”hidden”: true, "required": false | The logic in Rossum prefers information from the POs on the PO backed documents. It is the case also for the supplier. Logic implemented in this field ensures that the supplier that is linked to the PO matched on this document is used as invoice Supplier in Coupa. The order of the priority for the evaluation of this field is following:
| supplier The supplier is object in Coupa linked to the Invoice on the header level. The mapping is based on the id of the object. |
Supplier (export) | "id": "sender_name_export", "type": "string", ”hidden”: false, "required": true | The field value is visible representation of the exported supplier name and itself is not mapped to Coupa. The logic in Rossum prefers information from the POs on the PO backed documents. It is the case also for the supplier. Logic implemented in this field ensures that the supplier that is linked to the PO matched on this document is used as invoice Supplier in Coupa. The order of the priority for the evaluation of this field is following:
| |
Bank Details | |||
IBAN | "id": "iban", "type": "string", "required": false | IBAN provided by the supplier on the document. | |
BIC/SWIFT | "id": "bic", "type": "string", "required": false | BIC/SWIFT provided by the supplier on the document. | |
Account Number | "id": "account_num", "type": "string", "required": false | Account Number provided by the supplier on the document. | |
Bank Code | "id": "bank_num", "type": "string", "required": false | Bank Code provided by the supplier on the document. | |
Credit Note | |||
Original Invoice Number | "id": "original_document_id", "type": "string", "required": false | Value captured as it appears on the document, non-editable by users | |
Original Invoice Date | "id": "original_date_issue", "type": "string", "required": false | Value captured as it appears on the document, non-editable by users | |
Credit note amounts | "id": "credit_notes_amounts", "type": "string", ”hidden”: true, "required": false ”default_value”: “negative“ | Hidden field for configuration of Rossum behavior on credit notes. The field is configured through the default value and following values are expected:
| |
Taxes & Amounts | |||
Total Amount | "id": "amount_total", "type": "number", "required": false | Value captured as it appears on the document, non-editable by users. Business rules:
If any of the conditions above does not match there is a warning and automation is blocked. | gross-total, total-with-taxes |
Total Without Tax | "id": "amount_total_base", "type": "number", "required": false | Value captured as it appears on the document, non-editable by users. Business rules:
If any of the conditions above does not match there is a warning and automation is blocked. | |
Total Without Tax (calculated) | "id": "amount_total_base_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false |
The calculated value is rounded to the 6 decimal places. | |
Tax Amount | "id": "amount_total_tax", "type": "number", "required": false | Value captured as it appears on the document, non-editable by users. Business rules:
If any of the conditions above does not match there is a warning and automation is blocked. | |
Tax Amount (calculated) | "id": "amount_total_tax_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false |
The calculated value is rounded to the 6 decimal places. Business rules:
If any of the conditions above does not match there is a warning and automation is blocked. | |
Tax Rate | "id": "tax_rate", "type": "number", "required": false | Value captured as it appears on the document, non-editable by users. | |
Tax Rate (calculated) | "id": "tax_rate_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false |
the | |
Tax Code Match | "id": "tax_code_match", "type": "enum", ”hidden”: false, ”source”: “data“, "required": false | Tax code is matched based on the percentage and country of the matched Customer Tax Registration. If there is no Customer Tax Registration matched all tax codes of given percentage and provided for the selection. This value is made visible and used when there are no line items extracted from the document (see Coupa Integration Baseline (CIB) | Line items extraction and export to Coupa ). Business rules:
Dataset: tax_codes | |
Charges | Charges are extracted as a separate table. See description of the fields in the Charges chapter below. | ||
Charges Net Amount Total (calculated) | "id": "charges_net_amount_total_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false | Sum of all | Exported as part of the |
Charges Tax Total (calculated) | "id": "charges_total_tax_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false | Sum of all Business rules:
| Exported as part of the |
Charges Tax Rate Average (calculated) | "id": "charges_tax_rate_average_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false | If the | Exported as part of the |
Currency | "id": "currency", "type": "enum", "required": true | Value is predicted based on the document content (classifier), selectable by users (the currency is not extracted from document using bounding box, but based on user selection = classifier) The currency is verified against the currency on the matched PO line. There is a warning shown and automation is blocked if there is a discrepancy. Business rules:
| exported to Coupa in the currency field |
Coupa Total (calculated) | "id": "coupa_total_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false |
Because Coupa does its own calculation using the values provided by Rossum it could theoretically end up with different value that the total mentioned on the document. Rossum simulates the calculation in Coupa and checks the consistency with the document content to avoid incorrect data export to Coupa. Business rules:
| |
Purchase Order | |||
PO Number | “id”: “order_id” "type": "string", ”hidden”: false, ”source”: “captured“, "required": false | Value captured as it appears on the document, non-editable by users. | order-header-num |
PO Status | "id": "order_header_status_match", "type": "enum", ”hidden”: false, ”source”: “data“, "required": false | Status of the matched PO. Business rules:
If the formula above does not match there is an error and document cannot be confirmed. Dataset: purchase_orders | |
PO Line Match | “id”: “order_item_match” "type": "enum", ”hidden”: false, "required": false | The field is not visible if there are line items extracted from the document. If there are not lines it serves as a PO line match for the fallback line that will be created in Coupa based on the header level values extracted in Rossum (see Coupa Integration Baseline (CIB) | Line items extraction and export to Coupa ). Lines of the PO extracted in field PO Number or selected in the Blanket PO Match field are taken into consideration. The matching logic is following:
Business rules:
Dataset: purchase_order_lines | order-line-num |
PO Line Status | "id": "po_line_status_match", "type": "enum", ”hidden”: false, ”source”: “data“, "required": false | Status of the matched PO line. Business rules:
If the formula above does not match there is an error and document cannot be confirmed. Dataset: purchase_order_lines | |
Line Items | Line Items are extracted as a separate table. See description of the fields in the Line Items chapter below. | ||
Coupa Technical Fields | |||
Submit For Approval | "id": "sf_submit_for_approval", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false | Read only field that will automatically evaluate based on values of other fields in the document:
| |
Enforce Draft | "id": "enforce_draft", "type": "enum", ”hidden”: false, ”source”: “manual“, "required": false | There are cases when the document is set for submission by the rules implemented in the Submit For Approval field, however the user has a reason not to submit directly from Rossum (manual adjustment or check in Coupa is needed before the submission). By setting value of this field to Yes user can enforce drafting of the document Coupa. Yes or no, manual selection. | |
PO Line Currency (Coupa) | "id": "po_line_currency_match", "type": "enum", ”hidden”: false, ”source”: “data“, "required": false | Currency propagated from the PO line matched in the PO Line Match field. Business rules:
If the formula above does not match there is a warning message and automation is blocked. Dataset: purchase_order_lines | |
PO x Invoice CoA Mismatch Tag | "id": "coa_mismatch_tag", "type": "enum", ”hidden”: false, ”source”: “formula“, "required": false | If the CoA (customer’s entity) on the invoice does not match the CoA on any of the matched PO lines (Coupa stores this information on the line level of the PO) this tag is set and sent to Coupa. Rossum will follow the information on the PO so the invoice in Coupa will be created with the CoA defined on the PO. | |
PO x Invoice Supplier Mismatch Tag | "id": "supplier_mismatch_tag", "type": "enum", ”hidden”: false, ”source”: “formula“, "required": false | If the Supplier on the invoice does not match the Supplier on any of the matched POs (there can be different POs used on one document in Rossum on different line items) this tag is set and sent to Coupa. Rossum will follow the information on the PO so the invoice in Coupa will be created with the supplier defined on the PO. | |
PO Line Inactive Tag | "id": "inactive_po_line_tag", "type": "enum", ”hidden”: false, ”source”: “formula“, "required": false | The tag is set if any of the matched PO lines is in status that is considered closed or inactive by Rossum. By default Rossum considers the PO line to be closed if it is not in ['partially_received', 'received', 'soft_closed_for_receiving','created'] statuses. | |
Coupa Invoices Statuses | "id": "coupa_invoices_statuses", "type": "string", ”hidden”: false, ”source”: “data“, "required": false | Technical field for indication of the statuses of duplicate invoices already existing in Coupa. See full description of Duplicate Documents in Coupa. The value contains distinct list of statuses of documents with the same Invoice Number for the same supplier existing in Coupa. Business rules:
| |
Coupa API Base URL | "id": "coupa_api_base_url", "type": "string", ”hidden”: true, ”source”: “formula“, "required": false | Configuration field. The formula should be configured to return static value of base URL (with / at the end) of the Coupa of the customer. Example: "https://rossum-czech-coupalink.coupacloud.com/" | |
OAuth Client ID | "id": "oauth_client_id", "type": "true", ”hidden”: false, ”source”: “formula“, "required": false | Configuration field. The formula must be configured to return static value of the Client ID of the oAuth client created in Customer’s Coupa for purposes of Rossum integration. Example: "kf7968x7424a019ec6eb1178c38e1a0c" |
Charges
Table for extraction of additional charges (Shipping, Handling and Miscellaneous in Coupa terminology) from the document. There can be multiple charges on the document, however Coupa accepts only one line per charge type. Also the charges types are usually not clear from the document context and it is not possible to automate categorisation of the charge types. Rossum therefore treats all charges as Shipping and aggregates all values extracted in the
table below for the coupa export (see fields Charges Net Amount Total (calculated) above). This behavior can be changed if the customer needs to capture charges of different types separately.
Tax Coding of the charges is not implemented in the baseline integration logic, but can be added as a custom development.
Charge Type | "id": "charge_type", "type": "enum", ”hidden”: true, ”source”: “data“, "required": false | Rossum defaults the InvoiceShippingCharge charge type. The selection of the type is not possible (the field is hidden) in the default configuration. | |
Charge Amount | "id": "charge_amount", "type": "number", ”hidden”: false, ”source”: “captured“, "required": true | Value captured as it appears on the document, non-editable by users. | |
Charge Tax Amount | "id": "charge_tax", "type": "number", ”hidden”: false, ”source”: “captured“, "required": false | Value captured as it appears on the document, non-editable by users. | |
Charge Tax Amount (calculated) | "id": "charge_tax_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false |
| |
Charge Tax Rate | "id": "charge_tax_rate", "type": "number", ”hidden”: false, ”source”: “captured“, "required": false | Value captured as it appears on the document, non-editable by users. | |
Charge Tax Rate (calculated) | "id": "charge_tax_rate_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false |
|
Line Items
Description | "id": "item_description", "type": "string", ”hidden”: false, ”source”: “captured“, "required": false | Item description captured from the document. | |
Description (export) | "id": "item_description_export", "type": "string", ”hidden”: false, ”source”: “formula“, "required": false |
The field is editable by the user. | description |
Quantity | “id”: “item_quantity” "type": "number", ”hidden”: false, ”source”: “captured“, "required": false | Value captured as it appears on the document. Business rules:
If the formula above does not match there is a warning and automation is blocked. | |
Quantity (calculated) | "id": "item_quantity_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false |
| |
Unit Price Net | "id": "item_amount_base", "type": "number", ”hidden”: false, ”source”: “captured“, "required": false | Value captured from the line item on the document. Business rules:
If the formula above does not match there is a warning and automation is blocked. | |
Unit Price Net (calculated) | "id": "item_amount_base_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false |
| |
Line Total Net | "id": "item_total_base", "type": "number", ”hidden”: false, ”source”: “captured“, "required": false | Value captured from the line item on the document. Business rules:
If the formula above does not match there is a warning and automation is blocked. | |
Line Total Net (calculated) | "id": "item_total_base_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false |
| |
Line Tax Rate | "id": "item_rate", "type": "number", ”hidden”: false, ”source”: “captured“, "required": false | Value captured from the line item on the document. | |
Line Tax Rate (calculated) | "id": "item_rate_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false |
| |
Line Tax Amount | "id": "item_tax", "type": "number", ”hidden”: false, ”source”: “captured“, "required": false | Value captured from the line item on the document. | |
Line Tax Amount (calculated) | "id": "item_tax_calculated", "type": "number", ”hidden”: false, ”source”: “formula“, "required": false |
| |
Tax Code Match | "id": "item_tax_code_match", "type": "enum", ”hidden”: false, ”source”: “data“, "required": false | Tax code is matched based on the percentage and country of the matched Customer Tax Registration. If there is no Customer Tax Registration matched all tax codes of given percentage and provided for the selection. Business rules:
Dataset: tax_codes | |
PO Number | "id": "item_order_id", "type": "string", ”hidden”: false, ”source”: “captured“, "required": false | Value captured from the line item on the document. | |
PO Number (calculated) | "id": "item_order_id_calculated", "type": "number", ”hidden”: true, ”source”: “formula“, "required": false | The PO number for purposes of the PO line matching is evaluated on the Invoice line from multiple sources. In general the header level captured or selected PO number is used if there is no line item level PO Number or Blanket PO Match. This allows both header and line level specification of the PO number and also for multiple different PO numbers on different line items. | po-number |
PO Line Match | "id": "item_order_item_match", "type": "enum", ”hidden”: false, ”source”: “data“, "required": false | Lines of the PO evaluated in the PO Number (calculated) field are taken into consideration. The matching logic is following:
Dataset: purchase_order_lines | |
PO Line Status | "id": "item_po_line_status_match", "type": "enum", ”hidden”: false, ”source”: “data“, "required": false | Status of the matched PO line. Business rules:
If the formula above does not match there is an error and document cannot be confirmed. Dataset: purchase_order_lines | |
PO Line Currency (Coupa) | "id": "item_po_line_currency_match", "type": "enum", ”hidden”: false, ”source”: “data“, "required": false | Currency propagated from the PO line matched in the PO Line Match field. Business rules:
If the formula above does not match there is a warning message and automation is blocked. Dataset: purchase_order_lines | |
PO Status | "id": "item_order_header_status_match", "type": "enum", ”hidden”: false, ”source”: “data“, "required": false | Status of the PO matched on the line. Business rules:
If the formula above does not match there is an error and document cannot be confirmed. Dataset: purchase_orders | |
Item Price (Coupa) | "id": "item_price_export", "type": "number", ”hidden”: false, ”source”: “formula“, "required": false |
|