Invoice data transformation logic
Summarize
Summary of Invoice Data Transformation Logic
The Invoice Data Transformation Logic in Accounts Payable Operations integrates with Document Intelligence to standardize invoice and invoice line data—such as dates, currencies, unit prices, and decimals—into formats compatible with downstream processing systems. This ensures accurate and consistent processing of invoice data across multiple locales and systems.
Show less
Type Deriving Logic
The system determines the invoice type based on the presence of a purchase order (PO) value:
- If the PO value is present, the invoice type is set to PO type.
- If the PO value is absent, the invoice type is set to Non-PO type.
Date Conversion Logic
Date formats from invoices are converted to the ISO standard YYYY-MM-DD. The logic considers dates in MM-DD-YYYY format for conversion and excludes DD-MM-YYYY format if the day value is less than 12. Various common textual and numeric date formats are supported and converted accordingly.
Currency Conversion Logic
The application supports multiple locale formats (US, European, Indian) for currency amounts, recognizing various separators and formats. It normalizes amounts with or without currency symbols or codes into a consistent format, referencing the Currency [fxcurrency] table for currency codes.
If multiple currency matches or no currency code/symbol is found, defaulting logic applies based on invoice type:
- PO invoices: Currency is set based on the purchase order’s currency or falls back to system currency.
- Non-PO invoices: Currency is set based on the legal entity’s local currency or system currency if unavailable.
Unit Price Conversion Logic
The system converts unit prices supporting diverse locale formats with currency symbols or codes, ensuring consistent numeric representation regardless of formatting differences in the invoice.
Decimal Conversion Logic
Decimal and thousand separators are interpreted according to user system locale settings, handling variations between European and other formats. The system detects multiple separators for accurate conversion, but if only a single decimal separator is present, it sets the value to empty to avoid incorrect interpretations.
Reference Field Value Logic
Reference fields such as Legal Entity, Purchase Order, Supplier, and Country are populated using hierarchical or matching logic:
- Legal Entity: Derived from invoice address fields in a prioritized order.
- Purchase Order: Matches purchase order values from the invoice, ignoring prefixes, against ERP purchase orders.
- Supplier: Matches supplier names from the invoice with the Supplier table using exact and partial matching combined with address details.
- Country: Uses invoice data or defaults to ISO country codes if absent.
Monetary Amounts and Credit Memo Handling
Subtotal, tax, and other charge amounts are normalized considering decimal grouping and separators. Negative amounts, indicated by trailing minus signs or brackets, are detected and flagged to classify the invoice as a Credit memo.
Practical Implications for ServiceNow Customers
This transformation logic enables ServiceNow customers to reliably ingest and process invoices from diverse sources and locales, reducing manual intervention and errors caused by inconsistent data formats. By automatically deriving invoice types, normalizing dates, currencies, and numbers, and matching critical reference data, customers can streamline accounts payable operations and improve integration with ERP systems.
Accounts Payable Operations integration with Document Intelligence transforms invoice and invoice line field values, including dates, currencies, unit prices, and decimals, into formats supported by downstream processing systems.
Type deriving logic
The application includes the following logic for deriving the type field on the invoice.
- Considers the purchase order value in the invoice stage record
- If the purchase order value isn’t empty, then the invoice type is set to PO type.
- If the purchase order value is empty, then the invoice type is set to Non- PO type.
Date conversion logic
- Considers YYY-MM-DD as the ISO format and the system format for date conversion.
- Considers dates only in MM-DD-YYYY format for conversion.
- Doesn’t consider dates in DD-MM-YYYY format if DD is less than 12.
| Date format in the incoming invoice | Converted date format |
|---|---|
| 2nd Sep, 2022 | 2022-09-02 |
| 3rd September, 2022 | 2022-09-02 |
| 02-Sep-2022 | 2022-09-02 |
| 02-Sept-2022 | 2022-09-02 |
| Sept-02-2022 | 2022-09-02 |
| Sep-02-2022 | 2022-09-02 |
| 09-02-2022 | 2022-09-02 |
| 02-09-2022 | 2022-02-09 |
| 09/02/2022 | 2022-09-02 |
| 02/09/2022 | 2022-02-09 |
Currency conversion logic
The application supports different locale such as US, European and Indian number systems. For example, "X,XXX.XXX", "X.XXX,XX", "XX,XX.XXX" where X is a single-digit positive number.
| Scenario | Currency format in the incoming invoice | Converted currency format |
|---|---|---|
| Amount followed by a space and the currency code | 76 EUR | 76 EUR |
| Amount followed by a space and the currency symbol | 76 € | 76 EUR |
| Currency code followed by multiple spaces and the amount | EUR 76 | 76 EUR |
| Currency symbol followed by multiple spaces and the amount | € 76 | 76 EUR |
| Amount without a currency code or symbol | 76 | 76 (followed by the purchase order currency or the session currency) |
| Amount separated by comma, dot or any other grouping or decimal separator followed by a space and the currency code | 7.123.456,99 EUR | 7123456.99 EUR |
| Amount followed by the currency code without any space | 76EUR | 76 EUR |
| Amount followed by the currency symbol without any space | 76€ | 76 EUR |
| Currency code followed by the amount without any space | EUR76 | 76 EUR |
| Currency symbol followed by the amount without any space | €76 | 76 EUR |
- PO invoice - Searches for purchase order and related currency, and sets the invoice currency to purchase order currency. In case of missing purchase order or related currency, the invoice currency is set to system currency.
- Non- PO invoice - Searches for legal entity and local currency, and sets the invoice currency to the legal entity's local currency. In the case of missing legal entity and local currency, the invoice currency is set to system currency.
Unit Price conversion logic
The application supports different locale such as US, European and Indian number format locale. For example, "X,XXX.XXX", "X.XXX,XX", "XX,XX.XXX" where X is a single-digit positive number.
If the incoming invoice unit price consists of currency symbol or code present in Currency [fx_currency] table, then the unit price is converted. For example, $ XX,XXX,XXX.XX or USD XX,XX,XXX.X, where X is a single-digit positive number.
| Unit price mentioned in the incoming invoice | Converted unit price |
|---|---|
| 1,000,25.10 | 100025.10 |
| 1,00,025.10 | 100025.10 |
| $1,000,25.10 | 100025.10 |
| 1,000,25.10 $ | 100025.10 |
| USD1,00,025.10 | 100025.10 |
| 1,00,025.10 USD | 100025.10 |
Decimal conversion logic
The application supports different locale such as US, European and Indian decimal format locale. For example, "X,XXX.XXX", "X.XXX,XX", "XX,XX.XXX" where X is a single-digit positive number.
| Decimal format mentioned in the incoming invoice | Converted decimal format |
|---|---|
| 1,000,25.10 | 100025.10 |
| 1,00,025.10 | 100025.10 |
| 100,251 | 100,251 |
| 10.102,510 | 10102.51 |
| 10.10.102,510 | 1010102.51 |
| 100,251 | |
| 100.251 |
Logic to fetch reference field values
| Reference Field | Logic to fetch the field value |
|---|---|
| Legal Entity | The system fetches the value by checking the following values in the order listed:
|
| Purchase Order | The system does the following:
|
| Supplier | The system does one of the following:
|
| Country | The system does one of the following:
|
| Subtotal, Tax amount, Other charges | The system does the following:
|