---
key: verify
path: /verify
section: verify
priority: 0.9
title: Buyer verification
description: How a paying agent verifies a seller's ZadQ attestation locally and free of charge, and how the badge degrades to unknown when no verdict is available.
---

# Buyer verification

Verification is the free side of the system: a paying agent or platform
checks a seller's attestation with no charge, no registration and
no personal data. The check completes locally.

## The verification path

1. **Fetch the verdict** for the seller's endpoint identifier over the free
   path. The verdict is a small signed document: operator status, bond
   state, audit date, and the renewal cadence promise.
2. **Check freshness** against the cadence the credential itself promises —
   the buyer never needs a clock authority beyond its own.
3. **Verify the signature locally.** The verdict payload verifies with a
   published public key (Ed25519) against the canonical byte form of the
   payload. No call to any ZadQ system is required at decision time.

```text
verdict ──► freshness check ──► local signature check ──► badge state
   │              │                     │
   └── absent ────┴──── stale ──────────┴── invalid ──► "unknown"
```

## Badge states

| State | Meaning |
| --- | --- |
| `human-backed` | Valid, fresh attestation; an accountable operator with an active bond stands behind the endpoint |
| `revoked` | The attestation has been withdrawn |
| `unknown` | No verdict available, stale, or unverifiable — the neutral fallback |

## Graceful degradation

`unknown` is a first-class state, not an error. Every integration keeps
working when no verdict is available: the badge shows `unknown` and the
payment flow proceeds exactly as it would without the attestation layer.
Buyer-side policy — whether to pay `unknown` sellers — always belongs to the
buyer, never to the verification layer.

## What verification never requires

- No account, key or credential on the buyer side.
- No fee on the verification path.
- No personal data in either direction.
- No live dependency: a cached verdict inside its freshness window verifies
  offline.

Next: the [SDK reference](/sdk) lists the vendorable modules implementing
this path.
