Skip to content

What you can ask for

This list has 38 entries: 13 fact families (such as any age, or any country), 7 single facts, 12 details and 6 captures and signatures. 27 can be asked for today; 11 are planned and marked "Not available yet". Each says what you get, where it comes from, which price it uses, and how to ask.

This page is generated from the API's source. The live version is GET https://api.prson.net/v1/verifications/requirements (no key needed): it also says whether phone and address verification are on (capabilities).

Prices

A flat price per source, not per requirement: each is paid once per verification, however many requirements use it.

SourceWhat it coversRegularUntil 2027-03-31
BaseAny verification. Includes live photos, videos, selfies and liveness, and email.0.500.25
ID check: yes/no factsAny number of facts from the person's passport or ID card chip: age, nationality, document validity, issuing country, verification level.+0.50+0.25
ID check: detailsAny value from the chip: names, date of birth, nationality, document. Includes every fact; instead of the facts price, never both.+1.00+0.50
PDF signatureThe person signs your PDF with their verified name. However many PDFs.+1.00+0.50
PremiumsEach premium requirement: bank account 1.00, bank balance 0.50, bank income 1.50, address 10.00, phone 0.50. Never discounted, never covered by a free plan.per itemper item

Amounts in your balance's currency, the same number in EUR, USD and GBP. Examples at launch prices: Age only 0.50; Name, nationality and age 0.75; Name and a PDF signature 1.25; Name and phone number 1.25. Where each check works: coverage by country.

Passport chips from 133 countries. National ID card chips from 26 countries; 99 more not confirmed yet. Phone and address checks by country: coverage by country.

How to ask

  • Facts answer yes or no, signed by Prson. The person shares the answer, never the data behind it: "over 18", not their date of birth.
  • Details (properties) share a verified value, such as a name, or with reveal_value: false only that a verified one exists.
  • Captures are a selfie, a photo, a video or an identity document, taken live in the Prson camera and signed by the phone.
  • Signatures are a PDF signed with the name on the person's chip-read passport or ID card.

Put up to 10 in one verification. Each entry below says which price it uses: the base, the ID check (yes/no facts or details), a PDF signature or a premium.

POST /v1/verifications
{
  "title": "Confirm you are an adult EU citizen with a valid ID",
  "requirements": [
    { "type": "fact", "fact": "age_gte_18" },
    { "type": "fact", "fact": "nationality_in_eu" },
    { "type": "property", "property": "family_name" },
    { "type": "selfie_with_document", "require_document_verification": true, "required_facts": ["doc_expires_after_6m"] }
  ],
  "min_verification_level": 5
}

38 shown

Identity and age

Facts and details from the passport or ID card the person verified in Prson.

Age at least N

Fact familyAlso for Sign in

Person is at least N years old, for any N from 0 to 130.

Ids
age_gte_{n}
Examples
age_gte_18, age_gte_21, age_gte_65
You get
Yes or no, signed by Prson
From
The date of birth on their passport or ID card chip
Price
Included in the ID check (prices)
{ "type": "fact", "fact": "age_gte_18" }

Age at most N

Fact familyAlso for Sign in

Person is at most N years old, for any N from 0 to 130. age_lte_17 is "under 18".

Ids
age_lte_{n}
Examples
age_lte_17, age_lte_25
You get
Yes or no, signed by Prson
From
The date of birth on their passport or ID card chip
Price
Included in the ID check (prices)
{ "type": "fact", "fact": "age_lte_17" }

Age between A and B

Fact familyAlso for Sign in

Person is between A and B years old (both included), for any A and B from 0 to 130, A not above B.

Ids
age_between_{a}_{b}
Examples
age_between_18_30, age_between_25_40
You get
Yes or no, signed by Prson
From
The date of birth on their passport or ID card chip
Price
Included in the ID check (prices)
{ "type": "fact", "fact": "age_between_18_30" }

Verification level at least N

Fact familyAlso for Sign in

Identity has reached verification level N, for N from 3 to 6. 5 and 6: a passport or ID card chip Prson checked.

