# Precise ID data sanitization

:::warning Automatic data sanitization
Before a Precise ID payload is sent to the credit bureau, every field is
automatically sanitized to meet the bureau's formatting rules: disallowed
characters are removed, values are upper-cased or reformatted where required,
and anything longer than a field's maximum length is truncated. Values that
cannot be made valid — for example a phone number that is not exactly 10 digits,
or an enum value the bureau does not recognise — are **dropped** from the bureau
request.

Your **original, unaltered values are always stored** on the applicant record;
only the copy forwarded to the bureau is sanitized. To avoid surprises, submit
data that already conforms to the rules below.
:::

## Field sanitization rules

| Field | Allowed characters | Max length | If invalid |
|-------|--------------------|------------|------------|
| `first_name` | letters, hyphen, space, apostrophe | 32 | other characters removed |
| `last_name` | letters, hyphen, space, apostrophe | 32 | an apostrophe is kept only after `D`, `L` or `O` (e.g. `O'Brien`); other characters removed |
| `middle_name` | letters only | 32 | spaces & punctuation removed |
| `suffix` | `JR`, `SR`, `II`–`IX` | — | dropped if not a listed value |
| `ssn` | digits, hyphen, space | 11 | letters & other characters removed; reduced to 9 digits |
| `dob` | `YYYY-MM-DD` or `YYYY` | — | request rejected if malformed |
| `dob_year` | digits | 4 | — |
| `age` | integer 14–120 | — | — |
| `phone_mobile`, `phone_home`, `phone_work` | digits only | 10 | leading `1` removed; dropped unless exactly 10 digits |
| `emails[]` | letters, digits, `@` `_` `-` `.` | 90 | other characters removed; max 3 emails |
| `address.street1`, `address.street2` | letters, digits, `/` `.` `-` `#`, space | 60 | other characters removed |
| `address.city` | letters, apostrophe, period, hyphen, space | 38 | other characters removed |
| `address.state_code` | letters (upper-cased) | 2 | digits & symbols removed |
| `address.zip` | digits, hyphen | 10 | letters & symbols removed |
| `employment.employer_name` | letters, digits, `#` `&` `-`, space | 23 | other characters removed |
| `employment.employer_address.street1` | letters, digits, `/` `.` `-` `#`, space | 25 | other characters removed |
| `employment.employer_address.city` | letters, apostrophe, period, hyphen, space | 18 | other characters removed |
| `employment.income.type_of_income` | `OTHER`, `NET`, `GROSS` | — | dropped if not a listed value |
| `employment.income.income_frequency` | `H` `W` `B` `M` `T` `Q` `S` `Y` | — | dropped if not a listed value |
| `mothers_maiden_name` | letters, hyphen, space, apostrophe | 60 | other characters removed |
| `spouse_name` | letters, hyphen, space, apostrophe | 96 | other characters removed |
| `driver_license.number` | letters, digits, space, `*`, `-` | 21 | other characters removed |
| `driver_license.state` | letters (upper-cased) | 2 | digits & symbols removed |

`address_previous` and `employment_previous` follow the same rules as `address`
and `employment` respectively.

Source: https://apidocs.agilitycredit.com/data-sanitization/precise-id
