Skip to main content
At the end of this page, you will have run code that validates a against the and prints a decoded payload to stdout — including the sub, wallet, kyc_status, and scopes claims — proving your verifier is accepting live Sumvin credentials. A Stamped Mandate is delivered over the API as a PINT (header x-sumvin-pint-token). This is the Standard Sigil verification tier — the JWT alone is enough; no signature recovery required.

Prerequisites

  • A Stamped Mandate JWT (the PINT from the x-sumvin-pint-token header). Either grab one from a test partner, a sample incoming request, or the verification tiers reference for a sample token.
  • Your registered audience identifier (the value SIS puts in the JWT’s aud claim — provided during partner onboarding).
  • A JWT library. This page uses jose for TypeScript and PyJWT for Python.
No SIS API key is required for JWT verification — the JWKS endpoint is public.
1

Install a JWT library

2

Fetch the SIS JWKS

The JWKS endpoint is public and holds the ES256 keys SIS uses to sign PINT JWTs. Keys rotate, so use a remote JWK set helper that caches and auto-refreshes rather than hardcoding the payload.
Response: 200 OK
Both jose.createRemoteJWKSet and PyJWKClient fetch and cache this response for you. You do not need to call this endpoint directly in production code.
3

Verify the JWT

Validate the signature, issuer, audience, expiry, and algorithm. Anything that fails throws — treat exceptions as verification failures and reject the request.
Pin algorithms: ["ES256"]. Accepting anything else — especially none or HS256 — opens you to key-confusion attacks.
4

Inspect the decoded payload

This is the working artefact. If the Stamped Mandate’s JWT is valid, you print a decoded payload that looks like this:
Claims you act on:
You have a verified Stamped Mandate. The user is who SIS says they are, the scopes in front of you are authorised, and you have their SRI and wallet ready to act on.
5

Next: check revocation (optional)

A signed JWT proves identity at issuance, but users can revoke a Stamped Mandate before the exp time. For high-stakes actions, hit the SIS revocation endpoint with the pint_uri from the payload before you act. See revocation checks for the full flow.

What’s next