VeriShield
Main
Management
Communications
Developer
System
Workspace
Developer Tools
Account
Notifications
VeriShield Identity verification for businesses

Secure digital identity

Identity verification, built for trust

A secure, multi-tenant eKYC platform for modern businesses. Embed verification in your website in minutes via hosted links, JavaScript SDK, or REST API.

Must be 12–200 characters with letters and numbers.

Customer verification

Real liveness detection

Six-gesture face check using MediaPipe — processed entirely on-device.

Encrypted at rest

All ID numbers are encrypted with AES-256-GCM before storage.

Multi-tenant ready

Vendor isolation, API keys, custom links and a full REST API.

Check your email

Enter the 6-digit code we sent.

Reset password

Enter your email to receive a reset link.

Identity verification

Step 1 of 3: Personal details

Your details

Full name is required.

Valid email required.

Occupation is required.

Encrypted before storage. Never shared in plain text.

ID number format is invalid.

You must consent to continue.

Scan your ID document

Camera only Rear camera

Tap "Start camera" to begin

Fit your ID inside the frame
Check focus
Front of ID
Not captured Front of ID
Back of ID
Not captured Back of ID

No camera available? Upload photos instead.

Face check

Front camera

Keep your face inside the oval and follow each instruction.

Camera not started

Press start
Multiple faces detected. Ensure only your face is visible.
Mouth Left Right Up Down Smile

Verification submitted

Your identity check has been received and is pending review. Save your reference number below.

Your reference number

You'll receive an email update when your verification is reviewed. Bookmark this page or save your reference to check status.

Notifications

Review Verification

Reject verification

Provide a reason. This will be included in the email sent to the applicant.

Request resubmission

Tell the applicant what needs to be corrected.

Document

Request API Access

Integrate VeriShield eKYC verification directly into your platform

Verification code will be sent here.
Comma-separated. Restricts iframe and SDK initialization for security.

Verify your business email

We sent a 6-digit verification code to .

Application submitted!

Your business email has been verified. Your application is now queued for compliance review.

You will receive an email update with sandbox credentials once reviewed by our compliance team.

Check Application Status

VeriShield Developer Documentation

REST API v1 Reference & Client SDK Quick Start

Full page docs
Base URL: /api/v1/
Auth Header: Authorization: Bearer vs_live_...
POST /api/v1/verification-sessions

Creates a verification session and returns client tokens and hosted URLs for your customer.

curl -X POST https://YOUR_DOMAIN/api/v1/verification-sessions \
  -H "Authorization: Bearer vs_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reference": "user_order_84920",
    "redirect_url": "https://yoursite.com/done",
    "customer": { "email": "customer@example.com", "full_name": "Jane Doe" }
  }'
GET /api/v1/verification-sessions/{session_id}

Checks status and returns verification results, scores, and decision details.

curl https://YOUR_DOMAIN/api/v1/verification-sessions/sess_9182a7bc \
  -H "Authorization: Bearer vs_live_YOUR_KEY"

Embed verified identity checking directly into your checkout, onboarding, or account settings:

<script src="https://YOUR_DOMAIN/sdk/verishield.js"></script>
VeriShield.init({
  token: 'sess_9182a7bc...',
  onComplete: function(res) {
    console.log('Verification status:', res.status);
    window.location.reload();
  },
  onExit: function() {
    console.log('Customer dismissed verification');
  }
});

Receive real-time push events when customer verification status updates. All requests are signed with HMAC-SHA256:

// Signature header: X-VeriShield-Signature: t=1697200000,v1=abc123hex...
$sigHeader = $_SERVER['HTTP_X_VERISHIELD_SIGNATURE'] ?? '';
$payload   = file_get_contents('php://input');

[$tPart, $vPart] = explode(',', $sigHeader);
$timestamp = explode('t=', $tPart)[1] ?? '';
$signature = explode('v1=', $vPart)[1] ?? '';

$expected = hash_hmac('sha256', "$timestamp.$payload", $webhookSecret);
if (!hash_equals($expected, $signature)) {
    http_response_code(401);
    exit('Invalid signature');
}
// Payload is verified! Handle event:
$event = json_decode($payload, true);
// $event['event'] === 'verification.approved'
Open complete documentation in new tab