GuidesEvery fact
Every fact you can ask someone to prove.
Each one is a yes or no that the person proves on their phone in the Prson app, signed by Prson. You learn the answer, not the data behind it: “18 or older: yes”, never the date of birth.
Age
How old the person is, from the date of birth on their passport or ID card chip. You learn only yes or no, never the date.
How to verify: ageAt least a given age
AvailableFor example:18 or older
age_gte_18The person is at least this many years old.
What it doesn’t prove, and where it comes from
From: The date of birth on their passport or ID card chip.
Worked out from the chip's date of birth at the moment Prson signs the answer. If only a birth year is known and the person could be on either side of the age, Prson gives no answer rather than guess, so the request can't be fulfilled.
How it worksAPI docs for At least a given ageBuild a request with 18 or older
At most a given age
AvailableFor example:17 or younger
age_lte_17The person is at most this many years old (age_lte_17 is under 18).
What it doesn’t prove, and where it comes from
From: The date of birth on their passport or ID card chip.
Worked out from the chip's date of birth at the moment Prson signs the answer. If only a birth year is known and the person could be on either side of the age, Prson gives no answer rather than guess, so the request can't be fulfilled.
How it worksAPI docs for At most a given ageBuild a request with 17 or younger
Between two ages
AvailableFor example:Between 18 and 30 years old
age_between_18_30The person is between these two ages, both included.
What it doesn’t prove, and where it comes from
From: The date of birth on their passport or ID card chip.
Worked out from the chip's date of birth at the moment Prson signs the answer. If only a birth year is known and the person could be on either side of the age, Prson gives no answer rather than guess, so the request can't be fulfilled.
How it worksAPI docs for Between two agesBuild a request with Between 18 and 30 years old
Document
The identity document whose chip they verified in Prson: its kind, the country that issued it and how long it is valid.
How to verify: documentIdentity document not expired
AvailableFor example:Identity document not expired
doc_not_expiredDocument is not expired.
What it doesn’t prove, and where it comes from
From: Their passport or ID card chip, checked by Prson.
Read from the chip of the document they verified in Prson (level 5 or 6). The expiry is the date on the chip: it doesn't say whether the document was since reported lost, stolen or cancelled.
How it worksAPI docs for Identity document not expiredBuild a request with Identity document not expired
Identity document valid for some months more
AvailableFor example:Identity document valid for more than 6 months
doc_expires_after_6mThe document expires more than this many months from now.
What it doesn’t prove, and where it comes from
From: Their passport or ID card chip, checked by Prson.
Read from the chip of the document they verified in Prson (level 5 or 6). The expiry is the date on the chip: it doesn't say whether the document was since reported lost, stolen or cancelled.
How it worksAPI docs for Identity document valid for some months moreBuild a request with Identity document valid for more than 6 months
Kind of identity document
AvailableFor example:Identity document is a passport
document_type_eq_passportThe document they verified is a passport, a national ID card or a residence permit.
What it doesn’t prove, and where it comes from
From: Their passport or ID card chip, checked by Prson.
Read from the chip of the document they verified in Prson (level 5 or 6). The expiry is the date on the chip: it doesn't say whether the document was since reported lost, stolen or cancelled.
How it worksAPI docs for Kind of identity documentBuild a request with Identity document is a passport
Identity document from a country
AvailableFor example:Identity document issued by Portugal
issuing_country_eq_PRTThe document was issued by this country.
What it doesn’t prove, and where it comes from
From: Their passport or ID card chip, checked by Prson.
Read from the chip of the document they verified in Prson (level 5 or 6). The expiry is the date on the chip: it doesn't say whether the document was since reported lost, stolen or cancelled.
How it worksAPI docs for Identity document from a countryBuild a request with Identity document issued by Portugal
Identity document from an EU country
AvailableFor example:Identity document issued by an EU country
issuing_country_in_euDocument was issued by an EU country.
What it doesn’t prove, and where it comes from
From: Their passport or ID card chip, checked by Prson.
Read from the chip of the document they verified in Prson (level 5 or 6). The expiry is the date on the chip: it doesn't say whether the document was since reported lost, stolen or cancelled.
How it worksAPI docs for Identity document from an EU countryBuild a request with Identity document issued by an EU country
Identity document from an EU or EEA country
AvailableFor example:Identity document issued by an EU or EEA country
issuing_country_in_eeaDocument was issued by an EU or EEA country.
What it doesn’t prove, and where it comes from
From: Their passport or ID card chip, checked by Prson.
Read from the chip of the document they verified in Prson (level 5 or 6). The expiry is the date on the chip: it doesn't say whether the document was since reported lost, stolen or cancelled.
How it worksAPI docs for Identity document from an EU or EEA countryBuild a request with Identity document issued by an EU or EEA country
Identity document from a Schengen country
AvailableFor example:Identity document issued by a Schengen country
issuing_country_in_schengenDocument was issued by a Schengen country.
What it doesn’t prove, and where it comes from
From: Their passport or ID card chip, checked by Prson.
Read from the chip of the document they verified in Prson (level 5 or 6). The expiry is the date on the chip: it doesn't say whether the document was since reported lost, stolen or cancelled.
How it worksAPI docs for Identity document from a Schengen countryBuild a request with Identity document issued by a Schengen country
Nationality
Their nationality as written in the document whose chip they verified: one country, or the EU, the EEA or the Schengen Area.
How to verify: nationalityCitizen of a country
AvailableFor example:Citizen of Germany
nationality_eq_DEUTheir nationality is this country.
What it doesn’t prove, and where it comes from
From: Their passport or ID card chip, checked by Prson.
The nationality written in the document whose chip they verified in Prson (level 5 or 6). A person with two nationalities is matched on the one in that document: a no doesn't mean they hold no other.
How it worksAPI docs for Citizen of a countryBuild a request with Citizen of Germany
EU citizen
AvailableFor example:EU citizen
nationality_in_euHolder is an EU citizen.
What it doesn’t prove, and where it comes from
From: Their passport or ID card chip, checked by Prson.
The nationality written in the document whose chip they verified in Prson (level 5 or 6). A person with two nationalities is matched on the one in that document: a no doesn't mean they hold no other.
How it worksAPI docs for EU citizenBuild a request with EU citizen
Citizen of an EU or EEA country
AvailableFor example:Citizen of an EU or EEA country
nationality_in_eeaHolder is an EEA citizen.
What it doesn’t prove, and where it comes from
From: Their passport or ID card chip, checked by Prson.
The nationality written in the document whose chip they verified in Prson (level 5 or 6). A person with two nationalities is matched on the one in that document: a no doesn't mean they hold no other.
How it worksAPI docs for Citizen of an EU or EEA countryBuild a request with Citizen of an EU or EEA country
Citizen of a Schengen country
AvailableFor example:Citizen of a Schengen country
nationality_in_schengenHolder is a citizen of a Schengen country.
What it doesn’t prove, and where it comes from
From: Their passport or ID card chip, checked by Prson.
The nationality written in the document whose chip they verified in Prson (level 5 or 6). A person with two nationalities is matched on the one in that document: a no doesn't mean they hold no other.
How it worksAPI docs for Citizen of a Schengen countryBuild a request with Citizen of a Schengen country
Where they live
Where their postal address is (country, region, city or postcode), proved with a code in a letter posted to it.
How to verify: where they liveHas a verified postal address
Where enabledFor example:Postal address verified
address_verifiedPostal address is verified.
What it doesn’t prove, and where it comes from
From: A code in a letter posted to their address.
A letter with a one-time code was posted to the address (by Pingen) and the person typed the code in the app. It proves a letter reached them there on the day they verified, not that they live there now, own it, or are the only person there. An address verification lasts 365 days.
How it worksAPI docs for Has a verified postal addressBuild a request with Postal address verified
Lives in a country
Where enabledFor example:Postal address in Portugal
address_country_eq_PTTheir verified postal address is in this country.
What it doesn’t prove, and where it comes from
From: A code in a letter posted to their address.
Any country where the letter can be delivered: see Coverage by country. A letter with a one-time code was posted to the address (by Pingen) and the person typed the code in the app. It proves a letter reached them there on the day they verified, not that they live there now, own it, or are the only person there. An address verification lasts 365 days.
How it worksAPI docs for Lives in a countryBuild a request with Postal address in Portugal
Lives in an EU country
Where enabledFor example:Postal address in an EU country
address_country_in_euPostal address is in the EU.
What it doesn’t prove, and where it comes from
From: A code in a letter posted to their address.
Any country where the letter can be delivered: see Coverage by country. A letter with a one-time code was posted to the address (by Pingen) and the person typed the code in the app. It proves a letter reached them there on the day they verified, not that they live there now, own it, or are the only person there. An address verification lasts 365 days.
How it worksAPI docs for Lives in an EU countryBuild a request with Postal address in an EU country
Lives in an EU or EEA country
Where enabledFor example:Postal address in an EU or EEA country
address_country_in_eeaPostal address is in the EEA.
What it doesn’t prove, and where it comes from
From: A code in a letter posted to their address.
Any country where the letter can be delivered: see Coverage by country. A letter with a one-time code was posted to the address (by Pingen) and the person typed the code in the app. It proves a letter reached them there on the day they verified, not that they live there now, own it, or are the only person there. An address verification lasts 365 days.
How it worksAPI docs for Lives in an EU or EEA countryBuild a request with Postal address in an EU or EEA country
Lives in a Schengen country
Where enabledFor example:Postal address in a Schengen country
address_country_in_schengenPostal address is in the Schengen Area.
What it doesn’t prove, and where it comes from
From: A code in a letter posted to their address.
Any country where the letter can be delivered: see Coverage by country. A letter with a one-time code was posted to the address (by Pingen) and the person typed the code in the app. It proves a letter reached them there on the day they verified, not that they live there now, own it, or are the only person there. An address verification lasts 365 days.
How it worksAPI docs for Lives in a Schengen countryBuild a request with Postal address in a Schengen country
Lives in a region, state or province
Where enabledFor example:Postal address in California, United States
address_region_eq_US_californiaTheir verified postal address is in this region of this country.
What it doesn’t prove, and where it comes from
From: A code in a letter posted to their address.
The region is written lower case, accents removed, words joined by hyphens ("São Paulo" becomes sao-paulo), and compared with what the person wrote on their address, so local spellings matter: lisboa, not lisbon. No answer if their address has no region; an address in another country is a no. A letter with a one-time code was posted to the address (by Pingen) and the person typed the code in the app. It proves a letter reached them there on the day they verified, not that they live there now, own it, or are the only person there. An address verification lasts 365 days.
How it worksAPI docs for Lives in a region, state or provinceBuild a request with Postal address in California, United States
Lives in a city
Where enabledFor example:Postal address in Lisboa, Portugal
address_city_eq_PT_lisboaTheir verified postal address is in this city of this country.
What it doesn’t prove, and where it comes from
From: A code in a letter posted to their address.
The city is written lower case, accents removed, words joined by hyphens ("São Paulo" becomes sao-paulo), and compared with what the person wrote on their address, so local spellings matter: lisboa, not lisbon. No answer if their address has no city; an address in another country is a no. A letter with a one-time code was posted to the address (by Pingen) and the person typed the code in the app. It proves a letter reached them there on the day they verified, not that they live there now, own it, or are the only person there. An address verification lasts 365 days.
How it worksAPI docs for Lives in a cityBuild a request with Postal address in Lisboa, Portugal
Lives in a postcode area
Where enabledFor example:Postal address in Portugal, postcode starting 1000
address_postcode_prefix_PT_1000Their verified postal address has a postcode starting with these letters and digits.
What it doesn’t prove, and where it comes from
From: A code in a letter posted to their address.
Compares letters and digits only, in upper case: spaces and dashes are removed from their postcode (1000-001 becomes 1000001), so write the prefix the same way. An address in another country is a no. A letter with a one-time code was posted to the address (by Pingen) and the person typed the code in the app. It proves a letter reached them there on the day they verified, not that they live there now, own it, or are the only person there. An address verification lasts 365 days.
How it worksAPI docs for Lives in a postcode areaBuild a request with Postal address in Portugal, postcode starting 1000
Residence permit
A residence permit read from its chip, and which country issued it.
How to verify: residence permitResidence permit from a country
AvailableFor example:Residence permit from Portugal
residence_permit_from_PRTThey verified a residence permit issued by this country.
What it doesn’t prove, and where it comes from
From: The chip of a residence permit they verified in Prson, checked by Prson.
Needs a residence permit whose chip the person verified in Prson (document type residence_permit); it says which country issued it. It doesn't say what the permit allows (work, study, family) or whether it was revoked; add doc_not_expired to know it hasn't expired. Someone who verified a passport or ID card instead answers no: that isn't evidence they have no permit.
How it worksAPI docs for Residence permit from a countryBuild a request with Residence permit from Portugal
Residence permit from an EU country
AvailableFor example:Residence permit from an EU country
residence_permit_in_euHolds a residence permit issued by an EU country.
What it doesn’t prove, and where it comes from
From: The chip of a residence permit they verified in Prson, checked by Prson.
Needs a residence permit whose chip the person verified in Prson (document type residence_permit); it says which country issued it. It doesn't say what the permit allows (work, study, family) or whether it was revoked; add doc_not_expired to know it hasn't expired. Someone who verified a passport or ID card instead answers no: that isn't evidence they have no permit.
How it worksAPI docs for Residence permit from an EU countryBuild a request with Residence permit from an EU country
Residence permit from an EU or EEA country
AvailableFor example:Residence permit from an EU or EEA country
residence_permit_in_eeaHolds a residence permit issued by an EU or EEA country.
What it doesn’t prove, and where it comes from
From: The chip of a residence permit they verified in Prson, checked by Prson.
Needs a residence permit whose chip the person verified in Prson (document type residence_permit); it says which country issued it. It doesn't say what the permit allows (work, study, family) or whether it was revoked; add doc_not_expired to know it hasn't expired. Someone who verified a passport or ID card instead answers no: that isn't evidence they have no permit.
How it worksAPI docs for Residence permit from an EU or EEA countryBuild a request with Residence permit from an EU or EEA country
Residence permit from a Schengen country
AvailableFor example:Residence permit from a Schengen country
residence_permit_in_schengenHolds a residence permit issued by a Schengen country.
What it doesn’t prove, and where it comes from
From: The chip of a residence permit they verified in Prson, checked by Prson.
Needs a residence permit whose chip the person verified in Prson (document type residence_permit); it says which country issued it. It doesn't say what the permit allows (work, study, family) or whether it was revoked; add doc_not_expired to know it hasn't expired. Someone who verified a passport or ID card instead answers no: that isn't evidence they have no permit.
How it worksAPI docs for Residence permit from a Schengen countryBuild a request with Residence permit from a Schengen country
Phone
A phone number they proved with an SMS code: that it is verified, a mobile, or from a country.
How to verify: phoneHas a verified phone number
Where enabledFor example:Phone number verified
phone_verifiedPhone number is verified.
What it doesn’t prove, and where it comes from
From: A code sent by SMS to their phone.
They signed in with a code sent by SMS to that number, so they could receive its texts when they verified. A phone verification lasts 365 days. It doesn't say whose name the line is in.
How it worksAPI docs for Has a verified phone numberBuild a request with Phone number verified
Phone number is a mobile
Where enabledFor example:Phone number is a mobile
phone_is_mobilePhone number is a mobile number.
What it doesn’t prove, and where it comes from
From: A code sent by SMS to their phone.
The line type comes from the international numbering plan, not a live lookup with the carrier: a number moved to another network keeps its original range's type. Where the plan doesn't separate mobiles from landlines (the US, Canada and a few others) Prson gives no answer, so the request can't be fulfilled with a yes or no there. Internet (VoIP) numbers are a no. They signed in with a code sent by SMS to that number, so they could receive its texts when they verified. A phone verification lasts 365 days. It doesn't say whose name the line is in.
How it worksAPI docs for Phone number is a mobileBuild a request with Phone number is a mobile
Phone number from a country
Where enabledFor example:Phone number from Portugal
phone_country_eq_PTTheir verified phone number belongs to this country's numbering plan.
What it doesn’t prove, and where it comes from
From: A code sent by SMS to their phone.
The country comes from the number itself (the international numbering plan), not a live lookup with the carrier: it says nothing about where the person is. They signed in with a code sent by SMS to that number, so they could receive its texts when they verified. A phone verification lasts 365 days. It doesn't say whose name the line is in.
How it worksAPI docs for Phone number from a countryBuild a request with Phone number from Portugal
Phone number from an EU country
Where enabledFor example:Phone number from an EU country
phone_country_in_euPhone number is from an EU country.
What it doesn’t prove, and where it comes from
From: A code sent by SMS to their phone.
The country comes from the number itself (the international numbering plan), not a live lookup with the carrier: it says nothing about where the person is. They signed in with a code sent by SMS to that number, so they could receive its texts when they verified. A phone verification lasts 365 days. It doesn't say whose name the line is in.
How it worksAPI docs for Phone number from an EU countryBuild a request with Phone number from an EU country
An email address they proved with a code: that it is verified, a work address, at a given domain, or not a throwaway one.
How to verify: emailHas a verified email address
AvailableFor example:Email address verified
email_verifiedEmail address is verified.
What it doesn’t prove, and where it comes from
From: A code sent to their email address.
They typed a code sent to that address, so they could read that inbox when they verified. An email verification lasts 180 days. It doesn't say who owns or runs the address.
How it worksAPI docs for Has a verified email addressBuild a request with Email address verified
Work email address
AvailableFor example:Work email address (not a free or throwaway provider)
email_workEmail address is at an organisation's own domain, not a free or throwaway provider.
What it doesn’t prove, and where it comes from
From: A code sent to their email address.
Yes means the domain isn't on Prson's list of free or throwaway providers (gmail.com, outlook.com, yahoo, gmx and others; mailinator.com and others). It doesn't prove an employer or a job title, or that a company runs the domain: a personal domain counts. To ask about one organisation, use email_domain_eq_{domain}. They typed a code sent to that address, so they could read that inbox when they verified. An email verification lasts 180 days. It doesn't say who owns or runs the address.
How it worksAPI docs for Work email addressBuild a request with Work email address (not a free or throwaway provider)
Email address at a domain
AvailableFor example:Email address at example.com
email_domain_eq_example.comTheir verified email address is at exactly this domain.
What it doesn’t prove, and where it comes from
From: A code sent to their email address.
The domain must match exactly: mail.example.com and example.com are different. They could read an inbox at that domain when they verified; it doesn't prove they still work or study there, or their role. They typed a code sent to that address, so they could read that inbox when they verified. An email verification lasts 180 days. It doesn't say who owns or runs the address.
How it worksAPI docs for Email address at a domainBuild a request with Email address at example.com
Email address isn't a throwaway one
AvailableFor example:Email address is not a throwaway one
email_not_disposableEmail address is not at a throwaway provider.
What it doesn’t prove, and where it comes from
From: A code sent to their email address.
Yes means the domain isn't on a short list of throwaway inbox services. The list isn't complete: a rare throwaway service can still pass. They typed a code sent to that address, so they could read that inbox when they verified. An email verification lasts 180 days. It doesn't say who owns or runs the address.
How it worksAPI docs for Email address isn't a throwaway oneBuild a request with Email address is not a throwaway one
School or university email address
Coming soonFor example:School or university email address
email_domain_academicEmail address is at a university or school.
What it doesn’t prove, and where it comes from
From: A list of academic domains (not available yet).
Coming soon: Prson can't verify this yet, so asking for it is refused.
Controls a website
AvailableFor example:Controls the website example.com
website_domain_eq_example.comThey proved control of this domain's DNS.
What it doesn’t prove, and where it comes from
From: A DNS record they added to the domain, checked by Prson.
They added a DNS TXT record at _prson-challenge.{domain} that Prson looked up, so they controlled the domain's DNS at that time. It lasts up to 365 days, never past the domain's registration expiry. It doesn't prove who legally owns the domain or the company behind it. The domain must match exactly: www.example.com and example.com are different.
How it worksAPI docs for Controls a websiteBuild a request with Controls the website example.com
Identity level
How far their identity was checked. Level 5 or more is what Prson calls a verified human: a passport or ID card chip checked by Prson.
How to verify: identity levelVerified human
AvailableFor example:Verified human (identity level 5 or higher)
verification_level_gte_5Prson checked the chip of their passport or ID card (level 5 or more).
What it doesn’t prove, and where it comes from
From: Their verification level in Prson (5 and 6: chip checked by Prson).
Says how far the identity was checked, not who the person is: no name or document detail is shared. Levels 5 and 6 (a passport or ID card chip checked by Prson) are what Prson calls a verified human; 6 adds a face match between a live selfie and the chip photo. Levels 1 to 4 are checks done on the phone and are never called verified human.
How it worksAPI docs for Verified humanBuild a request with Verified human (identity level 5 or higher)
Verified human, with a face match
AvailableFor example:Verified human (identity level 6 or higher)
verification_level_gte_6Level 6: chip checked by Prson, plus a face match between a live selfie and the chip photo.
What it doesn’t prove, and where it comes from
From: Their verification level in Prson (5 and 6: chip checked by Prson).
Says how far the identity was checked, not who the person is: no name or document detail is shared. Levels 5 and 6 (a passport or ID card chip checked by Prson) are what Prson calls a verified human; 6 adds a face match between a live selfie and the chip photo. Levels 1 to 4 are checks done on the phone and are never called verified human.
How it worksAPI docs for Verified human, with a face matchBuild a request with Verified human (identity level 6 or higher)
Identity level 4 or more
AvailableFor example:Identity verified to level 4 or higher
verification_level_gte_4At least a photo of an identity document, checked on the phone (never called a verified human).
What it doesn’t prove, and where it comes from
From: Their verification level in Prson (5 and 6: chip checked by Prson).
Says how far the identity was checked, not who the person is: no name or document detail is shared. Levels 5 and 6 (a passport or ID card chip checked by Prson) are what Prson calls a verified human; 6 adds a face match between a live selfie and the chip photo. Levels 1 to 4 are checks done on the phone and are never called verified human.
How it worksAPI docs for Identity level 4 or moreBuild a request with Identity verified to level 4 or higher
Identity level 3 or more
AvailableFor example:Identity verified to level 3 or higher
verification_level_gte_3At least a live selfie and Face ID on their phone (never called a verified human).
What it doesn’t prove, and where it comes from
From: Their verification level in Prson (5 and 6: chip checked by Prson).
Says how far the identity was checked, not who the person is: no name or document detail is shared. Levels 5 and 6 (a passport or ID card chip checked by Prson) are what Prson calls a verified human; 6 adds a face match between a live selfie and the chip photo. Levels 1 to 4 are checks done on the phone and are never called verified human.
How it worksAPI docs for Identity level 3 or moreBuild a request with Identity verified to level 3 or higher
BankComing soon
Bank account, balance and income. Coming soon: Prson can't verify these yet, and asking for them is refused.
Has a verified bank account
Coming soonFor example:Has a verified bank account
has_verified_bank_accountHas a verified bank account.
What it doesn’t prove, and where it comes from
From: Bank linking (not available yet).
Coming soon: Prson can't verify this yet, so asking for it is refused.
Bank account in a country
Coming soonFor example:Bank account in Portugal
bank_account_country_eq_PRTTheir bank account is in this country.
What it doesn’t prove, and where it comes from
From: Bank linking (not available yet).
Coming soon: Prson can't verify this yet, so asking for it is refused.
Bank account in an EU country
Coming soonFor example:Bank account in an EU country
bank_account_in_euTheir bank account is in an EU country.
What it doesn’t prove, and where it comes from
From: Bank linking (not available yet).
Coming soon: Prson can't verify this yet, so asking for it is refused.
Bank account in an EU or EEA country
Coming soonFor example:Bank account in an EU or EEA country
bank_account_in_eeaTheir bank account is in an EU or EEA country.
What it doesn’t prove, and where it comes from
From: Bank linking (not available yet).
Coming soon: Prson can't verify this yet, so asking for it is refused.
Bank balance of at least an amount
Coming soonFor example:Bank balance of at least €1,000
balance_gte_1000_eurTheir bank balance is at least this amount.
What it doesn’t prove, and where it comes from
From: Bank linking (not available yet).
Coming soon: Prson can't verify this yet, so asking for it is refused.
Monthly income of at least an amount
Coming soonFor example:Monthly income of at least €2,000
income_gte_2000_eurTheir monthly income is at least this amount.
What it doesn’t prove, and where it comes from
From: Bank linking (not available yet).
Coming soon: Prson can't verify this yet, so asking for it is refused.
Not sure which one to ask for?
The verification guides explain each kind of fact in plain words, with what a yes proves and what it doesn’t. Building a website or an AI agent? The developer docs list the same facts with example requests.