Invoice data transformation logic

  • Release version: Australia
  • Updated March 12, 2026
  • 6 minutes to read
  • Summarize
    Summarized using AI
    This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.

    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 full answer 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

    The application includes the following logic for converting date formats mentioned in the invoice document:
    • 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.
    Table 1. Date conversion logic
    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.

    Table 2. Currency conversion logic
    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
    The application first looks for the active unique currency code in the Currency [fx_currency] table when an incoming invoice amount has a currency symbol or code. If multiple currency matches are found or the incoming invoice amount has no currency code or symbol, then the application runs the defaulting currency logic depending on the invoice type as follows.
    • 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.

    Table 3. Unit Price conversion logic
    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.

    Currency groupings on invoice and invoice lines are determined based on the user system locale settings. European currencies consider comma as a decimal separator and dot as a thousand separators. In some cases, various characters can also be used as grouping separator. The incoming invoice and invoice lines present in [sn_ap_ic_invoice_stage] and [sn_ap_ic_invoice_line_stage] tables are converted based on the positioning of decimal and thousand separators.
    Note:
    During conversion, for numbers such as 100,251 and 100.251, the system checks for other decimal separators mentioned in the invoice, and converts it to the appropriate decimal format. If the invoice contains fields with a single decimal separator, then conversion doesn’t apply for the invoice, and the value is set to empty as shown in the following table.
    For more information on currency conversion, see Currency administration.
    Table 4. Decimal conversion logic
    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

    Table 5. Reference field value logic
    Reference Field Logic to fetch the field value
    Legal Entity The system fetches the value by checking the following values in the order listed:
    1. Bill to company
    2. Street, City, State, Country, Zip
    3. City, State, Country, Zip
    4. State, Country, Zip
    5. Country, Zip
    6. Country
    7. Zip
    Purchase Order The system does the following:
    • The system considers the purchase order value mentioned in the invoice stage
    • If the purchase order value is prefixed with special characters, alphabets or zeroes, then the application ignores the prefixes and matches the remaining purchase order value with the ERP number from the purchase order table
    • If a unique purchase order is found, then the application populates the purchase order in the invoice
    Supplier The system does one of the following:
    • The system considers the value mentioned in the invoice and does a complete match with supplier in Supplier table.
    • If the invoice contains a purchase order associated with the supplier, the application matches with the supplier name mentioned in the invoice with the supplier name of purchase order and populates the supplier.
    • If the invoice document contains supplier name with more than two words, the application performs partial name match against the supplier details in the supplier table along with street address or city. Example. If the invoice document contains supplier name as XX Corp, and the supplier name in the supplier table is XX Ltd, the application matches XX in supplier table along with the address and populates the invoice document with the corresponding supplier.
    If a unique supplier record is found in any of the above, then the application populates the supplier in the invoice.
    Country The system does one of the following:
    • Considers the value mentioned in the invoice
    • If this value isn’t mentioned in the invoice, it populates the International Organization for Standardization (ISO) short country name or the ISO long country name
    Subtotal, Tax amount, Other charges The system does the following:
    • If the invoice contains XX.XXX,XXX the application groups the numeric to four digits after decimal separator.
    • If the invoice contains three numeric digits after the separator, the application sets the invoice fields to empty.
    • If the invoice contains a combination of decimal and thousand separators in a form, the application defaults to the numeric value to the decimal separator.
    • If the invoice contains negative amount or negative quantity, then the DocIntel transformation logic is updated to extract negative amounts where the negative sign is either:
      • Present after the value (header or line level)
      • Present within a bracket (header or line level)
      In such cases, the invoice is considered as of type Credit memo.