Validation Rules for Individuals

Individual — Field Validation Rules (with Enums)


Character policy for names

  • Disallowed special characters: ?!§&#{[\@]}=+^$%*<>;"
  • Allowed: standard letters (including accents like é, è, ô), hyphen (-), apostrophe ('), and language‑specific characters (e.g., Ł, Ø).
  • FR: Les caractères typiques présents dans certains noms comme le trait d’union (-), l’apostrophe ('), les lettres accentuées (é, è, ô, etc..) ou les caractères propres à certaines langues comme Ł ou Ø sont, quant à eux, acceptés.

Quick scan table

Field

Rules

First name

1–35 chars. Apply Character policy for names.

Last name

1–35 chars. Apply Character policy for names.

Other name

≤ 35 chars. Apply Character policy for names.

Email

Must match email regex (see Regex library).
Important: Email addresses are currently restricted to 60 characters.

Phone number

Must match phone regex (see Regex library). Optional at account creation; required to complete onboarding.

Birth date

Format DD/MM/YYYY; not today or future; year ≥ 1920. (Optional: min age ≥ 18; partner‑configurable, floor at 12.)

Birth city

String, 1–90 chars. Optional at creation; required to complete onboarding.

Birth province

Enum (Italy only; see BOI list). Optional; required if residence country = IT.

Birth country

ISO 3166‑1 alpha‑2. Required.

Nationalities

ISO 3166‑1 alpha‑2 (single or multiple). Required.

Street

1–256 chars.Required to complete onboarding.

Complementary street info

1–256 chars. Optional.

Postal code

Alphanumeric, 1–90 chars. Optional; required to complete onboarding.

City

String, 1–90 chars. Optional; required to complete onboarding.

Province

Enum (Italy only; see BOI list). Optional; required if residence country = IT.

Country of residence

ISO 3166‑1 alpha‑2. Required.

PEP status

Enum PEP_STATUS {NO, YES, CLOSE}. Optional at creation; required to complete onboarding.

PEP position

Enum PEP_POSITION (see below). Required if status ∈ {YES, CLOSE}.

PEP other position

String. Required if position = OTHER.

PEP start date

Date DD/MM/YYYY. Required if status ∈ {YES, CLOSE}.

PEP end date

Date DD/MM/YYYY. Optional.

PEP close relationship

Enum PEP_CLOSE_RELATIONSHIP. Required if status = CLOSE.

PEP full name

1–35 chars. Required if status = CLOSE.

Occupation

Enum PROFESSIONAL_ACTIVITY (PCS codes). Optional at creation; required to complete onboarding for lenders/investors/project holders.

Annual revenue

Enum INCOME_TIER (6 tiers; see list). Optional at creation; required to complete onboarding for lenders/investors/project holders.

Estimated wealth

Enum WEALTH_TIER (7 tiers; see list). Optional at creation; required to complete onboarding for lenders/investors/project holders.

IFI tax

Boolean. Required if residence country = FR.

Legal capacity — type

Enum CAPACITY_TYPE. Optional at creation; required to complete onboarding.

Legal capacity — protection type

Enum PROTECTION_TYPE. Required if type = PROTECTED_ADULT.

Legal capacity — other

String 1–90. Required if protectionType = OTHER.

Type of project

Enum PROJECT_TYPE. Optional at creation; required if profile = project holder.

Wedding relation

Enum WEDDING_RELATION_TYPE. Required if project.type = WEDDING.

Project description

≤ 256 chars. Required if project.type ∈ {CHARITY, OTHER}.

Project website

URL regex. Required if project.type ∈ {CHARITY, OTHER}.

Board member function

Enum (not specified in this extract).


Enumerations

Reference lists — Parameters for Triggering an Onboarding Use these authoritative lists when populating payloads. They’re large, so we link out instead of inlining.

protectionTypecomplete_enum_lists.xlsx


professionalSituationIND_ProfessionalSituation.pdf


provinceAddressProvince.pdf


birthProvinceBirthProvince.pdf

PEP

  • PEP_STATUS: NO, YES, CLOSE
  • PEP_POSITION: POLITICAL_LEADER, POLITICAL_REPRESENTATIVE, JUDICIAL_OFFICIAL, FINANCIAL_AUDITOR, BANK_EXECUTIVE, DIPLOMATIC_REPRESENTATIVE, MILITARY_LEADER, ADMINISTRATIVE_OFFICIAL, ORGANIZATIONAL_OFFICIAL, OTHER
  • PEP_CLOSE_RELATIONSHIP: PARTNER, CHILD, PARENT

Professional & Financial

  • PROFESSIONAL_ACTIVITY: list of PCS codes (reference: roles.partnerActivityType / PCS catalog)

  • INCOME_TIER: FIRST_TIER, SECOND_TIER, THIRD_TIER, FOURTH_TIER, FIFTH_TIER, SIXTH_TIER

  • WEALTH_TIER: FIRST_TIER, SECOND_TIER, THIRD_TIER, FOURTH_TIER, FIFTH_TIER, SIXTH_TIER, SEVENTH_TIER

  • SOURCE_OF_FUNDS (array of enum):

    • INCOME
    • REAL_ESTATE_PROPERTIES
    • SAVINGS_ACCUMULATED_OVER_SEVERAL_YEARS
    • DONATION_OR_INHERITANCE
    • SALE_OF_A_STOCK_PORTFOLIO
    • TRANSFER_OF_COMPANY_SHARES
    • WINNING_FROM_GAMES_OR_CONTESTS
    • SURRENDER_OF_A_CAPITALIZATION_CONTRACT_OR_LIFE_INSURANCE_POLICY
    • SALE_OF_MOVABLE_ASSETS_GOODWILL_INTELLECTUAL_PROPERTY_RIGHTS
    • SALE_OF_CURRENCY_GOLD_OR_CRYPTOCURRENCIES
    • FINANCIAL_INVESTMENTS
    • OTHER_OPERATIONS

Legal capacity

  • CAPACITY_TYPE: LEGAL_AGE_AND_CAPACITY, PROTECTED_ADULT, MINOR_NOT_EMANCIPATED, MINOR_EMANCIPATED
  • PROTECTION_TYPE (required when CAPACITY_TYPE = PROTECTED_ADULT): SAFEGUARDING_OF_JUSTICE, CURATORSHIP, GUARDIANSHIP, OTHER

Project

  • PROJECT_TYPE: WEDDING, FAREWELL, NEWBORN, BIRTHDAY, CHARITY, OTHER
  • WEDDING_RELATION_TYPE (when PROJECT_TYPE = WEDDING): BRIDE_GROOM, OTHER
  • SALARY_ADVANCE_REASON_TYPE: UNFORESEEN_BILLS, URGENT_FAMILY_EXPENSES, WEDDING, BIRTH, HOUSE_MOVE, HOLIDAYS, OTHER

Address (Italy‑specific)

  • Subdivision / Province enums: use BOI enumerations (e.g., AOSTA, …) when country = IT

Visa applicant — Financial support (additional profile)

  • VISA_APPLICANT_ROLE: STUDENT, JOB_SEEKER
  • isPayer: boolean
  • PAYER_RELATIONSHIP_LINK (when isPayer = false): MOTHER_FATHER, RELATIVES, SIBLINGS, GRAND_PARENTS, HUSBAND_WIFE, LIFE_PARTNER, OTHER
  • Payer’s income/wealth/sourceOfFunds (when isPayer = true): use INCOME_TIER, WEALTH_TIER, SOURCE_OF_FUNDS

Regex library (suggested patterns)

Pragmatic patterns for client‑side/ingress checks. Use server‑side validators and canonical parsers for final enforcement.

Email (simple, practical)

^[^\s@]+@[^\s@]+\.[^\s@]{2,}$

Phone number (E.164 international)

^\+?[1-9]\d{1,14}$

Date — DD/MM/YYYY with year ≥ 1920

^(0[1-9]|[12]\d|3[01])\/(0[1-9]|1[0-2])\/(19[2-9]\d|20\d{2})$

Note: This regex does not validate calendar edge cases (e.g., 31/02). Apply a date parser to enforce real dates and the not today / not future rule.

ISO country codes (alpha‑2)

^[A-Z]{2}$

Website / URL (basic, http/https or bare www)

^(https?:\/\/)?([\w-]+\.)+[\w-]{2,}(\/[^\s]*)?$

For production, prefer a URL parser over regex.


Age rules (optional, partner‑configurable)

  • Standard: minimum age ≥ 18 years
  • Custom: partner configuration can lower the minimum age but not below 12 years

Implementation tips

  • Enforce length limits at both UI (maxlength) and API (schema) levels
  • Normalize names (trim, collapse repeated spaces) but do not strip valid characters from the policy above
  • Validate country codes against an ISO‑3166 list; reject unknown codes even if regex matches
  • For PEP periods, ensure startDate ≤ endDate and dates are in the past
  • For address lines, allow common punctuation (comma, period) unless your business rules require stricter filters
  • Respect collection rules from the data model: many fields are optional at account creation but required to complete onboarding; also apply conditional requirements (Italy‑specific provinces, PEP conditionals, project‑type conditionals)