Ids
verification_level_gte_{n}
Examples
verification_level_gte_5, verification_level_gte_6
You get
Yes or no, signed by Prson
From
Their verification level in Prson (5 and 6: chip checked by Prson)
Price
Included in the ID check (prices)
On captures
Can also go in a capture's required_facts.
{ "type": "fact", "fact": "verification_level_gte_5" }

birthdate

Detail

Their date of birth (Date of birth)

You get
The value, or with reveal_value: false only that a verified one exists
From
Their passport or ID card chip
Price
ID check: details; with reveal_value: false, included in the ID check (prices)
{ "type": "property", "property": "birthdate" }

given_names

Detail

Their given names, as on their document (Given names)

You get
The value, or with reveal_value: false only that a verified one exists
From
Their passport or ID card chip
Price
ID check: details; with reveal_value: false, included in the ID check (prices)
{ "type": "property", "property": "given_names" }

family_name

Detail

Their family name, as on their document (Family name)

You get
The value, or with reveal_value: false only that a verified one exists
From
Their passport or ID card chip
Price
ID check: details; with reveal_value: false, included in the ID check (prices)
{ "type": "property", "property": "family_name" }

Nationality and document

Where their document comes from, what kind it is and how long it is valid.

Nationality: one country or a group

Fact familyAlso for Sign in

Holder's nationality is one country (ISO 3166-1 alpha-3, any country) or in the EU, the EEA or the Schengen Area.

Ids
nationality_eq_{ISO3}, nationality_in_{eu|eea|schengen}
Examples
nationality_in_eu, nationality_eq_DEU, nationality_in_schengen
You get
Yes or no, signed by Prson
From
Their passport or ID card chip, checked by Prson
Price
Included in the ID check (prices)
{ "type": "fact", "fact": "nationality_in_eu" }

Document issued by one country or a group

Fact familyAlso for Sign in

Document was issued by one country (ISO 3166-1 alpha-3, any country) or by an EU, EEA or Schengen country.

Ids
issuing_country_eq_{ISO3}, issuing_country_in_{eu|eea|schengen}
Examples
issuing_country_eq_PRT, issuing_country_in_eu, issuing_country_in_schengen
You get
Yes or no, signed by Prson
From
Their passport or ID card chip, checked by Prson
Price
Included in the ID check (prices)
On captures
Can also go in a capture's required_facts.
{ "type": "fact", "fact": "issuing_country_eq_PRT" }

Document valid for at least N months

Fact familyAlso for Sign in

Document expires more than N months from now, for any N from 0 to 600. doc_not_expired asks only that it hasn't expired.

Ids
doc_expires_after_{n}m
Examples
doc_expires_after_6m, doc_expires_after_12m
You get
Yes or no, signed by Prson
From
Their passport or ID card chip, checked by Prson
Price
Included in the ID check (prices)
On captures
Can also go in a capture's required_facts.
{ "type": "fact", "fact": "doc_expires_after_6m" }

Kind of document

Fact familyAlso for Sign in

Document is a passport, a national ID card or a residence permit.

Ids
document_type_eq_{type}
Examples
document_type_eq_passport, document_type_eq_national_id
You get
Yes or no, signed by Prson
From
Their passport or ID card chip, checked by Prson
Price
Included in the ID check (prices)
On captures
Can also go in a capture's required_facts.
{ "type": "fact", "fact": "document_type_eq_passport" }

doc_not_expired

FactAlso for Sign in

Document is not expired

You get
Yes or no, signed by Prson
From
Their passport or ID card chip, checked by Prson
Price
Included in the ID check (prices)
On captures
Can also go in a capture's required_facts.
{ "type": "fact", "fact": "doc_not_expired" }

document

Detail

Their identity document's details: kind, issuing country and expiry (Identity document)

You get
The value, or with reveal_value: false only that a verified one exists
From
Their passport or ID card chip
Price
ID check: details; with reveal_value: false, included in the ID check (prices)
{ "type": "property", "property": "document" }

