# Why did Charted not identify an invoice as a duplicate?

Charted's duplicate detection works by comparing the **file hash** of each uploaded invoice — a unique identifier generated from the exact binary contents of the file, including hidden metadata. Two invoices are only flagged as duplicates if their file hashes are identical.

This means that even if two invoices appear visually identical and contain the same vendor name, invoice number, date, and amount, they may still produce different file hashes — and therefore *not* be detected as duplicates.

> **Common reasons two invoices produce different file hashes**
>
> * **File metadata differences** — metadata such as the date a file was saved, the application that created it, or author information is included in the hash. Even re-saving or re-exporting an identical document changes its metadata.
> * **Re-exported PDFs** — exporting the same Word or Excel document to PDF twice will generate two distinct files with different hashes, even if the visible content is unchanged.
> * **Scanned invoices** — invoices that arrive as physical paper and are scanned will almost never match a previously scanned copy, because each scan produces a new image file with unique binary content.
> * **Vendor-side regeneration** — if a vendor regenerates or resends an invoice from their system, the new file will differ at the binary level from the original, even if all the visible fields are the same.
> * **Previously failed scans** — if an invoice failed to process on its first upload and is resubmitted, the resubmitted file is treated as a new file unless it is the exact same copy.

{% hint style="info" %}
**Important:** Duplicate detection will only fire if the *exact same file* is uploaded again. A match on vendor name, invoice number, date, or amount alone is not sufficient to trigger a duplicate flag.
{% endhint %}

### Charted's duplicate check is the first line of defense, not the last

Even when a file-hash match doesn't occur, a second layer of protection exists within NetSuite itself. When a bill is created from a scanned invoice — including those processed through Charted — NetSuite checks the reference number against existing bills for the same vendor. If a matching invoice number is found, the person reviewing the bill will receive a duplicate warning at the point of saving.

At that point, the reviewer can choose to cancel and investigate, or proceed if the duplication is intentional (for example, a corrected re-issue of a previously voided bill).

> **How NetSuite duplicate number warnings are configured**
>
> Whether this warning appears depends on how your NetSuite account preferences are set. There are two levels of configuration:
>
> * **Account-level** — an administrator can configure a warning or block for all users at *Setup > Accounting > Preferences > Accounting Preferences*, under the Items/Transactions subtab. Options include no warning, a warning only, or blocking the save entirely.
> * **User-level** — individual users can enable the warning for themselves at *Home > Set Preferences*, on the Transactions subtab, by checking the **Duplicate Number Warnings** box. Administrators can prevent users from overriding the company setting at *Setup > Company > General Preferences*.

{% hint style="info" %}
If your team isn't currently seeing these warnings, we recommend reviewing your Duplicate Number Warnings preference with your NetSuite administrator.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.charted.com/ap-automation/charted-faqs/invoice-ai/why-did-charted-not-identify-an-invoice-as-a-duplicate.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
