Skip to main content
Reference for the messages Bulk Import returns during validation and after an import runs. For the workflow that uses this page, see How to Fix a Failed Bulk Import.

How to read an import error

Row errors name the column and the reason, and are reported against the source row they came from. Errors appear in three places. In the wizard they appear inline during mapping and validation. After an import runs, the failed rows appear on the status screen in a table with Row #, Field, and Reason columns. Both stages also produce a downloadable CSV report, whose columns are row_index, error_field, and error. Two reports exist: the validation report, named <record type>_validation_report.csv, and the import report, named <record type>_import_report.csv. Both contain failed rows only. Failed rows are never imported. Successful rows in the same file are committed.

Value errors

Column "<name>" — value is invalid.

The generic fallback when a value does not satisfy the destination field and no more specific rule applies. Check the value against Accepted value formats. On a line-level field of a multi-row record the message names the line instead: Line 3, column "Amount" — value is invalid. The whole record fails, not just that line.

Column "<name>" — expected a number, found "<value>".

The column takes a number and the value is not one. Currency symbols, thousands separators, percent signs, parentheses for negatives, and text such as n/a all produce this.

Column "<name>" — value "<value>" is not a valid decimal number.

The value looks numeric but cannot be parsed as a decimal, usually because of a stray character or a second decimal point.

Column "<name>" — cannot determine separator in "<value>".

The value mixes commas and periods in a way that could be either a thousands separator or a decimal point, such as 1.234,56. Write the number with no thousands separator.

Column "<name>" — date format invalid, found "<value>".

The date is not written as YYYY-MM-DD. Excel date serial numbers such as 45123, slash formats, month names, and timestamps all fail. See Date.

Column "<name>" — date "<value>" is ambiguous.

The value parses to more than one possible date. This only occurs where more than one date format is accepted, such as when Copilot repairs a file. YYYY-MM-DD is never ambiguous.

Column "<name>" — value "<value>" is not a valid date or time.

A date-and-time column could not be parsed.

Column "<name>" — value "<value>" interpreted as UTC; consider adding an explicit timezone.

A warning rather than a failure. The row imports, with the time read as UTC.

Column "<name>" — value "<value>" is not a yes/no value.

A true or false column received something outside the accepted set. Accepted values are listed under Accepted value formats; they are case-insensitive.

Column "<name>" — value "<value>" is not recognised. Allowed: <options>.

The value is not one of the options the field accepts. The message lists the accepted options. Values are matched against the configured list rather than interpreted, though capitalization is forgiven.

Column "<name>" — violates <constraint>: <detail>.

The value breaks a database constraint on the destination field, such as a uniqueness rule. The detail names the constraint.

Missing value errors

Column "<name>" — required value is missing.

A required field is blank on this row.
  • The cell is empty in the source file. Supply the value.
  • The value exists but only on the first line of a multi-row record. Repeat header values on every line of the record.
  • The cell contains a space or a non-breaking space rather than a value. Trim the column with =TRIM(A2).

Column "<name>" — required column is not mapped.

A field the record type requires has no source column behind it. Add the column to your file and map it. Required fields cannot be removed from the mapping.

Reference errors

Bulk Import does not create referenced records. Every record a row points at must exist before you import.

Column "<name>" — referenced value "<value>" not found.

The row points at a record DualEntry cannot resolve. Referenced fields include GL accounts, companies, vendors, customers, items, currencies, classifications, and document references such as bill numbers.

Column "<name>" — referenced value "<value>" is inactive.

The record exists but is archived or inactive. Reactivate it, or point the row at an active record. This is a separate message from not found, so the record itself is not the problem.

Column "<name>" — reference value "<value>" could not be resolved.

The value could not be turned into a reference at all, usually because an ID column received something that is not an ID.

Column "<name>" — referenced <entity> does not exist.

The database rejected the reference when the row was written. Treat it as not found.

Matching and duplicate errors

Bulk Import upserts. It creates rows that do not exist and updates rows that match an existing record on the record type’s match key. Matching errors mean the key does not resolve to exactly one record. Match keys are configured per record type rather than fixed, so the columns named in these messages vary. Where a record type has an identity column, such as the record’s DualEntry ID, supplying it overrides the composite match entirely and targets exactly one record. Leaving any match key column blank makes the row a create rather than an update.

