Update mutable business profile fields (PATCH semantics).
Fields not present in the body are left untouched. Identity fields
(registration_number, country) and verification-state fields
(kyb_status, kyb_level, verification_mode,
sumsub_applicant_id) are intentionally not editable here.
Once a business has been verified, the fields used in the
verification decision — company_name and tax_id — become
locked. Changing them after the fact would silently drift the
on-record identity from what the KYB provider / external attestation
evaluated. Operational fields (legal_address, contact_email)
stay editable so a business that relocates or changes ops contact
doesn't need a re-verify. To change a locked field, superadmin must
run kyb-reset first.
"Verified" is checked redundantly so the lock survives data
inconsistencies (e.g. legacy rows where verification_source is
NONE but kyb_status is APPROVED, or rows where Sumsub created an
applicant but the webhook hasn't landed yet):
kyb_status == approved(urbanpayx-decided approval)external_verification_status == verified(external attestation)verification_source != none(canonical post-decision state)sumsub_applicant_id is not None(Sumsub already saw this identity)
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||