> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sumvin.com/llms.txt
> Use this file to discover all available pages before exploring further.

# What a verifier checks

> What a merchant, service or site learns when it checks a Stamped Mandate an agent presents, and which answer to act on.

A verifier is anyone an agent presents a Stamped Mandate to: a merchant, a service, a site, or another agent. A mandate identifier on its own proves nothing, and a mandate can be revoked at any moment after it was signed. So a verifier checks it before acting on it.

## How an agent presents a mandate

An agent presents a Stamped Mandate to a site as a token issued by Sumvin, in the `x-sumvin-pint-token` request header:

```http theme={null}
x-sumvin-pint-token: <token>
```

The token is addressed to the site's hostname. The site checks it on its own server, offline, against Sumvin's published keys, and accepts only a token addressed to itself. How to run that check is in the [verifier quickstart](/sdk/verify/quickstart). An online check for these tokens, which would also catch a mandate revoked since it was signed, is coming soon.

A mandate can also be looked up by its identifier, such as `sr:us:pint:3f9c2a7e5b1d4c8e9a6f0b2d7e4c1a58`. How to run that check is in [Check a mandate](/guides/check-a-mandate).

## What the check answers

| Answer                           | Means                                                                                                                          |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Recognised**                   | Whether Sumvin knows a mandate with this identifier. An unknown identifier is an answer, not an error: act on nothing.         |
| **Stands**                       | Whether the mandate permits anything right now. **This is the answer to act on.**                                              |
| **Status**                       | Where the mandate has got to. See the states below.                                                                            |
| **Scopes**                       | What it permits, as the [scope identifiers](/concepts/mandates/scopes) it was signed with, each with its own limits.           |
| **Ceiling**                      | The most it would ever authorise, as an amount in display units and what that amount is counted in, such as `25.00` and `USD`. |
| **Signed by the account holder** | Whether the person signed this mandate themselves, or it was narrowed from one they signed.                                    |
| **Signed at, expires at**        | When it was signed and when it stops standing.                                                                                 |
| **Narrowing depth**              | How many larger mandates this one was narrowed from. Zero is the ordinary case.                                                |

### Stands, not status

A mandate **stands** only when all of these are true:

* its status is `active`;
* it has not passed its expiry;
* every larger mandate it was narrowed from is itself still intact.

A mandate can read `active` while a larger mandate above it has been revoked. It no longer permits anything. Only **stands** accounts for that.

### Ceiling

The ceiling is stated the way a person reads it: `12.50`, never `1250`. If the ceiling can no longer be read back out of the mandate's scopes, it is reported as missing. Treat a missing ceiling as unverifiable, never as unlimited.

### States

| State      | Means                                         |
| ---------- | --------------------------------------------- |
| `pending`  | Prepared but not yet signed. Permits nothing. |
| `active`   | Signed and usable.                            |
| `consumed` | Already spent against.                        |
| `revoked`  | Withdrawn by the person.                      |
| `expired`  | Its time ran out.                             |

Only `active` can permit anything, and none of the last three ever becomes `active` again.

## What a verifier never learns

* **Who the person is.** No name, email or other contact details.
* **Anything above the mandate it was shown.** The narrowing depth is a count, not a list. The larger mandates each permit more than the one presented, so their identifiers are never returned.

Checking a mandate grants nothing and changes nothing. It is a read.

## Next

<Columns cols={2}>
  <Card title="Check a mandate" icon="shield-check" href="/guides/check-a-mandate">
    Run the check.
  </Card>

  <Card title="Examples" icon="list-checks" href="/concepts/mandates/examples">
    What a verifier sees for each use case.
  </Card>
</Columns>
