SettleMint
Developer guidesUser management

Register user

Register users in the identity registry via API for compliance tracking and token eligibility.

This guide explains how to register users in the identity registry via API - a required step for compliance tracking and token eligibility.

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 the Identity Manager role (see Getting Started for API key setup)
  • Wallet verification method enabled on your account (e.g., pincode or 2FA)
  • User must have an on-chain identity (see Create Users)

About identity registry

The identity registry is an on-chain system that:

  • Tracks all verified identities for your organization
  • Links wallet addresses to identity contracts
  • Enforces jurisdictional rules

Identity states

StateDescriptionCan receive assets
Pending RegistrationHas identity but not in registryNo
RegisteredIn registry, awaiting verificationDepends on rules
VerifiedHas required verificationsYes

Registering users

Identify user to register

The user must already have an on-chain identity. Query the user to get their wallet address:

curl -X GET "https://your-platform.example.com/api/user/[email protected]" \
  -H "X-Api-Key: YOUR_API_KEY"

Response:

[
  {
    "id": "usr_abc123",
    "name": "John Doe",
    "wallet": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "role": "member"
  }
]

Save the wallet address from the first result for the registration step.

Select jurisdiction

Choose the ISO 3166-1 alpha-2 country code for the user's jurisdiction.

Jurisdiction importance

Country selection can be used in compliance rules but doesn't automatically apply specific rules. Choose based on user's legal residence or incorporation, not temporary location.

Execute registration

Register the identity in the selected jurisdiction:

curl -X PUT "https://your-platform.example.com/api/system/identity" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "wallet": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "country": "BE",
    "walletVerification": {
      "secretVerificationCode": "YOUR_PINCODE"
    }
  }'

Response:

{
  "id": "0x8e5F72f6E5b3B4D1234567890AbCdEf1234567890",
  "account": {
    "id": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "contractName": null
  },
  "isContract": false,
  "hasIdentity": true,
  "registered": {
    "isRegistered": true,
    "country": "BE"
  },
  "claims": []
}

Verify registration

Query the identity to confirm the user is now registered. Use the /api/system/identity/by-wallet endpoint (not /api/user/search, which excludes identity data):

curl -X GET "https://your-platform.example.com/api/system/identity/by-wallet/0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb" \
  -H "X-Api-Key: YOUR_API_KEY"

Response when registered:

{
  "id": "0x8e5F72f6E5b3B4D1234567890AbCdEf1234567890",
  "account": {
    "id": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "contractName": null
  },
  "isContract": false,
  "hasIdentity": true,
  "registered": {
    "isRegistered": true,
    "country": "BE"
  },
  "claims": []
}

Key fields to verify:

  • registered.isRegistered = true (confirms registration)
  • registered.country = the country code you specified (e.g., "BE")

Request parameters

ParameterTypeRequiredDescription
walletstringYesWallet address of user to register (0x...)
countrystringYesISO 3166-1 alpha-2 country code (e.g., "BE", "DE")
walletVerificationobjectYesYour wallet verification (PINCODE or TOTP) to authorize transaction

Wallet verification object

FieldTypeDescription
secretVerificationCodestring6-digit pincode or TOTP code
verificationTypestring"PINCODE" (default), "SECRET_CODES", or "OTP"

Best practices

Jurisdiction selection

  • Use user's legal residence or incorporation
  • Verify jurisdiction through documentation
  • Consider tax and regulatory implications
  • Update if user's status changes

Integration with compliance

Token transfers

  • Registered identities can receive assets (with proper verifications)
  • Non-registered identities are blocked from asset transactions

Compliance modules

  • Identity verification module checks registry registration
  • Transfer restrictions enforce registration requirements
  • Compliance reporting tracks registered vs. non-registered users

Verification process

  • Registration is prerequisite for issuing verifications
  • Verifications can only be added to registered identities
  • Multiple verifications can be issued per registered identity

Troubleshooting

IssueSolution
401 UnauthorizedAPI key is invalid, expired, or disabled
403 USER_NOT_AUTHORIZEDEnsure your account has identityManager role (Identity Manager)
400 Identity not foundUser must have an on-chain identity; see Create Users
400 Identity already registeredUser already registered; proceed to KYC verification
Invalid country codeUse ISO 3166-1 alpha-2 codes: BE, DE, GB, FR, etc.
Cannot verify registrationUse /api/system/identity/by-wallet/{wallet} endpoint, not /api/user/search (which excludes identity data)

On this page