# Equity tokenization in the console

Source: https://docs.settlemint.com/docs/user-guides/runbooks/equity-tokenization
Run the UI-led ACME Holdings equity tokenization walkthrough without confusing it with the API version.



This scenario walkthrough shows operators how to rehearse ACME Holdings equity tokenization in the DALP console. You follow UI-led task pages for platform setup, user onboarding, trusted issuers, collateral verification, token creation, and supply operations.

<Callout type="info" title="Choose the right equity walkthrough">
  Stay on this page when you operate the scenario through DALP screens. Use the [API-led equity tokenization
  walkthrough](/docs/developer-guides/runbooks/equity-tokenization) when you need request-oriented steps for an
  integration, script, or test.
</Callout>

## Prerequisites [#prerequisites]

Before starting this example, ensure your blockchain network has the core platform contracts deployed:

| Contract                  | Purpose                                                                        | Deployed by       |
| ------------------------- | ------------------------------------------------------------------------------ | ----------------- |
| **DALP Directory**        | Registry and discovery service for all platform instances and their components | Platform deployer |
| **DALP Identity Factory** | Creates on-chain identity contracts for users                                  | Platform deployer |
| **DALP System Factory**   | Deploys organization-specific system contracts                                 | Platform deployer |

<Callout type="info" title="Platform deployment">
  These contracts are typically deployed during initial platform setup by your implementation team. They provide the
  foundation for all organizations to build upon.
</Callout>

**Additional requirements:**

* Access to the platform web interface
* For public chains: ETH or native tokens for transaction gas fees (see gas requirements below)
* Email addresses for all demo participants

**Gas requirements for public chains:**

* **Daniel Admin**: Moderate amount for system deployment and permission management
* **Clara Compliance**: Small amount for user registration and verification issuance
* **Olivia Operator**: Moderate amount for asset creation, permissions, minting, and transfers
* **Colin Collateral**: Small amount for issuing collateral verifications
* **Invited users**: Small amount for identity creation (if using invitation flow)

![Begin equity tokenization in the Asset Designer](/docs/screenshots/asset-designer/asset-designer.webp)

## Scenario Overview [#scenario-overview]

This demonstration tokenizes 100,000 shares of ACME Holdings S.A., a Luxembourg company, using a multi-organization platform operated by Digital Securities S.A.

### Organizations [#organizations]

| Organization                         | Role                    | Domain                      | Jurisdiction |
| ------------------------------------ | ----------------------- | --------------------------- | ------------ |
| **Digital Securities S.A.**          | Platform operator       | digital-securities.example  | Luxembourg   |
| **ACME Holdings S.A.**               | Issuer (equity owner)   | acme-holdings.example       | Luxembourg   |
| **Guardian Collateral Services Ltd** | Collateral agent        | guardian-collateral.example | (generic)    |
| **Exchange Ltd**                     | Exchange/vault provider | exchange.example            | (generic)    |

### Key Personas [#key-personas]

**Platform Operators (Digital Securities S.A.)**

| Persona            | Name             | Email                                                                                         | Purpose                        |
| ------------------ | ---------------- | --------------------------------------------------------------------------------------------- | ------------------------------ |
| Platform Admin     | Daniel Admin     | [admin@digital-securities.example](mailto:admin@digital-securities.example)                   | System setup and configuration |
| Asset Operator     | Olivia Operator  | [operator@digital-securities.example](mailto:operator@digital-securities.example)             | Asset creation and management  |
| Compliance Officer | Clara Compliance | [compliance-kyc@digital-securities.example](mailto:compliance-kyc@digital-securities.example) | KYC and regulatory compliance  |

**External Partners**

| Organization                 | Persona               | Name             | Email                                                                                               | Purpose                 |
| ---------------------------- | --------------------- | ---------------- | --------------------------------------------------------------------------------------------------- | ----------------------- |
| ACME Holdings S.A.           | Issuer Representative | Ian Issuer       | [issuer@acme-holdings.example](mailto:issuer@acme-holdings.example)                                 | Legal equity owner      |
| Guardian Collateral Services | Collateral Agent      | Colin Collateral | [collateral-agent@guardian-collateral.example](mailto:collateral-agent@guardian-collateral.example) | Collateral verification |
| Exchange Ltd                 | Vault Provider        | NovaX Vault      | [vault@exchange.example](mailto:vault@exchange.example)                                             | Token custody           |

### ACME Equity Token Specifications [#acme-equity-token-specifications]

**Real-world instrument:**

| Property               | Value                           |
| ---------------------- | ------------------------------- |
| **Issuer**             | ACME Holdings S.A. (Luxembourg) |
| **Security type**      | Ordinary shares                 |
| **Total shares**       | 100,000                         |
| **Reference currency** | EUR                             |
| **Price per share**    | €0.71                           |

