> ## Documentation Index
> Fetch the complete documentation index at: https://help.polygon-one.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Import Errors (EUDR)

> Check EUDR import results, identify errors and safely retry corrected files

## How to read the import result

After selecting an article, supplier, order or BOM file, the import checks what would change. **If no overwrites need confirmation, the import starts directly.** Otherwise the **Import preview** opens: review the changes, select the overwrites you want and confirm. Closing the preview without confirming does not execute this import.

A completely successful import of new records may show only a short success message. Updates, skipped rows, consolidated article rows or errors open the detailed result view. The error table contains **Identifier**, **Type** and **Error**; depending on the result, you may need to expand the error details first. Valid records may have been saved even when others failed.

> [!NOTE]
>
> The error table has **no row-number column**. **Identifier** contains the row's key — article number, supplier name or order number. Only if that key is missing does the row number take its place. Find the affected file row using this identifier.

An exception is a **file error**: if the file cannot be read, nothing is imported. See [Errors affecting the whole file](#errors-affecting-the-whole-file).

> [!WARNING]
>
> **One invalid material row blocks the entire parent article in a BOM import.** Its existing material list stays unchanged. Valid material lists for other articles can still be saved. On retry, include the **complete** intended material list for each affected article: a confirmed valid list replaces its existing materials.

> [!NOTE]
>
> Use the search at the top (`Ctrl`/`Cmd` + `K`) to find the message. Names, numbers and counts vary by file; the examples below explain the main cases.

### Recover after an error

1. Check the result counts and affected identifiers first. **Skipped** does not automatically mean an error: records may be unchanged, rows consolidated or overwrites deselected by you.
2. Correct the reported values or column mapping under **Settings → CSV Imports**. For a supplier conflict, the name and external ID must point to the same supplier.
3. Reload the list and check what was already saved. Re-import the corrected records. For **orders and BOMs**, keep all related order items or materials together.
4. Use the help in the result dialog where offered. For a readable file with an unsuitable structure, **AI Import** may be offered; you review its extracted data before accepting it.

**Large files and interruptions:** Spreadsheet imports accept CSV, XLSX and XLS up to **50 MB**. Article, supplier and order imports process large files in several steps. A later failure does not roll back earlier saves; the interrupted step may also have saved some data. The interruption message may give a **minimum count** of saved records. Reload the list before retrying. If you need to split a file, keep each complete article, supplier or order together.

## Which import matches on which key

Matching messages depend on the **key used by the particular import**. There is no single key shared by all imports:

| Import | Matching key | Creates missing records? |
| - | - | - |
| **Articles** | **Article number** (the internal article number) | Yes — articles and, for purchase rows, suppliers |
| **Suppliers** | **External ID** or **Name** (see below) | Yes — suppliers |
| **Orders** | **Order number** | Yes — orders, articles **and** suppliers |
| **BOM** | **Parent article number** | No |
| **Plots** | **Name + country + geometry + assigned articles** (see below) | Yes — plots; a match is updated as described below |

All keys apply **within your company** and match only **non-deleted** records.

In a **plot import**, a row matches an existing active plot when its **name**, **country**, **geometry** and **assigned articles** all match. If any one differs, an additional plot is created. Name and country comparisons ignore case and repeated spaces.

On a match, the existing plot is **updated** if the row brings new **Producer**, **Production start**, **Production end** or **wood species** information. These describe the plot; they do not identify it. Such a row counts as **updated**. If it brings nothing new, it counts as **unchanged** and the plot's information stays as it was.

> [!NOTE]
>
> **An empty cell never clears a saved value.** Only filled values are applied. Re-import does not alter an existing plot's **name**, **country**, **geometry** or article assignment. To correct geometry, edit the plot in the [Plots view](https://help.polygon-one.com/en/eudr/optional/plots.md): an import with different geometry creates a **second** plot.

> [!NOTE]
>
> Article assignment is identical for **all** rows of one import. It comes from your dialog selection, not the file, so it cannot distinguish two rows in that file.

> [!WARNING]
>
> **Article numbers are compared character for character.** Case matters: `ART-1001` and `art-1001` are different articles. Leading and trailing spaces are removed; nothing else changes. This applies equally to article, order and BOM imports.

### Suppliers: external ID or name

The **supplier import** looks up each row in **two** ways and matches if **either** fits:

* **External ID** — trimmed, otherwise compared exactly. Takes precedence when both match.
* **Name** — trimmed, repeated spaces collapsed, **case ignored**. `Meyer  GmbH` therefore finds `meyer gmbh`.

If the external ID matches a **different** supplier from the name, the row is ambiguous and fails — see [Supplier import messages](#supplier-import-messages).

The **article** and **order** imports use these same two lookup paths, with the column named **External supplier ID**, and **automatically create unknown suppliers**. One small difference: the order import also collapses repeated spaces when comparing external IDs; the supplier import only trims them.

> [!NOTE]
>
> The **article import** creates suppliers only for **purchase rows**. If a row gives only an unknown **External supplier ID** without a name, it creates a placeholder called **Unknown Supplier**. Complete that record afterwards or provide the name in the file.

## Duplicate rows in the same file

> [!WARNING]
>
> **Article and supplier imports merge duplicate rows instead of reporting them as errors.** Repeated article numbers or suppliers produce **one** record. Field by field: a value filled in only one row is retained; equal values in both rows cause no change.

In the **article import**, a result note explains how many rows were consolidated into earlier article rows; their suppliers are linked to the shared article. The **supplier import** counts consolidated rows as **skipped** without listing each one. The number of saved records can therefore be lower than the number of file rows.

If two rows conflict — the same field has two **different**, non-empty values — the record is **not imported at all**. Both imports name the affected record: **Conflicting rows for article … in the file** or **Conflicting rows for supplier … in the file** (see below).

> [!WARNING]
>
> For articles, a conflict excludes the **entire** article, including information from rows that otherwise complemented each other. The error is assigned to the **first** occurrence of that article number, not to the row containing the conflicting value.

**How to fix it:** Merge the affected rows into one yourself and decide which value is correct. Before importing, use a pivot or duplicate check to find repeated article numbers.

> [!NOTE]
>
> **Duplicate PPWR entity keys are handled differently.** They produce **Duplicate key in file — first occurrence imported, this row skipped** instead of being merged. Multiple size rows for the same packaging unit may deliberately share one **Reference**, however; together they form that unit's size range. See [Import Errors (PPWR)](https://help.polygon-one.com/en/ppwr/stammdaten/import-fehler.md#duplicate-key-in-file).
>
> **In order imports, repeated order numbers are normal:** every row is an **order item**. Several rows sharing an order number form one order with several items.

## Required fields missing

### Name is required

> Name is required

**When does this happen?** The **Name** column is empty in an **article** or **supplier** import.

**How to fix it:** Add the name. If your file uses another column heading, map it once under **Settings → CSV Imports**.

### Article number is required

> Article number is required

**When does this happen?** **Article number** is empty in an **article** or **order** import. Both templates use this heading for the *internal* article number, as their column descriptions explain.

**How to fix it:** Add the article number. It is the matching key; without it, the import can neither match nor create an article.

### Email is required

> Email is required

**When does this happen?** **Email** is empty in the **supplier import**. An empty cell often also produces **Invalid email address**; both describe the same issue.

**How to fix it:** Enter an email address. It is required because supplier data requests will be sent there.

### Order number is required

> Order number is required

**When does this happen?** **Order number** is empty in the **order import**.

**How to fix it:** Add the order number. It is the order's matching key; rows sharing it are combined into one order.

### Order type is required

> Order type is required

**When does this happen?** **Order type** is empty in the **order import**.

**How to fix it:** Enter `purchase` for incoming goods or `sale` for outgoing goods. See [Invalid order type](#invalid-order-type) for accepted spellings.

### Supplier name is required

> Supplier name is required

**When does this happen?** In the **order import**, **Supplier** is empty and the **order type is not sale**. Purchase orders always need a supplier. Sales orders use your own company instead, so their supplier cell may be empty.

**How to fix it:** Add the supplier name, or correct the order type if this is actually a sales order.

### Either quantity (kg) or piece count is required

> Either quantity (kg) or piece count is required

**When does this happen?** Both **Quantity** and **Piece count** are empty in the **order import**. The template calls the column Quantity; the error adds “(kg)” because the unit is kilograms.

**How to fix it:** Fill one of them. With only a **piece count**, the article needs a **Weight per piece (kg)** to calculate quantities for the due diligence statement — see [Weights](https://help.polygon-one.com/en/eudr/datenhaltung/gewichte.md).

### Parent article number is required

> Parent article number is required

**When does this happen?** **Parent article number** is empty in the **BOM import**.

**How to fix it:** Enter the internal number of the composite article this material belongs to. Each BOM row belongs to exactly one parent article.

### Material name is required

> Material name is required

**When does this happen?** **Material name** is empty in the **BOM import**.

**How to fix it:** Describe the material, for example `Oak veneer backrest`. The name is free text used for traceability.

### Either HS code or commodity group is required

> Either HS code or commodity group is required

**When does this happen?** Both **HS code** and **Commodity group** are empty in the **BOM import**.

**How to fix it:** Fill one. The **commodity group** takes precedence if you know the material but have no component-level HS code. Otherwise an **HS code** is sufficient to derive the group.

## Invalid values

### Invalid article type

> Invalid article type. Accepted values: purchase, sale, buy, sell, einkauf, kauf, verkauf, production, produktion, procurement, manufacture, make, internal

**When does this happen?** **Article type** in the **article import** contains a value outside this list.

**How to fix it:** Use a listed value; `purchase` and `sale` cover the two basic cases. Case is ignored. If your file uses its own abbreviation, add a **value mapping** under **Settings → CSV Imports → Articles**. An **empty** cell is allowed and creates a purchase article.

### Invalid order type

> Invalid order type. Accepted values: purchase, sale, buy, sell, einkauf, kauf, verkauf, production, produktion, procurement, manufacture, make, internal

**When does this happen?** **Order type** in the **order import** contains a value outside the list.

**How to fix it:** Use a listed value or map your abbreviation under **Settings → CSV Imports → Orders**. Unlike article type, order type is **required** and cannot be blank.

### Invalid value for Origin per order

> Invalid value for "Origin per order". Accepted values: standing, perOrder

**When does this happen?** In the **article import**, **Origin per order** contains something other than `standing` or `perOrder`.

**How to fix it:** `standing` means the article continually comes from the same sources; `perOrder` means origin is collected again for each order. Case is ignored. Empty is allowed and means `standing`. Map values such as yes/no under **Settings → CSV Imports**.

> [!NOTE]
>
> This column applies **only when creating** an article. Import never changes an existing article's origin mode, even if the file has a different value. Change it on the article itself.

### Invalid date

> Invalid date — accepted: DD.MM.YYYY or YYYY-MM-DD

**When does this happen?** A date column — **Order date** or **Delivery date** in the **order import** — contains an ambiguous or unreadable format.

Exactly two date forms are read:

* **`DD.MM.YYYY`** — dots, **always day first**. An appended time, such as `01.03.2026 00:00:00` from SAP, DATEV or Sage, is allowed and discarded. Two-digit years (`DD.MM.YY`) are also allowed and follow Excel's rule: `00`–`29` mean 2000–2029, `30`–`99` mean 1930–1999. Thus `01.03.30` means 1 March **1930**; use four-digit years if in doubt.
* **`YYYY-MM-DD`** — ISO, optionally including a time.

**How to fix it:** Use one of these forms. Excel **date cells** are also read correctly; this error concerns cells stored as **text**.

The **plot import** applies the same rule to **Production start** and **Production end**. Its message is in English even in the German interface. However, an ISO date in that import must have **no time-zone specification**: `2026-01-15T00:30+02:00` is rejected.

> [!WARNING]
>
> **Slash-separated dates are rejected, not guessed.** `01/03/2026` could mean 1 March or 3 January. Polygon One flags the row instead of choosing. Rejection is visible; a wrong guess would be silent.

### Invalid email address

> Invalid email address

**When does this happen?** **Email** in the **supplier import** contains an invalid address: a missing `@`, spaces, several comma-separated addresses, or an imported display name such as `Meyer <a@b.de>`.

**How to fix it:** Use exactly **one** address per row, without a display name. Import the main address and add further contacts to the supplier record.

### Invalid commodity group

> Invalid commodity group

**When does this happen?** The **BOM import** does not recognise the **Commodity group** value. The German template and error use different terms for this same column.

**How to fix it:** Use the values from your downloaded template or a saved value mapping under **Settings → CSV Imports → BOM**. The technical values are `wood`, `cattle`, `rubber`, `cocoa`, `coffee`, `oil_palm`, `soya` and `non_relevant`. Importers also recognise translated values from localised templates; custom codes need a mapping.

### Weight must be a non-negative number

> Weight must be a non-negative number

**When does this happen?** **Weight (kg)** in the **BOM import** contains a non-numeric or negative value.

**How to fix it:** Enter a number ≥ 0 or leave it blank. Common causes are a unit included in the cell (`2,5 kg` instead of `2.5`) or text such as `N/A`.

Decimal separators: in **Excel**, cells formatted as **numbers** work with a displayed comma; a **text** cell containing `2,5` fails. A **semicolon-delimited CSV** recognises decimal commas provided its header contains no comma, tab or `|`. In a **comma-delimited CSV**, use a dot (`2.5`).

## Matching articles and suppliers

### Article '…' is new and requires an HS code

> Article 'ART-1001' is new and requires an HS code.

**When does this happen?** A row would create a **new** article but **HS code** is empty:

* **Article import:** the article number is unknown. This check applies only if your **EUDR module** is active; PPWR-only users may leave the column empty.
* **Order import:** an order item refers to an unknown article number. This import creates missing articles automatically and needs the row's HS code.

For an **existing** article, this error does not occur: an **empty** HS-code cell leaves the saved code unchanged.

**How to fix it:** Add the HS code. Polygon One uses it to determine EUDR relevance; without it, that question cannot be answered, so the row is not imported. Alternatively, create articles through the **article import** before importing orders.

> [!WARNING]
>
> **Placeholders do not replace an HS code.** When creating new articles, both article and order imports treat cells containing only spaces, dots, hyphens or slashes (`-`, `.`, `/`) as empty and reject them.
>
> For **existing articles in the article import**, a non-empty placeholder may be offered as a change to confirm. Do not confirm it. Leave the cell empty to preserve the saved HS code.

### Article '…' was deleted

> Article 'ART-1001' was deleted. Restore it on the Articles page by enabling the Show deleted filter.

**When does this happen?** The article number exists only on a **deleted** article. Import does **not** create another article with that number, which would separate its history from orders and evidence.

**How to fix it:** Open **Articles**, enable **Show deleted**, select and restore the article, then re-import. If it really is a new article, use a different article number.

### Parent article not found

> Parent article not found

**When does this happen?** No active article matches the **Parent article number** in the **BOM import**. A deleted article counts as absent.

**How to fix it:** The BOM import creates **no articles**. Import articles first, then the BOM. Also check spelling: numbers are compared exactly.

### Supplier '…' was deleted

> Supplier 'Meyer GmbH' was deleted. Restore it on the Suppliers page by enabling the Show deleted filter.

**When does this happen?** The row's supplier exists only as a **deleted** record. This affects **article** and **order** imports; they do not create a second supplier with the same name.

**How to fix it:** Open **Suppliers**, enable **Show deleted**, restore the supplier and re-import. For a different company sharing the name, use a distinguishable name or its own **External supplier ID**.

### Supplier '…' could not be matched

> Supplier 'Meyer GmbH' could not be matched.

**When does this happen?** In the **order import**, a row contains no usable supplier information. Unknown suppliers are created automatically; this means there is nothing from which to create a supplier, not that the supplier is unknown.

In practice this occurs when the **order type is not sale** and the supplier cell is empty or whitespace-only. The message itself then has **no name** between the quotes: `Supplier '' could not be matched.`

**How to fix it:** Add a supplier name and, where applicable, an **External supplier ID**. In the file import, the external ID does not replace the required name on a purchase row. If it is a sales order, set **Order type** to `sale` so your company takes the supplier's place.

### Purchase articles require supplier information

> Purchase articles require supplier information.

**When does this happen?** A **purchase article** row in the **article import** (type empty or `purchase`) contains neither a usable **supplier name** nor an **External supplier ID**.

The same error appears if a supplied reference leads nowhere, such as an exported internal supplier ID belonging to no active supplier in your company.

**How to fix it:** Add the supplier's name or external ID. Without a supplier, there is nobody to receive the article's EUDR data request. For a sales article, set **Article type** to `sale` so your own company becomes the supplier.

### Company self-supplier not configured

> Company self-supplier not configured. Please check your company settings.

**When does this happen?** A **non-purchase** row (sale, production or internal) uses your own company as supplier. Polygon One creates and restores this self-supplier record automatically when needed. This error therefore means that operation failed, for example due to a temporary database issue, rather than that a setting is missing.

**How to fix it:** Re-import; this is usually temporary. If it recurs, contact Support with the time and order or article number. The failure is reported to error monitoring automatically. Purchase rows are unaffected and continue to import.

### Supplier "…" already exists with external ID "…"

> Supplier "Meyer GmbH" already exists with external ID "L-100", but the file contains "L-200". Align the external ID under Suppliers or in the file and import again.

**When does this happen?** Two cases in the **article import**:

* A row names an existing supplier but gives a **different** external supplier ID.
* Two rows in the **same file** try to create two **new** suppliers with the same name and **different** external IDs.

Neither case creates a duplicate supplier or guesses an assignment.

**How to fix it:** Decide which ID is correct and align the file or the supplier in Polygon One. Give **different** companies with the same name distinguishable names.

### Conflicting values for order '…'

> Conflicting values for order 'PO-1001' — its header values disagree between the rows in the file or with the existing order. Make them consistent, then re-import.

**When does this happen?** The order has conflicting header values:

* Rows sharing an **order number** disagree on the order **header**: order date, order type, supplier information or DDS reference numbers. Item information — article, quantity and **delivery date** — may differ; the header may not. Different delivery dates mean a partial delivery: each item retains its date, while the order shows the earliest.
* The file conflicts with an **already saved** order with that number: a different supplier, order type or an order date that is filled on both sides but differs.

**How to fix it:** Reconcile all items' header values with the saved order. Then re-import all items for that order.

### Conflicting position IDs or HS codes

If you use **position IDs**, every row of the same order needs an ID, and each ID must be unique within that order. The messages identify mixed rows with and without IDs or a duplicate position ID. Add or correct the IDs; keep IDs stable for unchanged positions.

The message about **two different HS codes** applies to purchase orders when order-specific article creation is enabled. If it appears, establish the correct code and make that article's rows consistent within the order.

### An error occurred

> An error occurred. Please try again.

**When does this happen?** An unexpected saving error could not be assigned a more specific cause.

**How to fix it:** Check what was already saved, then retry the affected records. If the error persists, contact Support with the time, import type and identifier from the error table.

## BOM: article skipped or confirmation required

### A row of this article failed validation

> 1 row of this article failed validation — none of its materials were imported

**When does this happen?** At least one material row for an identifiable parent article is invalid. The import also excludes its other material rows and preserves its saved material list. Articles without invalid material rows can still be imported.

**How to fix it:** Read the individual messages too, such as a missing material name or invalid weight. Correct every row for this article and re-import its **complete** BOM.

### Stored material list would change

> This article's stored material list would change — confirm the replace in the import preview, or re-run the import to review the change

**When does this happen?** An existing material list could not be replaced with valid confirmation, for example because the confirmation requirement changed after the preview.

**How to fix it:** Restart the import. Check **removed materials** in the preview as well and confirm only the intended articles. Deselecting an article skips all its material rows.

## Supplier import messages

These three messages come only from the **supplier import**. **An error occurred. Please try again.** instead means an unexpected row-write error, as described above.

### Conflicting rows for supplier '…' in the file

> Conflicting rows for supplier 'Meyer GmbH' in the file — multiple rows describe the same supplier with different values. Make the information consistent and import again.

**When does this happen?** Conflicting duplicate supplier rows **in your file** prevent that supplier from being imported:

* Rows sharing a name or external ID give **different**, non-empty email, contact, country, address or external-ID values.
* Rows share the **same external ID** but have **different names**.
* One row belongs to one group by external ID and a **different** group by name.

**How to fix it:** Merge them into **one** row and choose the correct values. Complementary rows (one with email, another with country) are not errors; import silently combines them.

### Ambiguous match for '…'

> Ambiguous match for 'Meyer GmbH'

The rest of the message explains whether the name or external ID matches multiple suppliers or they point to different suppliers.

**When does this happen?** An ambiguous match **in the platform**: multiple suppliers share the name or ID, or the **name** matches a different supplier from the **external ID**. Neither is chosen.

A rarer case: two imports create the same new supplier **concurrently**. The second encounters the name rule, looks up the newly created supplier and finds multiple matches. The message can then appear even with a correct file.

**How to fix it:** Search **Suppliers** and resolve duplicate names or IDs by deleting, renaming or correcting them, then re-import. If another import ran concurrently, repeating yours may be enough.

### Supplier '…' changed during import

> Supplier 'Meyer GmbH' changed during import. Please import this row again.

**When does this happen?** The supplier **disappeared** before the update: it was **deleted** during import or no longer belongs to your company. A concurrent content **edit** does not trigger this error; it is handled when writing.

**How to fix it:** First check **Suppliers → Show deleted** and restore the supplier if necessary.

> [!WARNING]
>
> Do **not** simply retry without checking. If the supplier was deleted, re-import does **not** restore it: it creates a **new** supplier of the same name, with empty history and none of the old evidence or requests.

## Errors affecting the whole file

These messages mean **not a single row** was imported. They appear as a title and explanation, rather than a row error.

### File format not supported

> **File format not supported** — This file cannot be imported. Upload a CSV or Excel file (.csv, .xlsx, .xls).

**When does this happen?** The file has another extension, commonly `.numbers`, `.ods`, `.txt` or `.pdf`.

**How to fix it:** Export or save as CSV or Excel and upload again. **Plots** also accept GeoJSON.

### File could not be read — differing column count

> **File could not be read** — Some rows have a different number of columns from the header. A common cause is mixed delimiters (commas and semicolons). Export again with one consistent delimiter and no empty rows.

**When does this happen?** CSV rows contain more or fewer fields than the header. The message lists affected row numbers.

**How to fix it:** Export with **one** delimiter (Excel: **Save as → CSV**) and remove empty trailing rows. Quote fields that contain the delimiter. The **Excel template** (`.xlsx`) is the most robust option.

### File could not be read — unbalanced quotation marks

> **File could not be read** — Incorrect quotation marks prevent fields from being separated reliably. Check the marked rows or export the file again.

**When does this happen?** A CSV quote is not closed or a quote inside text is not doubled, causing one field to consume the rest of the row.

**How to fix it:** Check the indicated rows. Double quotes **inside** a field (`"Oak ""solid"""`). It is easier to re-export from Excel or use the Excel template.

### File could not be read — file could not be processed

> **File could not be read** — The file could not be processed. Make sure it is a valid CSV or Excel file and export it again if needed.

**When does this happen?** The extension is correct but the file cannot be opened: it may be damaged, password-protected or another format with a renamed extension.

**How to fix it:** Open in Excel, remove password protection if present and save again as `.xlsx` or `.csv`.

> [!NOTE]
>
> The next six messages apply **only** to GeoJSON uploads in your **suppliers' data form**, not to the plot import in your own interface. Your import instead provides a review view with its own guidance.

### Invalid GeoJSON file

> **Invalid GeoJSON file** — The file does not contain valid JSON and cannot be read. Export the GeoJSON file from your GIS software again.

**When does this happen?** In the **supplier form**, the file is syntactically invalid JSON: a truncated download, an extra leading character or different content given a `.geojson` extension.

**How to fix it:** Export again from your GIS (QGIS: **Export layer → GeoJSON**) and upload without modifying the file.

### Not valid GeoJSON

> **Not valid GeoJSON** — Expected a FeatureCollection, Feature or geometry (Polygon, MultiPolygon, Point, MultiPoint).

**When does this happen?** In the **supplier form**, valid JSON lacks GeoJSON structure, for example a Shapefile attribute table exported as JSON or a custom format.

**How to fix it:** Export genuine GeoJSON with `"type": "FeatureCollection"`, `"Feature"` or a geometry type at the top level.

### Geometry type not supported

> **Geometry type not supported** — Only Polygon, MultiPolygon, Point and MultiPoint are allowed; lines are not supported.

**When does this happen?** In the **supplier form**, the file includes a type such as `LineString`. The message identifies the affected object's number.

**How to fix it:** Convert it to a polygon in GIS, or a point for a plot smaller than 4 ha, and export again.

### No plots found

> **No plots found** — No valid plots were found in the GeoJSON file. Check it and export again if needed.

**When does this happen?** In the **supplier form**, structure is valid but no usable geometry exists, commonly an empty FeatureCollection because an export filter was active or nothing was selected.

**How to fix it:** Check the layer contains features, remove filters and selections, then export again.

### Geometry missing

> **Geometry missing** — At least one object has no geometry. Add the missing geometry or remove the affected object.

**When does this happen?** In the **supplier form**, a feature has `"geometry": null`, commonly an attribute-only GIS row with no drawing. The message identifies the object's number.

**How to fix it:** Draw the missing geometry in GIS or remove that object from the export.

### Coordinates outside the valid range

> **Coordinates outside the valid range** — Longitude must be within ±180 and latitude within ±90. Check that the file contains WGS84 longitude/latitude.

**When does this happen?** In the **supplier form**, coordinates exceed the degree range. Usually they use a **projected** coordinate system such as UTM or Web Mercator (EPSG:3857), with metre values, or latitude and longitude are reversed.

**How to fix it:** Reproject to **WGS84 (EPSG:4326)** and export again. GeoJSON uses longitude first, then latitude.

## Notes above the error list

These hints mean the file could be read. They do **not** confirm that records were saved. They appear in the result dialog and explain a common cause of many row errors.

### Required columns not found

> **Required columns not found** — Required columns are missing: `{columns}`. Add the exact template headers or map your existing columns under Settings → CSV Imports.

**When does this happen?** The file is readable but required columns cannot be found, often because headers differ by language, extra text or spelling, or because title rows precede the header. A missing column makes its value empty in **every** row, producing repeated errors such as **Article number is required**. The problem is the column rather than each row.

**How to fix it:** Match the template headers or map your own in the relevant **Settings → CSV Imports** tab. Leading blank and title rows are detected automatically; for an unclear structure, use one data table with its header at the top. Excel imports read the **first worksheet**.

### This looks like a different template

> **This looks like a different template** — These column headings match the `{template}` import template. If that is the template you filled in, import it there instead.

**When does this happen?** Your headers match a **different** template, such as a BOM file being uploaded through article import. The message names the recognised template: **Articles**, **Suppliers**, **Orders**, **Plots**, **BOM**, **Packaging units**, **Components**, **Packaging BOM** or **Packaging article links**.

**How to fix it:** Close the dialog and use the import button for that template. Article and BOM templates have different required columns and are not interchangeable — see [Article Import or Bill of Materials?](https://help.polygon-one.com/en/eudr/datenhaltung/import-oder-stueckliste.md).

> **[Article Import or Bill of Materials?](https://help.polygon-one.com/en/eudr/datenhaltung/import-oder-stueckliste.md)**
>
> Which import to use for each purpose.

> **[Articles](https://help.polygon-one.com/en/eudr/datenhaltung/artikel.md)**
>
> The complete article import column list.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.