Invoice data transformation logic
Summarize
Summary of Invoice data transformation logic
This document outlines the transformation logic used by the Accounts Payable Operations integration with Document Intelligence to convert invoice and invoice line data into formats compatible with the processing system. It covers how key fields such as invoice type, dates, currency, unit price, decimals, and reference fields are derived and converted to ensure accurate and consistent data handling within ServiceNow.
Show less
Invoice Type Derivation
- If the purchase order (PO) value is present, the invoice is classified as a PO invoice.
- If the PO value is absent, the invoice is classified as a Non-PO invoice.
Date Conversion
- Dates are converted to the ISO format (YYYY-MM-DD), considering MM-DD-YYYY formats for conversion.
- Dates in DD-MM-YYYY format where the day is less than 12 are not converted to avoid ambiguity.
- Multiple date formats such as "2nd Sep, 2022" and "09-02-2022" are standardized to ISO format.
Currency Conversion
- Supports US, European, and Indian number formats with different thousand and decimal separators.
- Converts various currency formats from the invoice, including amounts with currency codes or symbols, with or without spaces.
- Currency codes are validated against the active unique codes in the Currency [fxcurrency] table.
- For ambiguous or missing currency codes/symbols, currency defaults based on invoice type:
- PO invoices use the purchase order currency or system currency if unavailable.
- Non-PO invoices use the legal entity’s local currency or system currency if unavailable.
Unit Price Conversion
- Handles multiple locale-specific number formats similar to currency conversion.
- Converts unit price values with or without currency symbols/codes to a standardized numeric format.
Decimal Conversion
- Supports locale-specific decimal and thousand separators, including European, US, and Indian formats.
- Determines grouping and decimal separators based on user system locale settings.
- Converts invoice and invoice line decimal values accordingly, with empty values set if ambiguous decimal separators are detected.
Reference Field Value Fetching Logic
- Legal Entity: Derived by checking bill to company, street, city, state, country, and zip in order.
- Purchase Order: Strips prefixes from PO values to match unique ERP purchase orders.
- Supplier: Matches supplier names fully or partially with address context to find unique supplier records.
- Country: Uses invoice country value or defaults to ISO country codes if missing.
- Subtotal, Tax amount, Other charges: Numeric values are normalized based on decimal separator patterns; ambiguous formats result in empty field values to avoid errors.
Practical Impact for ServiceNow Customers
This transformation logic ensures that invoice data from diverse formats and locales is accurately normalized and integrated into ServiceNow’s Accounts Payable system. Customers can expect reliable classification of invoices, consistent date and currency formatting, and precise matching of reference data such as suppliers and purchase orders. This leads to improved data quality, streamlined invoice processing, and reduced manual intervention when handling invoices from multiple sources and regions.
Accounts Payable Operations integration with Document Intelligence converts the invoice and invoice line field values from the invoice document to a format supported by the system that processes the invoice.
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:
|