A3BC — Build digital trust. Together.
Français English
Documentation/Reference/Claims

Claims

Name, type and meaning of the claims returned in the id_token and userinfo.

Claims are provided in the id_token and by userinfo. The requested scope determines which claims apply (see the scopes).

Reading claims: a beginner’s guide

Present, empty or absent

A claim can be in three states, and your code must tell them apart:

State Meaning Example
Present with a value The user shared this information and it is available. "email": "john.doe@example.com"
Present but empty ("") The user agreed to share it, but the credential is waiting for validation (delayed sharing). "private:ssn": ""
Absent Scope not requested, information the user did not provide, or credential deleted. The operation does not fail because of it. no phone_number key

An empty or absent value never means “false”. For a truly indispensable claim, use mandatory claims.

The _verified suffix: how much to trust a claim

A claim may be verified (extracted from a document checked by TrustMe) or simply declared by the user. The associated *_verified claim tells you:

Claim Values Meaning
private:person_verified filled Base identity comes from a verified official identity document.
email_verified, phone_number_verified true / false true: verified with a one-time code (OTP).
private:address_verified document A proof (tax notice, energy or phone bill) was provided.
private:bankaccount_verified openbanking or document Obtained from the bank, or from a bank details document.
private:ssn_verified document A document carrying the number was provided.

Keep in mind: the profile scope does not say how claims were verified. If your decision depends on it (KYC, legal age), request private:person instead, which relies on an official document.

Identifiers

sub is the user’s stable identifier for your service (random or anonymized depending on your configuration, see Onboarding). Use it as your database key. Do not use email or name, which can change or repeat.

Formats to know

Data Format
birthdate YYYY-MM-DD
gender male or female
private:birthcountry ISO 3166 alpha-2 country code (fr)
private:nationality ISO 3166 alpha-3 country code (FRA)
phone_number International E.164 (+33612345678)
address.formatted \n line breaks, AFNOR NF Z 10-011 standard
*.credential.issuance / .expiration ISO 8601

Mind the alpha-2 / alpha-3 difference between birth country and nationality.

Credential validity dates

Each piece of information comes from a credential kept in the user’s wallet, with a limited lifetime. *.credential.expiration tells when it expires, for example for an identity document or an address. Do not confuse it with the token expiration (exp). If your use case requires it, refuse or re-request information whose credential has expired.

Documents and digests

The private:doc.* claims contain a URL, not the document. The *.hash claim gives the sha256:… digest of each file returned by the document API: compare it after download to make sure the file was not altered or replaced.

Which scopes for which need (indicative)

Need Scopes to consider
Open an account with verified identity openid private:person email phone (+ address)
Keep the identity document add private:doc.id (and private:doc.photo for the photo alone)
Transfer, direct debit private:bankaccount
Social or health file private:ssn.fr (+ private:doc.ssn)
Receive information still being validated add private:delayed_sharing

Every extra scope is one more piece of information the user must agree to share, and one more piece of data you must protect: see the checklist.

Base identity

ClaimTypeDescription
given_nameSTRINGAll first names.
family_nameSTRINGLast name.
genderSTRINGmale or female.
birthdateSTRINGDate of birth, format YYYY-MM-DD.
private:birthplaceSTRINGCity of birth as found on the official id.
private:birthcountrySTRINGCountry of birth, ISO 3166 alpha-2 code.
private:birthplace.inseeSTRINGINSEE code of the birthplace. No value when born outside France. Partially based on user input.
private:birthcountry.inseeSTRINGINSEE code of the country of birth. Available when born outside France. Based on user input.
private:nationalitySTRINGNationality, ISO 3166 alpha-3 code.
private:married_nameSTRINGMarried name (nom d’usage).

Other claims

ClaimTypeDescription
emailSTRINGEmail address.
email_verifiedBOOLEANVerified with an OTP challenge.
phone_numberSTRINGPhone number in international E.164 format.
phone_number_verifiedBOOLEANVerified with an OTP challenge.
addressOBJECTStandard OIDC address claim. formatted separator is a line feed \n, AFNOR NF Z 10-011 format.
private:address_detailsOBJECTformat (standard of formatted), street_number, street.
private:address_verifiedSTRINGdocument: the user provided a tax assessment or a utility (energy/phone) invoice.
private:bankaccountOBJECTbank, bic, iban, and rib (French bank: bank_code, counter_code, account_number, key).
private:bankaccount_verifiedSTRINGopenbanking (acquired from the bank) or document (banking details document).
private:ssnSTRINGSocial security number.
private:ssn_keySTRINGSocial security number control key.
private:ssn_verifiedSTRINGdocument: a document with the number was provided.

Document claims

ClaimTypeDescription
private:doc.idSTRINGAPI URL to fetch the id document (verified).
private:doc.photoSTRINGURL of the id photo, accessible with an access token.
private:doc.addressSTRINGURL of the verified address document.
private:doc.bankaccountSTRINGURL of the verified banking details document.
private:doc.ssnSTRINGURL of the verified social security document.
private:doc.id.hasharray(STRING)Content hashes of each document returned by the document API (sha256:...).
private:doc.photo.hasharray(STRING)Same for the photo.
private:doc.address.hasharray(STRING)Same for the address document.
private:doc.bankaccount.hasharray(STRING)Same for the banking details.
private:doc.ssn.hasharray(STRING)Same for the social security document.

Credential dates

Claims come from credentials managed by the user’s wallet, verified before any sharing. Each credential has a limited lifetime; these claims give its issuance and expiration dates.

ClaimTypeDescription
private:person.credential.issuanceSTRINGIssuance date of the credential the person claims were extracted from (ISO 8601).
private:person.credential.expirationSTRINGExpiration date of that credential (ISO 8601).
private:email.credential.issuanceSTRINGIssuance date of the credential the email claims were extracted from (ISO 8601).
private:email.credential.expirationSTRINGExpiration date of that credential (ISO 8601).
private:phone_number.credential.issuanceSTRINGIssuance date of the credential the phone_number claims were extracted from (ISO 8601).
private:phone_number.credential.expirationSTRINGExpiration date of that credential (ISO 8601).
private:address.credential.issuanceSTRINGIssuance date of the credential the address claims were extracted from (ISO 8601).
private:address.credential.expirationSTRINGExpiration date of that credential (ISO 8601).
private:bankaccount.credential.issuanceSTRINGIssuance date of the credential the bankaccount claims were extracted from (ISO 8601).
private:bankaccount.credential.expirationSTRINGExpiration date of that credential (ISO 8601).
private:ssn.credential.issuanceSTRINGIssuance date of the credential the ssn claims were extracted from (ISO 8601).
private:ssn.credential.expirationSTRINGExpiration date of that credential (ISO 8601).
private:photo.credential.issuanceSTRINGIssuance date of the credential the photo claims were extracted from (ISO 8601).
private:photo.credential.expirationSTRINGExpiration date of that credential (ISO 8601).