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. |
| Must match email regex (see Regex library). | |
| 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.
•
protectionType→ complete_enum_lists.xlsx
•
professionalSituation→ IND_ProfessionalSituation.pdf
•
province→ AddressProvince.pdf
•
birthProvince→ BirthProvince.pdf
PEP
PEP_STATUS:NO,YES,CLOSEPEP_POSITION:POLITICAL_LEADER,POLITICAL_REPRESENTATIVE,JUDICIAL_OFFICIAL,FINANCIAL_AUDITOR,BANK_EXECUTIVE,DIPLOMATIC_REPRESENTATIVE,MILITARY_LEADER,ADMINISTRATIVE_OFFICIAL,ORGANIZATIONAL_OFFICIAL,OTHERPEP_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):INCOMEREAL_ESTATE_PROPERTIESSAVINGS_ACCUMULATED_OVER_SEVERAL_YEARSDONATION_OR_INHERITANCESALE_OF_A_STOCK_PORTFOLIOTRANSFER_OF_COMPANY_SHARESWINNING_FROM_GAMES_OR_CONTESTSSURRENDER_OF_A_CAPITALIZATION_CONTRACT_OR_LIFE_INSURANCE_POLICYSALE_OF_MOVABLE_ASSETS_GOODWILL_INTELLECTUAL_PROPERTY_RIGHTSSALE_OF_CURRENCY_GOLD_OR_CRYPTOCURRENCIESFINANCIAL_INVESTMENTSOTHER_OPERATIONS
Legal capacity
CAPACITY_TYPE:LEGAL_AGE_AND_CAPACITY,PROTECTED_ADULT,MINOR_NOT_EMANCIPATED,MINOR_EMANCIPATEDPROTECTION_TYPE(required whenCAPACITY_TYPE = PROTECTED_ADULT):SAFEGUARDING_OF_JUSTICE,CURATORSHIP,GUARDIANSHIP,OTHER
Project
PROJECT_TYPE:WEDDING,FAREWELL,NEWBORN,BIRTHDAY,CHARITY,OTHERWEDDING_RELATION_TYPE(whenPROJECT_TYPE = WEDDING):BRIDE_GROOM,OTHERSALARY_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_SEEKERisPayer: booleanPAYER_RELATIONSHIP_LINK(whenisPayer = false):MOTHER_FATHER,RELATIVES,SIBLINGS,GRAND_PARENTS,HUSBAND_WIFE,LIFE_PARTNER,OTHER- Payer’s income/wealth/sourceOfFunds (when
isPayer = true): useINCOME_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 ≤ endDateand 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,
PEPconditionals, project‑type conditionals)
