# X_EXPORT_ROW_INVALID

## Means

`row()` answered something the declared columns do not carry

## Typical cause

a column missing, a column nobody declared, or a value no format can carry. The extra-column half is the one worth the code: a `row()` returning a key `columns` omits is silently DROPPED by both encoders, so the rest of the file looks perfectly correct and the gap is found by whoever consumes it, later — and the reverse, `row: (r) => ({ ...r })`, is how PII leaves through an export nobody reviewed, picking up every column the entity gains from then on. `cause` names the COLUMN and never the value: a cell is user data by definition, and a cause reaches the log store as a field nothing can redact

## Fix

return exactly the declared columns from `row()` on `exportRows("<name>")`, each one a string, a finite number, a boolean or `null` — format a date with an explicit `timeZone` and a Money with its own currency before it gets here

[Exports](/error-codes#exports)
