The gate admits a badge it should refuse

A reader that has only ever been tried with a valid badge is a reader that admits everyone. The nine faults a badge gate actually hits, and what each one really is.

Updated 30 Aug 2026

A gate that reads an Offision visitor badge asks Offision for a verdict and acts on it. Almost every fault below is one of two things: the gate acting on the HTTP status instead of the answer in the body, or the credential not being allowed to write. The calls themselves are described in What the visitor badge API answers.

What you seeUsual cause
invalid_client on the token callClient id or secret copied with surrounding whitespace, or the secret has been regenerated since
Every badge is admitted, including expired and cancelled onesThe gate is acting on the HTTP status. A refused scan is a 200 — the answer is isGranted in the body
The token works, every gate call returns 403The credential has visitor.read but not visitor.readwrite. All three gate calls are POST, so read-only is refused
Calls work from one server and 401 from anotherThe credential’s IP restriction does not list that server’s outbound address
notFound, for a code that is printed on the badgeThe code was mangled in transit — trimmed, upper-cased, or the scanner sent the whole URL rather than the code inside it. The call itself accepts any of the four code kinds
Every visitor’s check-in time is the time they last walked past the gateSomething is calling check-in on a schedule rather than on a scan. A scan on re-entry returns alreadyCheckedIn and writes nothing
Every badge stays at Await and reception sees nobody arriveThe gate is calling verify, not check-in. Verify records the scan and nothing else
A returning visitor is refusedVerify answers alreadyCheckedOut for someone who has left. Call check-in, which re-admits them
The arrival is recorded but the Offision door never opensDoor release follows a check-in made at an Offision panel only
A long term badge opens the gate but nothing is recordedExpected. A long term badge has no visit to open, so action is always none