API reference · v1

VerifyPay API

REST + WebSocket. JSON over HTTPS. All endpoints authenticated with bearer tokens.

24

REST endpoints

1.8s

Avg verification

12

Webhook events

Base URL

https://api.verifypay.uk/v1

Authorization

Authorization: Bearer vp_live_sk_•••••••••••••••••

Verification

POST
/v1/verifications

Start verification

Initiate an OIDC flow with OneID or Yoti. Returns a redirect URL.

{
  "provider": "oneid",
  "outlet_id": "out_camden_01",
  "redirect_uri": "https://pay.verifypay.uk/cb"
}
GET
/v1/verifications/{id}

Get verification

Returns the current status of a verification attempt.

{
  "id": "vrf_a8f...",
  "status": "verified",
  "age_band": "18+",
  "liveness_score": 0.97
}

Payments

POST
/v1/checkout/sessions

Create checkout session

Creates a Stripe Checkout session bound to a verified customer.

{
  "verification_id": "vrf_a8f...",
  "product_id": "p_mint_10",
  "amount": 550,
  "currency": "gbp"
}
POST
/v1/webhooks/stripe

Stripe webhook

Receives signed payment events. Triggers tablet confirmation via WebSocket.

Stripe event payload (signed)

Tablet

WS
/v1/tablet/{tablet_id}/stream

Tablet stream

Persistent WebSocket connection. Server pushes payment events in real time.

{
  "type": "payment.confirmed",
  "reference": "VP-002431",
  "amount": 550,
  "product": "Mint Strong 10mg"
}

Catalogue

GET
/v1/products

List products

Returns active products available across outlets.

{
  "data": [
    { "id": "p_mint_10", "name": "Mint Strong 10mg", "price": 550 }
  ]
}
GET
/v1/transactions

List transactions

Paginated. Filter by outlet, status, date range.

{
  "data": [...],
  "page": 1,
  "total": 2418
}