Hosted Integration (Web Link)

This document explains how to integrate the verification flow outside of your web application


In case you'd rather have the verification process handled outside of your application, you can send your users to an URL, that is managed directly on Passbase.
You can get your own customizable organization slug. e.g.
An example of this solution is this Passbase Demo.
If you haven't done so before, head towards and turn on 'Enable V2 for your verification link'.

Prefilling Data: User Email & Country

In order to prefill the email of a verification & skip this step or to preselect a country from the dropdown, you can pass a base64 encoded parameter string at the end of the request like below.
// Your Link
// Your link including an encoded string for customizations{BASE64_ENCODED_STRING}
The encoded object should be a JSON object consisting of the following (optional) key-value pairs:
email: Populate this field if you already know your users' email address to speed up the verification flow.
country: An ISO-3166 compliant country code. For the ID document country selection screen, this will pre-select the country of the ID document in the dropdown menu for your users
metadata: Encrypted JSON string via the private key encoded in base64
If you don't want to build this functionality into your backend, you can also use this tool to encode your hosted link with a user email online: Passbase Link Encoder
The code for this project is on Github here.

Example for Your Own Application

Below is an example where we prefill an user's email and set the country for the top document of the id document list to Germany:
const prefillAttributes = {
prefill_attributes: {
country: "de"
metadata: "MY_ENCRYPTED_METADATA_STRING" //optional
const objJsonStr = JSON.stringify(prefillAttributes);
const objJsonB64 = Buffer.from(objJsonStr).toString("base64");
// Your Link
const link = "" + "YOUR_SLUG" + "/?p=" + objJsonB64
// Result:
import json
import base64
yourCompanySlug = "mathias"
yourPassbaseLink = "" + yourCompanySlug
prefillAttributes = {
"prefill_attributes": {
"email": "[email protected]",
"country": "de"
"metadata": "MY_ENCRYPTED_METADATA_STRING" //optional
jsonString = json.dumps(prefillAttributes)
encoded = base64.b64encode(jsonString.encode('utf-8'))
encodedStr = str(encoded, "utf-8")
link = yourPassbaseLink + '?p=' + encodedStr
# Result
require "base64"
require 'json'
yourCompanySlug = "mathias"
yourPassbaseLink = "" + yourCompanySlug
preFillAttributes = {'prefill_attributes' => {
'email' => '[email protected]',
'country' => 'de'
encoded = Base64.strict_encode64(preFillAttributes.to_json)
link = yourPassbaseLink + "?p=" + encoded
# Result
$slug = "mathias";
$yourPassbaseLink = "".$slug;
$hash_map = array(
'prefill_attributes' => array(
'email' => '[email protected]',
'country' => 'de'
'metadata' => 'MY_ENCRYPTED_METADATA_STRING' #optional
$encodedAttributes = base64_encode(json_encode($hash_map));
$encodedLink = $yourPassbaseLink."?p=".$encodedAttributes;
# Result