Issuance Guide
Time to read: 5 min
Time to implement: 2-4 hours
Overview
Verified Inc. enables brands to provider their users with best in class onboarding with partners. This particular guide only focuses on how and why to become a
By issuing credentials your brand can unlock Free IDV. Please see the Use Case section for more information.
You will need an API key and an email and/or phone for each user. Below is a valid API Key and URL for your initial usage along with suggested test email and phone values.
If you use these suggested test email and/or phone values you can authenticate to the wallet using those values, i.e. richard@piedpiper.net, using a static OTP of 111111
.
yVg3LEnF08y0MDmpHcPxB+sZWFcDARmPRKdY2M906ng=
https://core-api.sandbox-verifiedinc.com
richard@piedpiper.net
+10123456789
111111
Motivations
If you issue digital ID cards, Verified Inc. may be willing to cover your identity verification costs in order to create a truly win-win-win scenario for you, your partners, and your users. Simply put, you issue a digital ID card to any of your users (new or existing) with verified identity data, and we pay you for it. The core motivations for such an arrangement are multifaceted:
- You get your identity verification costs covered with any provider(s) of your choosing.
- You get a new revenue stream when the user uses your verified data to onboard with 1-Click.
- Your users get to enjoy 1-click onboarding with any of your partners or other third parties that accept your verified data, which also means increased brand awareness through a delightful UX.
- Verified Inc. gets more identity into the identity network, which is why we are willing to subsidize your costs.
UX Strategies
There are many user experiences that can be implemented to seamlessly issue credentials to your users. Below are just a few recommendations with an accompanying demo of each.
- Next User Sign In
Demo of Next User Sign In
Richard is an existing, verified Hooli user. The next time he signs in, Hooli asks him if he wants to activate his Hooli digital ID card. When he clicks the Activate button, Hooli issues the card, and Verified Inc. reimburses Hooli for the cost of the identity verification performed by Hooli for Richard.
- After User Sign Up
Demo of After User Sign Up
Richard has just completed Hooli account sign up which included identity verification via a third party service of Hooli's choosing. In the terms and service section Richard agrees to being issued an Hooli branded Verified Inc. digital ID card. Hooli issues the card with the verified identity data and Verified Inc. reimburses Hooli for the cost of the identity verification performed by Hooli for Richard.
- Marketing Email
Demo of Marketing Email
Richard is an existing, verified Hooli user. He receives a promotional email from Hooli which encourages him to accept a digital Verified Inc. card. Upon clicking the link and being directed to the app Hooli confirms with him he wants to activate his Hooli digital ID card. When he clicks the Activate button, Hooli issues the card, and Verified Inc. reimburses Hooli for the cost of the identity verification performed by Hooli for Richard.
- In App Offer
Demo of In App Offer
Richard is an existing, verified Hooli user. Upon signing into the app he notices an in app offer which encourages him to accept a digital Verified Inc. card. When he clicks the Activate button, Hooli issues the card, and Verified Inc. reimburses Hooli for the cost of the identity verification performed by Hooli for Richard.
Implementation
The implementation goal is to issue
1. Get User Consent
You must get user consent. Ask the user if they want to activate their digital ID card (from your brand), and include Verified Inc. legal language:
By clicking the button below, you agree to Verified Inc.’s Terms of Use and direct YOUR_COMPANY_NAME to share your personal information with Verified Inc. to provide its digital ID card services, in accordance with its Privacy Policy.
"Terms of Use" should be underlined or colored and hyperlinked to https://www.verified.inc/legal/terms-of-use
. "Privacy Policy" should be underlined or colored and hyperlinked to https://www.verified.inc/legal/privacy-policy
.
You must obtain user consent before issuing credentials. Not doing so violates our terms and will prevent us from paying you for issuing credentials.
2. Issue Credentials
Call /credentials
with the user's verified email and/or phone and one or more credentials. For each credential, include a type
and data
in accordance with one of our schemas.
If we don't have a schema that suits your needs, email us and we'll make one for you.
For example, if you have a verified Social Security Number (SSN) and a Full Name for a user, you can issue them a SsnCredential
and FullNameCredential
. Just call the /credentials
endpoint with the user's email and/or phone, the SsnCredential
and FullNameCredential
type, and the SSN and Full Name data:
{
"email": "test@example.com",
"phone": "+10123456789",
"trackingId": "moc.elpmaxe@tset", // optional; your preferred tracking id used for credential usage attribution
"credentials": [
{
"type": "SsnCredential",
// based on the properties attribute of the schema
"data": {
"ssn": "111223333"
},
"expirationDate": 1893484800
},
{
"type": "FullNameCredential",
// based on the properties attribute of the schema
// note that the data is an array of objects, not a single object
"data": [
{
"type": "FirstNameCredential",
"data": {
"firstName": "Richard"
}
},
{
"type": "LastNameCredential",
"data": {
"lastName": "Hendricks"
}
}
]
}
]
}
Format the credential data according to the properties
attribute of the credential schema. In this case, the schema is for a SsnCredential
which can found found at https://schema.verified.inc/jsonSchema/SsnCredential
and for a FullNameCredential
which can be found at https://schema.verified.inc/jsonSchema/FullNameCredential
.
More information about credential schemas can be found in the Schema section.
Tracking Identifier
The optional trackingId
attribute is optional in most cases, however if you are operating a promotion with the partner issuance flow it maybe helpful for tracking attribution.
✅ You're done!
Example & Demo
Please feel free to refer to the open source Hooli demo web app which demonstrates an example implementation of the Free IDV offering. More information, including mobile demo applications can also be found under the Hooli Demo section.
Partner Issuance
First Time Issuance
Some issuance calls can be made with a particular partner in mind, i.e. in a promotional flow. In these cases you have already authenticated the user and would like to issue them credentials for a particular partner.
To do this, you can provide your partner's static partnerUuid
to the issue /credentials
call. The resulting api response body will contain a url
field if conditions related the partner's pre-defined
You can check the partner's pre-defined /credentialsRequests/{partnerUuid}
.
This url ultimately redirects the user to a page of the partners choosing. However, the url first directs the user to the Verified Inc. wallet where they explicity consent to the data share to the partner.
{
"email": "richard@pipedpiper.net",
"url": "https://wallet.verifiedinc.com/request/dfb39a34-ea90-4976-a230-12005c0ddfbb?email=richard%40pipedpiper.net&redirectUrl=https%3A%2F%2Fkredita-web.demo.sandbox-verifiedinc.co%2Fregister&jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6ImFjY2VzcyJ9.eyJicmFuZFV1aWQiOiI0NDFhNmI2Yy03YjQ5LTRkNTUtYWExMC01ZWMzOWRlNjdjNjEiLCJjcmVkZW50aWFsSWRzIjpbImViNzNiYTBjLTY0MWUtNDc4Zi04ZGJkLWM4NjgzMjU2YWNmMSJdLCJ0aWVyIjoxMCwiaWF0IjoxNjg0NTE2NDU4LCJleHAiOjE2ODQ1MTcwNTgsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3QiLCJzdWIiOiJjNThkYzc2MS1hNDhjLTRmYWQtOGUyMy1iYmIwMDBjYWIyNTUiLCJqdGkiOiJjYmNmYmVlZC01ZGY1LTQ5YjItOGRlNC1jMzFjYjA5MmYzNTUifQ.QSqg2kNTfnlh42qh0VYhT0Wz_ogSNMTfudNaDQyVIiQ",
"credentials": [{...},{...}]
}
This use case of issuing credentials for a particular partner is by no means required. The key difference in this flow is the user can skip authenticating with the Verified Inc wallet to share their data.
To make this a very streamlined experience for the user, we include a pre-authenticated JWT in the url which will automatically log them into the Verified Inc. wallet. This JWT is valid for 5 minutes and is limited in scope to only the credentials you just issued the user.
If the user does not complete the partner onboarding process within 5 minutes, they can still complete it at a later point now that they have the credentials, but we will require them to authenticate into the Verified Inc. wallet to do so.
If this is an experience you would like to provide for your partners immediately after credential issuance, please let us know so we can provide you with your partner's static UUID and enable this capability for your
Already Issued Credentials
If you have already issued credentials to a user, then /hasMatchingCredentials
can be called with partnerUuid
. In this case, if Verified Inc. can confirm the user has credentials to satisfy the pre-defined partner credential request(s), then the resulting API response body will contain a url
which you should redirect the user to.
Just as in the case of the /credentials
response, this url
ultimately redirects the user to a page of the partner's choosing. However, the url
first directs the user to the Verified Inc. wallet, where they explicitly consent to share credential data with the partner.
{
"match": "true",
"url": "https://wallet.verifiedinc.com/request/dfb39a34-ea90-4976-a230-12005c0ddfbb?email=richard%40pipedpiper.net&redirectUrl=https%3A%2F%2Fkredita-web.demo.sandbox-verifiedinc.co%2Fregister&jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6ImFjY2VzcyJ9.eyJicmFuZFV1aWQiOiI0NDFhNmI2Yy03YjQ5LTRkNTUtYWExMC01ZWMzOWRlNjdjNjEiLCJjcmVkZW50aWFsSWRzIjpbImViNzNiYTBjLTY0MWUtNDc4Zi04ZGJkLWM4NjgzMjU2YWNmMSJdLCJ0aWVyIjoxMCwiaWF0IjoxNjg0NTE2NDU4LCJleHAiOjE2ODQ1MTcwNTgsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3QiLCJzdWIiOiJjNThkYzc2MS1hNDhjLTRmYWQtOGUyMy1iYmIwMDBjYWIyNTUiLCJqdGkiOiJjYmNmYmVlZC01ZGY1LTQ5YjItOGRlNC1jMzFjYjA5MmYzNTUifQ.QSqg2kNTfnlh42qh0VYhT0Wz_ogSNMTfudNaDQyVIiQ"
}
Recommended Implementation
We recommend that you first check internally whether you've issued credentials to a user. If you have, then call /hasMatchingCredentials
to confirm with Verified Inc. that the user still has these credentials. (There are cases where the user will not still have the credentials, for example if they went directly to their Verified Inc. wallet to delete them.) If the user does not still have the credentials, you can issue them new credentials, as long as you have their consent. As a precaution, you can also patch existing credentials with a status of revoked
to ensure that only the new credentials you issue will be valid for use.