nationality

Detail

Their nationality (Nationality)

You get
The value, or with reveal_value: false only that a verified one exists
From
Their passport or ID card chip
Price
ID check: details; with reveal_value: false, included in the ID check (prices)
{ "type": "property", "property": "nationality" }

Person and liveness

A live selfie or a photo of their identity document, taken in the Prson camera.

selfie

Capture

A live selfie taken in the Prson app. (A selfie)

You get
Files: photo, video, sensors, signed by the phone
From
The Prson camera, live
Price
Included in the base price; with require_document_verification, included in the ID check (prices)
{ "type": "selfie", "require_document_verification": true }

document

Capture

An identity document: a photo taken in the app, or (with require_document_verification) a document Prson already verified from its chip. (A photo of your identity document)

You get
Files: photo, video, sensors, signed by the phone
From
The Prson camera, or with require_document_verification a document Prson read from its chip
Price
Included in the base price; with require_document_verification, included in the ID check (prices)
{ "type": "document", "require_document_verification": true, "document_types": [ "passport", "national_id" ] }

selfie_with_document

Capture

A live selfie holding an identity document. (A selfie holding your identity document)

You get
Files: photo, video, sensors, signed by the phone
From
The Prson camera, live
Price
Included in the base price; with require_document_verification, included in the ID check (prices)
{ "type": "selfie_with_document", "require_document_verification": true }

Live photo and video

Photos and videos taken on the spot in the Prson camera: screenshots and uploads are refused.

photo

Capture

One photo taken in the app (signed by the phone; with require_location, with its GPS position). (A photo)

You get
Files: photo, video, sensors, signed by the phone
From
The Prson camera, live, signed by the phone
Price
Included in the base price (prices)
{ "type": "photo", "require_location": true, "description": "The car's VIN plate" }

video

Capture

A short video taken in the app. (A short video)

You get
Files: video, sensors, signed by the phone
From
The Prson camera, live, signed by the phone
Price
Included in the base price (prices)
{ "type": "video", "require_location": true, "description": "Walk around the flat" }

Contact details

An email address or phone number the person proved they control.

phone_verified

FactWhere enabledAlso for Sign in

Phone number is verified

You get
Yes or no, signed by Prson
From
A code sent by SMS to their phone
Price
Included in the base price (prices)
Countries
A code by SMS, in most countries. Some regions may not get the SMS; Prson doesn't list them yet. Coverage by country
Availability
Only where Prson can verify it: capabilities.phone_verification is true. Otherwise 422 requirement_unavailable.
{ "type": "fact", "fact": "phone_verified" }

email_verified

FactAlso for Sign in

Email address is verified

You get
Yes or no, signed by Prson
From
A code sent to their email address
Price
Included in the base price (prices)
{ "type": "fact", "fact": "email_verified" }

email

Detail

Their email address (Email address)

You get
The value, or with reveal_value: false only that a verified one exists
From
A code sent to that address
Price
Included in the base price (prices)
{ "type": "property", "property": "email", "reveal_value": true }

phone

DetailWhere enabled

Their phone number (Phone number)

You get
The value, or with reveal_value: false only that a verified one exists
From
A code sent by SMS to that number
Price
Premium: €0.50, never discounted (prices)
Countries
A code by SMS, in most countries. Some regions may not get the SMS; Prson doesn't list them yet. Coverage by country
Availability
Only where Prson can verify it: capabilities.phone_verification is true. Otherwise 422 requirement_unavailable.
{ "type": "property", "property": "phone", "reveal_value": true }

Phone number from a country or the EU

Fact familyNot available yet

Phone number is from one country (ISO 3166-1 alpha-2) or from the EU.

Ids
phone_country_eq_{ISO2}, phone_country_in_eu
Examples
phone_country_eq_PT, phone_country_in_eu
You get
Yes or no, signed by Prson
From
Phone number data (not available yet)
Price
Included in the base price (prices)
{ "type": "fact", "fact": "phone_country_eq_PT" }

