# Profile sections

Source: https://docs.settlemint.com/docs/console/participants/profile-sections
Choose which fields every member's KYC profile collects: create sections, add their fields, and order, retire or delete them.

Profile sections let your organisation decide which facts the KYC profile of each member collects. A "Permission manager" or "System manager" groups fields into sections and sets each field's type. For each field they also set whether it is required and whether the member or an "Identity manager" fills it in. An identity manager is the system role that reviews KYC profiles. Every member's KYC profile in the organisation then shows those sections in the order they set.

A member of the organisation is a participant, the off-chain subject that KYC data belongs to. The member fills the form in on [Profile](https://docs.settlemint.com/docs/console/my-account/profile), and a reviewer decides it from [Users](https://docs.settlemint.com/docs/console/participants/users).

Every profile holds four fixed fields, first name, last name, country and national ID, and then the sections in your order. One section, Identity details, comes from the platform with a **DALP Library** badge: you cannot edit it, but you can retire it for your organisation.

![Profile sections list with the DALP Library Identity details section, two organisation sections, and Create section](https://docs.settlemint.com/docs/screenshots/console-profile-sections.light.en.webp)

[Screenshot] A table with "Name", "Description" and "Fields" columns.

In the table, "Identity details" carries the "DALP Library" badge and has no move buttons. The organisation's own sections, here "Source of funds" and "Tax residency", end in "Move up" and "Move down" arrows. **Create section** sits above the table.

## Before you start [#before-you-start]

- Your account needs the "Permission manager" or "System manager" role. The Platform API refuses every profile section route for any other role. A compliance officer usually decides which facts to collect, an account with one of these roles enters them here, and an identity manager reviews the profiles.
- **Filled by** decides who writes a field and whether the member reads it. The member's current profile and the member's version history in the Platform API both leave out "Identity manager" values. An identity manager reading the profile sees every field.
- Decide the fields before you create them. A field locks once a participant holds a value for it, or once any KYC version in your organisation has filled it. After that you cannot remove the field, change its type or change its **Filled by** setting, which the API calls its audience. You also cannot remove one of its choices or change a "Fixed once set" field to "Managers only".

## Steps [#steps]

### Create a section [#create-a-section]

Select **Create section**. In the "Create profile section" sheet, enter a name, an optional description and an optional reason for the change, then select "Create". The platform records the reason with the change. The name is required and holds at most 255 characters. Two sections of one organisation cannot share a name, and the check ignores case. The platform refuses a duplicate with error `DALP-0463`, HTTP 409.

The platform derives the section's short name, called a slug, from the name. A name whose slug belongs to a platform section, such as Identity details, is refused. The Console shows **Section created** and opens the new section so you can add fields.

### Add the fields [#add-the-fields]

On the section page, select **Add field** in the "Profile fields" card. Enter a label and the Console builds the key from it. The key starts with a letter and holds only letters and digits. Choose the type, then set these options.

| Option | What it does |
| --- | --- |
| Type | Text, number, date, choice list, ISIN, address, basis points, percentage, currency, country, LEI, CUSIP, FIGI, amount or URL. |
| Filled by | **User** fields are filled by the member. **Identity manager** fields are filled only by an identity manager. They are hidden from the member's current profile and from the member's version history in the Platform API. |
| Required | The member must fill a **User** field before the profile can be submitted. A required **Identity manager** field does not block submission. |
| Default value | Pre-fills the field for every member. |
| Options | For a choice list, currency or country field, the allowed values, separated by commas. |
| Bounds | Text fields set **Min characters** and **Max characters**. Number, date, amount, basis points and percentage fields set a lower and upper bound. |
| Changes | **Fixed once set** cannot change after a value is saved. **Managers only** lets a saved value change and adds no limit beyond **Filled by** on who changes it. |

Select **Add field** in the sheet to store the field. The Console does not offer a storage choice, because every profile field is stored off-chain. Select a field in the table to edit it later. Change the field in its sheet and select "Save". Deleting a field cannot be undone. To remove a field nobody has filled, select "Delete field" in the same sheet and type the field key to confirm.

## Put the sections in order [#put-the-sections-in-order]

The list shows 24 sections per page in display order, with each section's name, description and field count, and leaves out retired sections. Use **Move up** and "Move down" on a section. Platform sections have no move buttons. The Console shows "Order saved". The order applies to every member's KYC profile. The buttons are off while you filter or search the list.

## Retire a section [#retire-a-section]

Open the section and select **Retire section**. For one of the organisation's own sections, the Console retires it at once, shows "Section retired" and returns to the list. The notification has an "Undo" action for 8 seconds. Undo makes the section active again, and the Console shows "Section restored". After the notification closes, only the Platform API can restore the section, with an update that sets `retired` to `false`.

A retired section keeps its name, so no other section can take that name while it is retired. Members are no longer asked for its fields, and the fields stop showing in profiles and stop counting towards a complete profile. Earlier KYC versions keep the values they recorded. The Console offers no edits on a retired section.

Retiring Identity details, or any platform section, is permanent for your organisation: neither the Console nor the Platform API can restore it. Other organisations keep the section. The Console first asks "Retire this section?". Select **Retire section** to confirm or "Keep section" to cancel. The notification that follows has no "Undo" action.

## Delete a section nobody has filled [#delete-a-section-nobody-has-filled]

Open one of the organisation's own sections and select **Delete section**. The Console deletes the section at once, shows "Section deleted" and returns to the list. The notification has an "Undo" action for 8 seconds. Undo creates the section again with the same identifier, name, description, fields and position, and the Console shows "Section restored".

If another section took the name in the meantime, Undo is refused with "A section with this name exists again. Rename that section, then restore this one." After the notification closes, the deletion is final. Platform sections have no delete action. If a participant holds a value for one of the section's fields, or any KYC version filled one, the platform refuses.

The Console then shows the platform's refusal, which tells you to retire the section instead.

## What a KYC profile holds [#what-a-kyc-profile-holds]

A KYC profile has two parts.

- **Fixed fields.** First name, last name, country and national ID are in every profile. They belong to no section, and you cannot remove or reconfigure them.
- **Sections.** Each section is a named group of fields that your organisation defines. The platform also provides one section, Identity details, which holds date of birth and residency status. It shows in every organisation with a "DALP Library" badge, and nobody can edit it. Each organisation can retire it for itself.

The platform stores every section field off-chain. It records each filled value under the section's short name and the field key, for example `identity-details.dob`. Each submitted version stays in the profile's history, so the history of what was collected stays readable. A profile is complete only when the fixed fields are filled and every required **User** field in every active section is filled. Retired sections and fields filled by an identity manager do not count.

## Section fields stay off chain [#section-fields-stay-off-chain]

Section fields never go on chain: the platform refuses a section field that asks for on-chain storage. What a regulated token reads is a verification, an issuer-signed record attached to the participant's on-chain identity. Approval does put facts derived from the profile on chain. When the identity is registered, approving the profile adds a Residence verification for the profile's country, issued by the organisation's identity. An issuer can then add a KYC verification, whose value the Console calculates from the approved profile.

When an issuer adds a verification on one of these investor topics, the platform refuses it unless the participant behind the target identity has an approved KYC profile in your organisation: KYC, AML, KYT, KYB, Qualified institutional investor, Professional investor, Accredited investor, Accredited investor verified and Regulation S. The check covers a verification the platform submits for an EVM identity and one it submits for a Canton party. When a connected [compliance provider](https://docs.settlemint.com/docs/console/compliance/compliance-providers) returns an approved verdict, the platform issues the matching verification without that check.

No contract reads the profile, because the profile stays off chain, so the platform runs this check before it submits the verification. A token accepts a valid verification from any issuer trusted for its topic on [Trusted issuers](https://docs.settlemint.com/docs/console/compliance/trusted-issuers) or on the token's own trusted issuers screen. So a compliance provider you trust for an investor topic can make a participant eligible without an approved KYC profile in your organisation. [Verify a participant](https://docs.settlemint.com/docs/console/participants/verify-a-participant) covers issuing the verification and [On-chain identity](https://docs.settlemint.com/docs/console/my-account/onchain-identity) the identity it attaches to.

## Who sees what [#who-sees-what]

A field's audience decides who fills it in and whether the member reads it. The member's current profile omits identity manager fields. The member's own version history in the Platform API omits them too, and leaves out a section that has no value left for the member to read. An identity manager who reads the member's version history receives the stored values of every field. The Console's version history does not list section values.

## You should see [#you-should-see]

- Open **Profile sections** again. A new section appears in the list with the number of fields you added, and a retired section no longer appears.
- Sign in with a test member account of the organisation and open [Profile](https://docs.settlemint.com/docs/console/my-account/profile).
- Do not save the form in a live organisation, because a saved value locks its field.
- The KYC form shows the user fields of every active section in the order you set. It does not show fields that an identity manager fills.

## Troubleshooting [#troubleshooting]

When the platform refuses a create, save or delete, the Console shows an error notification with the platform's message. After a refused create or save, a "Reference ID" follows when the response includes one.

**The Profile sections entry is missing from the sidebar**

Your account holds neither the "Permission manager" nor the "System manager" role. An "Identity manager" does not see
the entry, and the Platform API refuses the routes for them. Ask a "Permission manager" to grant one of the two roles.

**A field is locked**

Once any participant holds a value for a field, or any KYC version filled it, the platform refuses to remove the
field. It also refuses to change its audience or type, to remove one of its choices, or to change a "Fixed once set"
field to "Managers only". Only KYC versions and values in your organisation count. The refusal is error `DALP-12112`,
named `PROFILE_SECTION_STORAGE_LOCKED`, and its `data.keys` lists the locked fields. This is a caller error, and
repeating the same change fails again. It does not mean stored values are lost. After a refused save the Console lists
the keys in the error message and disables the **Filled by** selector for those fields. Keep those fields as they are
or add a new field with the settings you want. You can still remove a field that nobody has filled.

**The platform refuses to delete a section**

The refusal is error `DALP-12151`, named `PROFILE_SECTION_HOLDS_VALUES`. A participant holds a value for a field of
the section, or a KYC version recorded one, and deleting the section would leave that value without a field
definition. Retire the section instead. Earlier versions keep its values. This is a caller error, and repeating the
delete fails again. It does not mean the delete partly ran. The section and its values are unchanged.

**The platform refuses a section name**

A name whose slug matches a platform section, such as Identity details, returns error `DALP-12140`, named
`PROFILE_SECTION_SYSTEM_SLUG_TAKEN`, and `data.slug` names the slug. Choose a name that produces a different slug.
This is a caller error, and the same name fails again. It does not mean your organisation already has a section with
that name. A name another section of your organisation already uses returns error `DALP-0463`, named
`SETTINGS_TEMPLATE_NAME_ALREADY_EXISTS`, HTTP 409. Choose a different name.

**A platform section cannot be changed or deleted**

Platform sections are shared by every organisation, so the Platform API refuses to change or delete one. The refusal
is error `DALP-12113`, named `PROFILE_SECTION_SYSTEM_READONLY`, HTTP 403. This is a caller error, and repeating the
change or delete fails again. It does not mean your role lacks a permission, which also answers HTTP 403, so match on
the error code rather than the status. Create a section of your own with the fields you need and retire the platform
section for your organisation if you do not want it.

**A section is not found**

Error `DALP-12110`, named `PROFILE_SECTION_NOT_FOUND`, means no section with that identifier is visible to the active
organisation. Sections of another organisation answer the same way. List the sections and retry with an identifier
from the list. This is a caller error, and repeating the same request fails again.

## Frequently asked questions [#frequently-asked-questions]

### Can a member see the fields an identity manager fills?

No. The member's current profile and the member's version history in the Platform API both omit identity manager fields, as [Who sees what](#who-sees-what) describes. An identity manager reading the same profile sees every field.

### What happens to values already collected when a section is retired?

Nothing is deleted. The fields stop showing on profiles and stop counting towards a complete profile. Earlier KYC versions keep what they recorded.

### Can the national ID be a configurable field?

No. First name, last name, country and national ID are fixed fields outside the sections.

## API routes [#api-routes]

The Platform API serves the sections under `/api/v2/settings/profile-sections`. The routes are list, create, read, update, delete, retire and reorder. Each needs the "Permission manager" or "System manager" role. Each field must set `storage` to `offchain` and name its `audience`. A field without `storage` is refused. A field key holds letters, digits, underscores and hyphens. The Console builds keys of letters and digits only.

The list excludes retired sections unless you filter on the retired flag, and a retired section stays readable by its identifier. An update that sets `retired` to `false` restores one of your organisation's own retired sections. See the [API reference](https://docs.settlemint.com/docs/api-reference/v2) for the schemas.