Multiple existing records match this row's columns "<A>", "<B>" and "<C>". Refine the data to identify a single record.

Two or more records already in DualEntry share the same match key values, so the import cannot decide which one to update. Re-uploading the file without changing the data reproduces this error every time.

This row's columns "<A>" and "<B>" matches another row in the same upload. Each row must identify a unique record.

Two rows in the file resolve to the same record. Deduplicate the source file and import again. For multi-row record types, confirm the rows are actually duplicates rather than lines of the same record. Lines of one record share identical header column values by design and are grouped, not rejected.

Custom field and classification errors

Column "<name>" — custom field expects <type>, got "<value>".

The value does not match the custom field’s configured type, for example text supplied for a number field.

Column "<name>" — value "<value>" is not a recognised <label> option.

The value is not in the classification’s or list field’s allowed values. Add the option to the field definition, or change the value. A classification value must also be valid for the company on the row. Required classifications are enforced per company, so a value that imports for one company can fail for another.

Multi-row record errors

Bills, invoices, journal entries, and other line-level record types are grouped into one record by their header columns, then validated as a group.

Line <n> — line item is invalid.

A line failed validation and no single column could be identified.

Line group "<name>" is invalid.

The whole group of lines failed, usually because the lines do not agree with the header.

Column "<name>" — multi-row grouping failed (<reason>).

The rows could not be grouped into records, typically because the grouping column is blank on a continuation line.

This record must have at least one line in: <groups>.

A record type that requires line items received none.

Column "<name>" — value could not be derived from the row.

A field DualEntry composes from other columns could not be built, because a column it depends on is missing or invalid.

Row-level and system errors

This row's data is invalid.

Validation failed at the record level rather than on one column. Where DualEntry can name the reason it appends it: This row's data is invalid: <reason>. Business-rule failures surface here, including posting into a locked period and entries that do not balance.

This row could not be validated.

The underlying error could not be rendered safely. Report it with the row number if it persists.

Database constraint violation (duplicate value or missing reference).

The row broke a database constraint on write.

A field value is out of range or too long for the database.

A value exceeds the size the field allows.

Database temporarily unavailable; this row was not imported. Please retry.

A transient failure. Re-import the affected rows.

Unexpected error on this row; please contact support.

The error could not be classified. Include the row number and the import when you report it.

Errors that stop the whole import

These end the job rather than failing individual rows.

File errors

These are raised before any row is read, and have their own messages. A row shorter than the header produces a warning rather than a failure: Row has <n> columns, expected <m>. The missing columns are treated as blank. Encoding and delimiter are detected automatically, including byte order marks and comma, semicolon, and tab delimiters, so a file exported from another system usually needs no conversion. The limits a file has to stay inside: Only the first 100 issues are reported, so on a large file treat the report as a sample of the problems rather than a complete list.

Accepted value formats

Columns that fail most often

Date

Rejected because the cell holds a number or a slash format rather than an ISO date. Excel stores dates as serial numbers and CSV export writes the number, not the date. For the repair, see Step 4 of the how-to. Date preferences configured for your organization, company, or user change how dates are displayed in DualEntry. They do not change what the importer accepts. YYYY-MM-DD is the only format the importer parses.

Bank Or Undeposited Account Amount

An amount column on money-in and money-out imports. Rejected for currency symbols, thousands separators, parentheses for negatives, text such as n/a, or a value stored as text by the spreadsheet. Leave it blank rather than entering a placeholder when the row has no amount.

Item Bill Number

A line-level reference to an existing bill. Rejected when the bill does not exist, is archived, belongs to a different company, or when the spreadsheet altered the number. Bill numbers are frequently written as numbers by Excel, which drops leading zeros and appends .0. Format the column as Text.

Item Code and SKU

Rejected for the same spreadsheet conversions. 4001 becomes 4001.0, and 00412 becomes 412. Confirm the raw CSV in a text editor rather than in the spreadsheet view, since the spreadsheet shows you the display value rather than what was written to disk.

Company Name and Vendor Name

Used in match keys on several transaction record types, so errors on these columns are usually matching errors rather than value errors. The name must match the record in DualEntry exactly.
Last modified on August 19, 2026