SettleMint
Developer guidesAsset servicing

Mint assets

Issue new units to investors via API.

Minting creates new units of an asset and assigns them to specified wallet addresses. This guide covers how to mint assets programmatically using the API.

For the web interface approach, see the user guide.

Prerequisites

  • Platform URL (e.g., https://your-platform.example.com)
  • API key from a user with Supply Management role on this asset (see Getting Started for API key setup)
  • Wallet verification method enabled on your account (e.g., pincode or 2FA)
  • Asset must be unpaused
  • Recipients must have registered identities with required compliance verifications

Minting assets

Prepare API request

Construct the API request with recipient address and amount:

curl -X POST "https://your-platform.example.com/api/token/0x9459D52E60edBD3178f00F9055f6C117a21b4220/mint" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "recipients": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "amounts": ["1000000000000000000000", 18],
    "walletVerification": {
      "secretVerificationCode": "123456",
      "verificationType": "PINCODE"
    }
  }'

Asset address in path

The asset contract address is part of the URL path: /api/token/{tokenAddress}/mint

Execute mint transaction

When you execute the request, the platform:

  1. Validates your permissions - Confirms you have Supply Management role on this asset
  2. Verifies your wallet - Uses your pincode/2FA to authorize the blockchain transaction
  3. Checks recipient compliance - Ensures recipient has required verifications
  4. Executes the mint - Creates new units and assigns to recipient

Amount formatting

Asset amounts depend on the asset's decimal configuration. See Asset Decimals for formatting guidance.

Handle response

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

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

The response includes the full asset object with the updated totalSupply reflecting the newly minted units, along with additional fields like identity, accessControl, complianceModuleConfigs, userPermissions, and stats.

Batch minting

Issue units to multiple wallets in a single transaction:

Prepare batch request

Construct the request with arrays of recipients and amounts:

curl -X POST "https://your-platform.example.com/api/token/0x9459D52E60edBD3178f00F9055f6C117a21b4220/mint" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "recipients": [
      "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
      "0x8e5F72f6E5b3B4D1234567890AbCdEf1234567890",
      "0x1234567890AbCdEf1234567890AbCdEf12345678"
    ],
    "amounts": [
      ["500000000000000000000", 18],
      ["300000000000000000000", 18],
      ["200000000000000000000", 18]
    ],
    "walletVerification": {
      "secretVerificationCode": "123456",
      "verificationType": "PINCODE"
    }
  }'

Array length must match

The recipients and amounts arrays must have the same length. Each recipient gets the corresponding amount at the same index.

Execute batch mint

The platform validates all recipients before executing. If any recipient fails compliance checks, the entire batch is rejected.

Batch limits:

  • Maximum 100 recipients per API call
  • For larger batches, split into multiple calls

Request parameters

ParameterTypeRequiredDescription
recipientsstring or arrayYesRecipient wallet address(es) (0x...)
amountsstring or arrayYesAmount(s) as dnum tuple [scaled_value, decimals]. See Asset Decimals
walletVerificationobjectYesYour wallet verification
walletVerification.secretVerificationCodestringYesYour 6-digit PINCODE or TOTP code
walletVerification.verificationTypestringYes"PINCODE", "OTP", or "SECRET_CODES"

Troubleshooting

IssueSolution
401 UnauthorizedAPI key is invalid, expired, or disabled
403 USER_NOT_AUTHORIZEDEnsure your account has supplyManagement role on this asset
Asset is pausedUnpause the asset first (see Pause/Unpause)
Recipient identity not foundRecipient must create an account and register their identity
Exceeds supply capAsset has reached maximum supply
Insufficient collateralDeposit more collateral before minting
Recipient not compliantRecipient missing required claims (KYC, accredited investor, etc)
Recipients and amounts mismatchArray lengths must be equal
Amount must be positiveAll amounts must be greater than 0

On this page