Skip to content

Build verification into your website

You add one element to a page. It shows the wallet’s QR code (tappable on a phone), lists the fields you will ask for, and turns into a green tick with the received fields once the customer approves. The checking never runs in the browser: it runs on the Verify API, and your server reads the outcome from there with a secret key.

The verification box on the Hello Mobile demo
The box on Hello Mobile’s identity step. Same element on a laptop and on a phone.
sequenceDiagram
    autonumber
    actor C as Customer
    participant B as Browser (the box)
    participant A as Verify API
    participant W as Wallet
    participant S as Your server
    B->>A: POST /new
    A-->>B: session id, QR / deep link
    C->>W: Scans or taps the QR
    W->>A: GET /request/:id (signed request)
    W->>C: Names the site, lists the fields
    C->>W: Approves
    W->>A: POST /response/:id
    A->>A: Verify signature, device binding, validity
    B->>A: GET /result/:id
    A-->>B: verified: show the tick
    B->>S: "session :id is verified"
    S->>A: GET /v1/results/:id (secret key)
    A-->>S: the result you act on

The browser shows a QR code and asks “is it done yet?”. Your server reads the outcome with the secret key and decides whether the customer continues.

The box npm install of one package, @wallet/verify
A tenant on the Verify API a publishable key for the page and a secret key for your server; we configure the name the wallet shows, the document and fields, the issuers you trust and your allowed origins
A phone with a wallet the demo wallet for pilots; any standards-based wallet in production

Hello Mobile is the demo: a mobile operator’s signup that verifies an Emirates ID at the identity step. The Quickstart rebuilds that step with Hello Mobile’s own code; the code is compiled and tested in the SDK repository, so it runs as shown.

Next: Quickstart.