← All posts Data

Do Australian address APIs support PO Boxes?

21 July 2026 · updated 2 Sept 2026 · 4 min read

When you add address autocomplete to an Australian sign-up or checkout form, someone soon types “PO Box 123” and nothing comes back. That is not a bug in your integration. It comes from the underlying dataset, and knowing why helps you handle it.

G-NAF is a register of physical addresses

Almost every Australian address API, WattleAddr included, is built on the Geocoded National Address File (G-NAF), the authoritative national index maintained by Geoscape Australia. G-NAF records physical addresses: places with a street number, a street and a locality. It contains no PO Boxes, GPO Boxes, Locked Bags or Private Bags, because those are postal-delivery constructs owned by Australia Post, not physical locations.

So no G-NAF-based autocomplete can return a PO Box. A product licensed for Australia Post’s Postal Address File (PAF) can. PAF is a separate, paid dataset that records postal-delivery addresses, and AMAS certification is assessed against that same file (AMAS and PAF vs G-NAF sets the two side by side). Within the G-NAF category, no provider supports PO Boxes. The useful question is what the API does when someone asks for one.

An empty dropdown is the wrong answer

The lazy behaviour is to return nothing and let the user stare at a blank list, unsure whether they mistyped. Worse, some engines strip the “PO Box” tokens and surface an unrelated street address as if it were a match, which a rushed user may well accept.

WattleAddr detects these queries. The call still succeeds with a 200, an empty suggestions array, and a notice:

GET /v1/addresses/autocomplete?q=PO+Box+123+Parkes+NSW

{
  "suggestions": [],
  "notice": {
    "code": "postal_address_unsupported",
    "kind": "PO Box",
    "message": "PO Box addresses aren’t in the G-NAF dataset…"
  }
}

What to do in your form

  • Watch for notice.code === "postal_address_unsupported" and show the message, so the field explains itself.
  • Offer a separate “PO Box / postal address” field for people who post to one.
  • Keep the physical-address autocomplete for the delivery or residential address.

verify behaves the same way. A PO Box returns matched: false, billed: false and the same notice, so you are not charged for it. You can try it in the interactive reference: type a PO Box into the live field and watch the notice come back.

Get an API key Read the docs