email_domain_academic

FactNot available yet

Email address is at a university or school

You get
Yes or no, signed by Prson
From
A list of academic domains (not available yet)
Price
Included in the base price (prices)
{ "type": "fact", "fact": "email_domain_academic" }

phone_is_mobile

FactNot available yet

Phone number is a mobile number

You get
Yes or no, signed by Prson
From
Phone number data (not available yet)
Price
Included in the base price (prices)
{ "type": "fact", "fact": "phone_is_mobile" }

Postal address

An address proved with a code in a letter posted to it.

Postal address in one EU country or a group

Fact familyWhere enabledAlso for Sign in

Postal address is in one EU country (ISO 3166-1 alpha-2) or in the EU, the EEA or the Schengen Area.

Ids
address_country_eq_{ISO2}, address_country_in_{eu|eea|schengen}
Examples
address_country_in_eu, address_country_eq_PT
You get
Yes or no, signed by Prson
From
A code in a letter posted to their address
Price
Included in the base price (prices)
Countries
A code by letter to any country: printed locally in CH, DE, AT, FR, BE, LU, ES, NL and UK; elsewhere posted from abroad by DHL, which takes longer. Coverage by country
Values
AT, BE, BG, HR, CY, CZ, DK, EE, FI, FR, DE, GR, HU, IE, IT, LV, LT, LU, MT, NL, PL, PT, RO, SK, SI, ES, SE
Availability
Only where Prson can verify it: capabilities.address_verification is true. Otherwise 422 requirement_unavailable.
{ "type": "fact", "fact": "address_country_in_eu" }

address_verified

FactWhere enabledAlso for Sign in

Postal address is verified

You get
Yes or no, signed by Prson
From
A code in a letter posted to their address
Price
Included in the base price (prices)
Countries
A code by letter to any country: printed locally in CH, DE, AT, FR, BE, LU, ES, NL and UK; elsewhere posted from abroad by DHL, which takes longer. Coverage by country
Availability
Only where Prson can verify it: capabilities.address_verification is true. Otherwise 422 requirement_unavailable.
{ "type": "fact", "fact": "address_verified" }

address

DetailWhere enabled

Their postal address

You get
The value, or with reveal_value: false only that a verified one exists
From
A code in a letter posted to that address
Price
Premium: €10.00, never discounted (prices)
Countries
A code by letter to any country: printed locally in CH, DE, AT, FR, BE, LU, ES, NL and UK; elsewhere posted from abroad by DHL, which takes longer. Coverage by country
Availability
Only where Prson can verify it: capabilities.address_verification is true. Otherwise 422 requirement_unavailable.
{ "type": "property", "property": "address" }

Bank and tax

Planned. Prson can't verify these yet: asking for them is refused.

Bank account in a country or a group

Fact familyNot available yet

Bank account is in one country or in the EU or the EEA.

Ids
bank_account_country_eq_{ISO3}, bank_account_in_{eu|eea}
Examples
bank_account_country_eq_PRT, bank_account_in_eu
You get
Yes or no, signed by Prson
From
Bank linking (not available yet)
Price
Premium: €1.00, never discounted (prices)
Countries
Not available yet in any country. Coverage by country
{ "type": "fact", "fact": "bank_account_country_eq_PRT" }

Bank balance at least N

Fact familyNot available yet

Bank balance is at least N in a currency.

Ids
balance_gte_{n}_{currency}
Examples
balance_gte_1000_eur
You get
Yes or no, signed by Prson
From
Bank linking (not available yet)
Price
Premium: €0.50, never discounted (prices)
Countries
Not available yet in any country. Coverage by country
{ "type": "fact", "fact": "balance_gte_1000_eur" }

Monthly income at least N

Fact familyNot available yet

Monthly income is at least N in a currency.

Ids
income_gte_{n}_{currency}
Examples
income_gte_2000_eur
You get
Yes or no, signed by Prson
From
Bank linking (not available yet)
Price
Premium: €1.50, never discounted (prices)
Countries
Not available yet in any country. Coverage by country
{ "type": "fact", "fact": "income_gte_2000_eur" }

