# A suite at a single-family home

What the flat or suite written on an address says against the units a register lists at the building: unit_check, its two signals, and which registers can tell.

Date: 2026-09-17

"Suite 300" at a house on a cul-de-sac is one of the oldest tells in address fraud, and one of the cheapest to check once a register says how many units a building has. An apartment number invented to make a residential address look like an office, or to make a parcel addressed to a name the household does not know look deliberate, shows up as a unit at a building the register lists as a single residence. The reverse — a block of forty flats with no flat number — is not fraud but it is the delivery-point problem the postal services sell an answer to, and a register that lists the units can answer it for free. Since 17 September 2026 both are in the address answer as `unit_check`, and two of its values are risk signals.

## The four answers

`unit_check` is read only where a national register found the building itself (`match_level: premise`) and says something about its units. It answers one of four things.

| Value | Meaning | Signal |
| --- | --- | --- |
| `ok` | The unit written agrees with the register: a unit at a building that lists several, or none at a single one. | none |
| `missing` | The register lists several units and none was written. | `unit_missing`, weight 20 |
| `unexpected` | A flat or suite was written at a building the register lists as a single residence. | `unit_unexpected`, weight 30 |
| `null` | The register did not find the building, does not say how many units it has, or lists one unit at a building whose use is not residential. | none |

Two rules keep the check honest. A private-mailbox number is a box, not a flat: "2093 Philadelphia Pike PMB 1234" is a rented box at a mail-receiving agency, which the `private_mailbox` signal already scores at 60, and the PMB never counts as a unit here, so the same address is not scored twice. And `unexpected` fires only at a residential building. An office block that the register counts as a single unit — the Austrian register counts dwellings, and an office has none — will carry "Suite 5" on every letter it receives, and a suite there is ordinary; the check answers null rather than pretend to know.

## Which registers can tell

A register can only say what it publishes, and registers differ in whether they publish units at all.

The Austrian register counts the dwellings in each building, so a Viennese address at a building with two or more dwellings and no door number answers `missing`, and one with a door number at a single dwelling answers `unexpected` where the building is residential. The Belgian BeST register carries a box number on the rows that have one — 621,000 of Brussels' 848,000 rows — so a Brussels address is judged the same way. The Australian G-NAF lists flats as rows of their own, with a flat type and number, and a building with two or more such rows is multi-unit. The Dutch BAG carries no separate unit: a toevoeging is part of the house number in the Netherlands, and the check stays null there.

The United States National Address Database is the register that must not be over-read. It carries a unit column, but only about fourteen percent of its rows fill it and whole contributing authorities list none, so a building with no unit rows there is not a single-family home; it is a building whose authority did not say. That register therefore never calls a building single, `is_multi_unit` answers null at one or zero unit rows, and `unit_check` answers null with it. Only a register that declares its units — the Austrian one does — lets zero listed units mean one.

The rule generalises: `is_multi_unit` is true at two or more listed units, false only where the register declares its units and lists none, and null otherwise, and `unit_check` inherits exactly that caution. A null is "the register cannot say", never "there is no unit".

## Reading it with the other fields

The check sits beside `building_use` and `is_multi_unit`, and the three read together.

```json
{
  "house_number": "104",
  "unit": "Apt 3",
  "match_level": "premise",
  "building_use": "residential",
  "is_multi_unit": false,
  "unit_check": "unexpected",
  "risk_signals": [{ "signal": "unit_unexpected", "weight": 30, "dataset": "at-adressregister" }]
}
```

The dataset in the signal is the register's own, because the fact is the register's. A `missing` at a building the register lists as multi-unit reads:

```json
{
  "house_number": "100",
  "unit": null,
  "is_multi_unit": true,
  "unit_check": "missing",
  "risk_signals": [{ "signal": "unit_missing", "weight": 20, "dataset": "at-adressregister" }]
}
```

At 30, `unit_unexpected` alone is `medium`; with a town that matches nowhere in its postcode area it reaches 60 and `high`. The default shipping policy blocks neither; the guide on gating a checkout suggests adding `unit_unexpected` for a shop shipping physical goods, and leaving `unit_missing` to the carrier, which will ask the customer for the flat number as a matter of routine.

## What it does not claim

It does not say that the unit exists. A register that lists flats 1 to 12 at a building and receives "Flat 7" answers `ok` because a unit was written at a multi-unit building, not because flat 7 was found; the unit rows are counted, never matched, because a register's unit spellings ("Apt 7", "7", "Wohnung 7", "bus 7") and a customer's rarely agree and a mismatch there would be noise. That is a deliberate limit and a possible next step, register by register.

It does not run where the building was not found. An address matched to its street or its postcode only has no building to compare with, and `unit_check` is null however many units were written. And it does not run for a post-office box, general delivery or a parcel locker, which stand in for the street line and carry no building at all. Where the register is silent the answer is silent, which is the same rule every other field in the answer follows.

Reference: https://spaw.co/guides/a-suite-at-a-single-family-home
