SettleMint
Developer guidesAsset creation

Create asset

Deploy a new tokenized asset using the API.

Creating an asset deploys a new tokenized security on the blockchain. This guide covers how to create assets programmatically using the API.

Asset Designer 7-step creation wizard

For the web interface approach, see the user guide.

Common use cases:

  • Bond issuance - Create fixed-income securities with maturity dates and coupon payments
  • Equity tokenization - Issue shares with voting rights and dividend distribution
  • Fund launch - Create investment fund units with NAV tracking
  • Stablecoin creation - Deploy collateral-backed stable value instruments
  • Deposit certificates - Tokenize bank deposits or cash equivalents
  • Real estate fractionalization - Divide property ownership into tradeable fractions

Prerequisites

  • Platform URL (e.g., https://your-platform.example.com)
  • API key from a user with the Token Manager role (see Getting Started)
  • Token factory for your desired asset type must be deployed
  • Wallet verification method enabled on your account (pincode or 2FA)

Asset types

The platform supports six asset types organized into four classes:

Asset classAsset typesDescription
Fixed IncomeBondDebt securities with maturity dates and fixed payments
Flexible IncomeEquity, FundVariable return assets like shares and investment funds
Cash EquivalentStablecoin, DepositStable value assets pegged to fiat currencies
Real World AssetReal EstateTokenized physical property ownership

Create an equity asset

Equity assets represent ownership shares in an organization, similar to traditional stock certificates.

curl -X POST "https://your-platform.example.com/api/token/create" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "equity",
    "name": "ACME Holdings Common Stock",
    "symbol": "ACME",
    "decimals": 0,
    "cap": "1000000",
    "priceCurrency": "USD",
    "basePrice": "10.00",
    "countryCode": "840",
    "class": "COMMON_EQUITY",
    "category": "VOTING_COMMON_STOCK",
    "uniqueIdentifier": "US0000000001",
    "complianceModules": [],
    "walletVerification": {
      "secretVerificationCode": "123456",
      "verificationType": "PINCODE"
    }
  }'

Request parameters

ParameterTypeRequiredDescription
typestringYesAsset type: "equity", "bond", "fund", etc.
namestringYesFull name (1-255 characters)
symbolstringYesTrading symbol (1-24 characters, uppercase recommended)
decimalsnumberYesDecimal precision (0-18, typically 0 for whole shares)
capstringNoMaximum supply (optional supply cap)
priceCurrencystringYesISO 4217 currency code ("USD", "EUR", "GBP")
basePricestringYesPrice per unit in selected currency
countryCodestringYesISO 3166-1 numeric country code (e.g., "840" for USA)
classstringNoEquity class: "COMMON_EQUITY", "PREFERRED_EQUITY"
categorystringNoEquity category: "VOTING_COMMON_STOCK", etc.
uniqueIdentifierstringNoISIN, CUSIP, or custom identifier
complianceModulesstring[]NoArray of compliance module IDs (see below)
walletVerificationobjectYesYour wallet verification
walletVerification.secretVerificationCodestringYesYour 6-digit PINCODE or TOTP code
walletVerification.verificationTypestringYes"PINCODE", "OTP", or "SECRET_CODES"

Compliance modules

Enable on-chain compliance rules that are automatically enforced:

ModuleIDDescription
Identity verificationidentityVerificationRequires verified OnchainID for all transfers. Learn how to configure →
Country allow listcountryAllowListOnly specified jurisdictions can hold the asset
Country block listcountryBlockListBlocked jurisdictions cannot hold the asset
Address block listaddressBlockListExplicitly block specific wallet addresses
Investor count limitinvestorCountLimitCap maximum number of unique holders
Time locktimeLockEnforce minimum holding period
Transfer approvaltransferApprovalRequire manual approval for each transfer
Collateral requirementcollateralRequirementRequires collateral backing before minting. Learn how to configure →

Compliance module configuration

Response

A successful response returns the created asset data (showing key fields):

{
  "id": "0x9459D52E60edBD3178f00F9055f6C117a21b4220",
  "type": "equity",
  "createdAt": "2025-01-15T10:30:00.000Z",
  "name": "ACME Holdings Common Stock",
  "symbol": "ACME",
  "decimals": 0,
  "basePrice": "[\"10\",0]",
  "basePriceCurrencyCode": "USD",
  "totalSupply": "[\"0\",0]",
  "pausable": {
    "paused": true
  },
  "capped": {
    "cap": "[\"1000000\",0]"
  }
}

The response includes the full asset object with additional fields like identity, accessControl, complianceModuleConfigs, userPermissions, and stats. Note that the asset starts paused by default.

Review and deploy confirmation

After deployment

Once deployed, your asset is paused by default. To activate it for transfers and minting:

  1. Unpause the asset - See Pause/Unpause Assets
  2. Add supply managers - Grant roles for minting (see Change Asset Admin Roles)
  3. Mint initial supply - Issue assets to investors (see Mint Assets)

Troubleshooting

IssueSolution
"Token factory not found"Deploy the factory for your asset type first
"Symbol already exists"Choose a unique symbol not used by other assets
"Insufficient gas funds"Ensure your wallet has enough native currency for gas
"Invalid country code"Use ISO 3166-1 numeric codes (e.g., 840=USA, 276=Germany)
"Compliance module not found"Check available modules with GET /api/system/compliance-modules

On this page