has_verified_bank_account

FactNot available yet

Has a verified bank account

You get
Yes or no, signed by Prson
From
Bank linking (not available yet)
Price
Premium: €0.50, never discounted (prices)
Countries
Not available yet in any country. Coverage by country
{ "type": "fact", "fact": "has_verified_bank_account" }

tax_id

DetailNot available yet

Their tax number

You get
The value, or with reveal_value: false only that a verified one exists
From
Not available yet
Price
Included in the base price (prices)
Countries
Not available yet in any country. Coverage by country
{ "type": "property", "property": "tax_id" }

bank_account

DetailNot available yet

Their bank account

You get
The value, or with reveal_value: false only that a verified one exists
From
Bank linking (not available yet)
Price
Premium: €1.00, never discounted (prices)
Countries
Not available yet in any country. Coverage by country
{ "type": "property", "property": "bank_account" }

bank_balance

DetailNot available yet

Their bank balance

You get
The value, or with reveal_value: false only that a verified one exists
From
Bank linking (not available yet)
Price
Premium: €0.50, never discounted (prices)
Countries
Not available yet in any country. Coverage by country
{ "type": "property", "property": "bank_balance" }

bank_income

DetailNot available yet

Their income

You get
The value, or with reveal_value: false only that a verified one exists
From
Bank linking (not available yet)
Price
Premium: €1.50, never discounted (prices)
Countries
Not available yet in any country. Coverage by country
{ "type": "property", "property": "bank_income" }

Document signature

A PDF signed with the person's verified name.

document_signature

Signature

The person signs a PDF you uploaded (POST /v1/verifications/documents) in the Prson app, with a certificate naming them as their chip-read identity document does (level 5 or 6) and a key only their phone holds. The signed PDF (PAdES B-T, timestamped) is the original file plus the signature, so its first bytes hash to the document_sha256 you uploaded. An advanced electronic signature under eIDAS, not a qualified one. signature_position puts a visible stamp on a page; min_level asks for 6. Retention: the uploaded PDF is deleted a week after upload if no verification uses it, else once no verification refers to it; the signed PDF (with the answer) is deleted 30 days after the verification expires. Prson keeps no copy of a PDF a person signs for themselves, and no names: the signer's name is in the certificate inside the PDF and in the answer you receive. (Sign a document)

You get
The signed PDF and the signer's name and certificate
From
The Prson app, with a certificate naming them as their chip-read document does
Price
PDF signature (prices)
{ "type": "document_signature", "document_id": "vdoc_3kq9Zt7xY2pL", "signature_position": { "page": 2, "x": 72, "y": 96, "width": 180, "height": 48 } }

Facts on captures

A selfie, document or selfie_with_document capture can demand facts of the person's verified document with required_facts, checked by Prson when they answer. Only facts about the document itself work there (kind, issuing country, expiry, level):

^(doc_not_expired|doc_expires_after_\d+m|document_type_eq_[a-z_]+|issuing_country_(eq_[A-Z]{3}|in_eu|in_eea|in_schengen)|verification_level_gte_\d+)$

Age and nationality need values only the person's wallet holds: ask for them as separate fact requirements.

Verification levels

min_verification_level on a verification (and minVerificationLevel in Sign in with Prson) asks for at least this level. Facts like verification_level_gte_5 answer it as yes or no.

LevelWhat was doneChecked byCalled
0Nothing.—Not verified
1Live selfie in the Prson camera.The phoneChecked on a genuine device, or self-declared (see below)
2L1 + fingerprint.The phoneas L1
3L1 + Face ID (face or iris hardware).The phoneas L1
4L1–L3 + a photo of an ID document (MRZ read and checksum-checked).The phoneas L1
5The passport or ID card chip was read and checked by Prson.Prson's serverVerified human
6L5 + a face match between a live selfie and the photo stored on the chip, with a liveness check.The phone, attested; Prson checks the attestationVerified human (highest level)