**On-chain representation:**

| Property                 | Value                                |
| ------------------------ | ------------------------------------ |
| **Token name**           | ACME Holdings Equity                 |
| **Symbol**               | ACME                                 |
| **Decimals**             | 0 (1 token = 1 share)                |
| **Maximum supply**       | 100,000                              |
| **Asset class**          | EQUITY                               |
| **ISIN**                 | LU0000ACME01                         |
| **Initial distribution** | 80,000 to issuer, 20,000 to exchange |

## Implementation steps [#implementation-steps]

<Steps>
  <Step>
    ### Platform initialization [#platform-initialization]

    **As the first user (Daniel Admin)**, start by setting up the platform administrator who will initialize the entire system.

    **Follow the [First Administrator Setup](/docs/user-guides/platform-setup/first-admin-setup) guide with these specific values:**

    * **Email**: [admin@digital-securities.example](mailto:admin@digital-securities.example)
    * **Organization name**: Digital Securities S.A.
    * **Base currency**: EUR
    * **Asset factories to enable**: Equity, ... (add whatever asset types you want to support)

    <Callout type="warning" title="Gas funding required">
      For public chains: Ensure Daniel's wallet has sufficient native tokens (ETH, MATIC, etc.) for system deployment
      transactions before proceeding.
    </Callout>

    <Callout type="info" title="System initialization">
      As the first user, Daniel Admin will deploy all system contracts including identity registry, access manager, and asset factories.
    </Callout>
  </Step>

  <Step>
    ### Grant additional administrative permissions [#grant-additional-administrative-permissions]

    **Continue as Daniel Admin.** After platform setup, Daniel Admin has the minimum required roles (Permission manager + System Manager) following the principle of least privilege. For this demo setup, he needs additional roles to configure the system.

    **Use the [Change Admin Roles](/docs/user-guides/platform-setup/change-admin-roles) guide to add these roles to Daniel Admin:**

    * **Add-on Manager**: Manage platform extensions and modules
    * **Identity Manager**: Required to invite other users

    <Callout type="info" title="Quick reminder">
      Access Platform Settings > Platform Admins, find Daniel Admin, click the three dots, select "Change roles", and add the roles listed above.
    </Callout>
  </Step>

  <Step>
    ### Invite platform team [#invite-platform-team]

    **Continue as Daniel Admin.** Add the other platform operators and external partners who will participate in this demo.

    **You can use either the [Invite users](/docs/user-guides/user-management/invite-users) guide or the [Create users](/docs/user-guides/user-management/create-users) guide:**

    * **Invite users**: Send invitations for users to onboard themselves (more realistic)
    * **Create users**: Directly create accounts with random passwords for faster demo setup or if users don't need to access the platform directly

    **Platform operators:**

    1. **Olivia Operator** ([operator@digital-securities.example](mailto:operator@digital-securities.example))
       * **Responsibilities**: Creates tokens, manages corporate actions, handles minting/burning

    2. **Clara Compliance** ([compliance-kyc@digital-securities.example](mailto:compliance-kyc@digital-securities.example))
       * **Responsibilities**: Manages KYC/AML verification, registers identities, issues verifications

    **External organizations:**

    3. **Ian Issuer** ([issuer@acme-holdings.example](mailto:issuer@acme-holdings.example))
       * **Responsibilities**: Legal owner of equity being tokenized

    4. **Colin Collateral** ([collateral-agent@guardian-collateral.example](mailto:collateral-agent@guardian-collateral.example))
       * **Responsibilities**: Independent verification of collateral backing

    5. **NovaX Vault** ([vault@exchange.example](mailto:vault@exchange.example))
       * **Responsibilities**: Institutional vault for token custody
  </Step>

  <Step>
    ### User onboarding process (if "Invite user" was chosen) [#user-onboarding-process-if-invite-user-was-chosen]

    All invited users follow the same onboarding process. See [User Onboarding](/docs/user-guides/user-management/user-onboarding) for the complete flow.

    **Each user will:**

    1. Accept their invitation
    2. Generate blockchain wallet with PIN security
    3. Save backup codes
    4. Create on-chain identity
    5. Complete profile

    <Callout type="warning" title="Gas funding for invited users">
      For public chains: If using the invitation flow, invited users will need native tokens in their wallets to pay for identity creation. If using the create-user flow, the identity manager pays for identity creation.
    </Callout>
  </Step>

  <Step>
    ### Assign platform admins [#assign-platform-admins]

    **Continue as Daniel Admin.** After team onboarding, assign specific roles to platform admins.

    **Use [Add Administrators](/docs/user-guides/platform-setup/add-admins) to assign:**

    **Olivia Operator** needs these roles:

    * **Asset Manager** - Create and configure new assets

    **Why these roles:** Olivia should be able to manage assets.

    **Clara Compliance** needs these roles:

    * **Identity Manager** - Manage the users registry, which users are known.
    * **Verification Issuer** - Issue KYC and compliance verifications
    * **Compliance Manager** - Will be able to manage global compliance rules
    * **Verification Policy Manager** - Configure verification topics and trusted issuers

    **Why these roles:** Clara manages all regulatory compliance and user verification.

    **Colin Collateral** needs these roles:

    * **Verification Issuer** - Issue collateral verifications

    **Why this role:** Colin's only function is verifying collateral backing.
  </Step>

  <Step>
    ### Configure trusted issuers [#configure-trusted-issuers]

    **Log in as Clara Compliance** to set up the verification framework by designating who can issue which types of verifications.

    <Callout type="info" title="Gas needed for Clara">
      For public chains: Ensure Clara's wallet has native tokens for trusted issuer configuration transactions.
    </Callout>

    **Follow [Configure Trusted Issuers](/docs/user-guides/compliance/configure-trusted-issuers) to configure:**

    **Clara Compliance as trusted issuer for investor-level verifications:**

    * **Know Your Customer (KYC)** - She verifies all investor identities
    * **Accredited Investor** - For US qualified investor status (optional, if needed)
    * **Qualified Institutional Investor** - For institutional investors under EU rules (optional, if needed)
    * **Anti-Money Laundering** - Source of funds verification (optional, if needed)
    * **Professional Investor** - For MiFID professional investor classification (optional, if needed)

    **Why Clara issues these:** As Compliance Officer, she's responsible for all investor-related verification.

    **Colin Collateral as trusted issuer for collateral verification:**

    * **Collateral** - Verifies that sufficient collateral backs the token

    **Why Colin issues this:** Guardian Collateral Services is the independent third party verifying collateral.

    **Olivia Operator as trusted issuer for asset-level verifications:**

    * **Base Price** - Provides reference pricing for the asset
    * **Unique Identifier** - Manages ISIN and internal reference numbers
    * **Asset Classification** - Confirms asset category and type
    * **Asset Location** - Confirms jurisdiction of underlying asset (optional, needed for real-estate)

    **Why Olivia issues these:** As Asset Operator, she manages asset metadata and classification.
  </Step>

  <Step>
    ### Register investors in registry [#register-investors-in-registry]

    **Log in as Clara Compliance** and use [Register User](/docs/user-guides/user-management/register-user):

    **Register Ian Issuer:**

    * Choose **Luxembourg** as jurisdiction

    **Register NovaX Vault:**

    * Choose **Luxembourg** as jurisdiction

    **Result:** Both users now show "Registered" status and can receive KYC verifications.

    <Callout type="note" title="Platform operators">
      Platform operators (Daniel, Olivia, Clara) don't need registration unless they'll hold tokens.
    </Callout>
  </Step>

  <Step>
    ### Issue KYC verifications [#issue-kyc-verifications]

    **Continue as Clara Compliance** and use [Verify KYC](/docs/user-guides/compliance/verify-kyc):

    **Verify Ian Issuer:**

    * Issue **Know Your Customer** verification

    **Verify NovaX Vault:**

    * Issue **Know Your Customer** verification

    **Result:** Both users now have KYC verifications and can receive ACME tokens.
  </Step>

  <Step>
    ### Create ACME Equity Token [#create-acme-equity-token]

    Create the equity token using the Asset Designer with full compliance configuration.

    <Callout type="info" title="Gas needed for Olivia">
      For public chains: Ensure Olivia's wallet has native tokens for asset creation and permission management transactions.
    </Callout>

    **Log in as Olivia Operator and follow [Create Asset](/docs/user-guides/asset-creation/create-asset):**

    **Asset Designer Configuration:**

    **Step 1: Asset Class**

    * Select **Flexible Income** class
    * Choose **Equity** type

    **Step 2: Basic Details**

    * **Name**: ACME Holdings Equity
    * **Symbol**: ACME
    * **Decimals**: 0 (whole shares only)
    * **Jurisdiction**: Luxembourg

    **Step 3: Asset Classification**

    * **Category**: Common Equity
    * **Class**: Common Equity
    * **Unique Identifier**: LU0000ACME01 (ISIN format)
    * **Internal Reference**: ACME-EQ-001

    **Step 4: Pricing**

    * **Currency**: EUR
    * **Base Price**: 0.71 (€0.71 per share)

    **Step 5: Compliance Modules**

    Enable **Smart Identity Verification**:

    * Required verification: "Know Your Customer"
    * Purpose: Only KYC-verified users can receive assets

    Enable **Collateral Requirement** (optional):

    * Topic: "Collateral"
    * Ratio: 100% (full collateral backing)
    * Purpose: Ensures backing for tokenized equity
  </Step>

  <Step>
    ### Configure token permissions [#configure-token-permissions]

    After asset creation, Olivia has the minimum required roles (Permission manager + Governance) following the principle of least privilege. For this demo, she needs additional token-specific roles.

    **Use [Change Asset Admin Roles](/docs/user-guides/asset-servicing/change-asset-admin-roles) to assign Olivia Operator these additional roles:**

    * **Custodian** - Execute transfers and forced transfers
    * **Emergency** - Pause/unpause token operations
    * **Supply Management** - Mint and burn token supply
  </Step>

  <Step>
    ### Issue collateral verification [#issue-collateral-verification]

    Colin must issue a collateral verification before minting is possible. This is a requirement when collateral modules are enabled.

    <Callout type="info" title="Gas needed for Colin">
      For public chains: Ensure Colin's wallet has native tokens for issuing collateral verification transactions.
    </Callout>

    **Log in as Colin Collateral and follow the [Collateral](/docs/user-guides/compliance/collateral) guide to issue verification with these specific details:**

    * **Amount**: 100000 (covering full supply)
    * **Expiration**: 1 year from now

    This confirms Guardian Collateral Services has verified sufficient backing for the full token supply.
  </Step>

  <Step>
    ### Unpause the token [#unpause-the-token]

    **Log in as Olivia Operator** and use the [Pause/Unpause Asset](/docs/user-guides/asset-servicing/pause-unpause-asset) guide to activate the ACME asset.

    <Callout type="info" title="Flexible order">
      Collateral verification and token unpausing can be done in any order. Both are needed before minting, but they don't
      depend on each other.
    </Callout>

    **Why Olivia can unpause:** She has the Emergency role on the ACME token, which is required for pause/unpause operations.
  </Step>

  <Step>
    ### Mint and distribute ACME tokens [#mint-and-distribute-acme-tokens]

    **Continue as Olivia Operator** and use [Mint Assets](/docs/user-guides/asset-servicing/mint-assets):

    <Callout type="info" title="Gas needed for minting">
      For public chains: Ensure Olivia's wallet has sufficient native tokens for minting transactions, which can be
      gas-intensive for large amounts.
    </Callout>

    **Mint to ACME Holdings:**

    * **Recipient**: Ian Issuer (select from contacts or use wallet address)
    * **Amount**: 100000 (full token supply)
    * **Purpose**: Initial distribution to issuer
  </Step>

  <Step>
    ### Execute forced transfer to exchange [#execute-forced-transfer-to-exchange]

    **Continue as Olivia Operator.** Transfer 20,000 tokens from the issuer to the exchange using forced transfer capability.

    <Callout type="info" title="Gas needed for transfers">
      For public chains: Ensure Olivia's wallet has native tokens for the forced transfer transaction.
    </Callout>

    **Use [Forced Transfer](/docs/user-guides/asset-servicing/forced-transfer) with these details:**

    **Transfer configuration:**

    * **From address**: ACME Holdings (select from contacts)
    * **To address**: NovaX Exchange (select from contacts)
    * **Amount**: 20000
    * **Purpose**: Allocate tokens to exchange for secondary market custody

    **Why use forced transfer:** This demonstrates custodian capabilities to move tokens between verified parties, which is important for corporate actions and compliance scenarios.

    **Why Olivia can execute this:** She has the Custodian role on the ACME token, which is required for forced transfer operations.
  </Step>
</Steps>

![Deployed equity token details](/docs/screenshots/equity/equity-detail-1.webp)

## Troubleshooting [#troubleshooting]

| Issue                      | Solution                                                                                                                                                                                                                                                            |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Minting fails              | • Ensure collateral verification covers mint amount (if enabled)<br />• Verify all recipients have required KYC verifications<br />• Check operator has Supply Management role<br />• Confirm wallet has sufficient gas tokens (ETH, MATIC, etc.) for public chains |
| User cannot receive assets | • Verify user is registered in identity registry<br />• Ensure user has valid KYC verification<br />• Check token compliance requirements<br />• Confirm user's wallet address is correct                                                                           |
| Verifications not trusted  | • Verify issuer is configured as trusted for specific topic<br />• Check verification data format and expiration<br />• Ensure issuer transaction was confirmed<br />• Refresh page after configuration changes                                                     |
| Role assignment fails      | • Confirm you have role management permissions<br />• Verify target user completed onboarding<br />• Ensure user belongs to your organization (for internal roles)<br />• Check transaction has sufficient gas tokens for public chains                             |

For additional support, consult the individual feature guides or contact your implementation team.
