Pre-save validator (ClientWritePlatformServiceJpaRepositoryImpl.validateClientUniqueness) rejects duplicate mobile / email / PAN / Aadhaar (masked) / GSTIN before saveAndFlush and before the LincPay KYC API call. Avoids burning vendor credits on identity-duplicate records and gives the UI a clean field-level 403 instead of waiting for the DB constraint. Splits the new repository finders into "create" and "excluding-self" variants so a nullable Long parameter never reaches PostgreSQL's parser (same bigint <> varchar trap that broke the family-member POST earlier). Also seeds the full set of 28 Indian States + 8 UTs as STATE code_values (migration 0297). Previously only MAHARASHTRA / MADHYA_PRADESH / DELHI existed and the names were UPPER_SNAKE_CASE; the postal PIN-lookup service returns "Madhya Pradesh" so any state other than Maharashtra/Delhi silently failed to resolve to m_address.state_province_id. Renames the 3 existing rows in place (preserves their ids/FKs) and inserts the missing 33 with idempotent preConditions. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>