POST
/
api
/
v2.1
/
customers
/
individual
/
register
{
  "id": "<string>",
  "userId": "<string>",
  "personId": "<string>",
  "user": {},
  "status": "<string>"
}

Overview

The Individual Customer Registration endpoint creates a new B2C customer with smart categorization that automatically applies appropriate risk profiles, compliance requirements, and feature configurations based on the selected category.
This endpoint uses /customers/individual/register (plural), not /customer/individual/registration

Headers

Authorization
string
required
Bearer token for authentication (admin privileges required)
X-Tenant-ID
string
required
Tenant identifier for multi-tenant operations
Content-Type
string
required
Must be application/json

Request Body

firstName
string
required
Customer’s first name
lastName
string
required
Customer’s last name
email
string
required
Unique email address for the customer
phone
string
required
Phone number with country code (e.g., “+37060012345”)
password
string
required
Account password (must meet security requirements)
matchingPassword
string
required
Password confirmation (must match password field)
roleIds
array
required
Array of role names (e.g., [“ACCOUNT_OWNER”, “USER”])
customerCategory
object
required
Selected category from the categorization hierarchy
individualCustomer
object
required
Detailed customer information

Response

id
string
Unique customer ID
userId
string
Associated user ID
personId
string
Person entity ID
user
object
User details including the user ID
status
string
Registration status

Example Request

{
  "firstName": "Marcus",
  "lastName": "Jensen",
  "email": "marcus.jensen@example.com",
  "phone": "+37060012345",
  "password": "SecurePass123!",
  "matchingPassword": "SecurePass123!",
  "roleIds": ["ACCOUNT_OWNER", "USER"],
  "customerCategory": {
    "id": "e50bb9ad-6a97-41da-8e66-4c3c0f7e2a3d",
    "name": "Medium Risk Individual"
  },
  "individualCustomer": {
    "customerName": "Marcus Jensen",
    "person": {
      "firstName": "Marcus",
      "lastName": "Jensen",
      "email": "marcus.jensen@example.com",
      "dateOfBirth": "1990-05-15",
      "gender": "MALE",
      "nationality": "LT",
      "addresses": [
        {
          "type": "HOME",
          "street": "123 Medium Risk Street",
          "city": "Compliance City",
          "postalCode": "12345",
          "country": "LT",
          "isPrimary": true
        }
      ],
      "contacts": [
        {
          "type": "EMAIL",
          "value": "marcus.jensen@example.com",
          "isPrimary": true
        },
        {
          "type": "PHONE",
          "value": "+37060012345",
          "isPrimary": false
        }
      ]
    },
    "user": {
      "username": "marcus.jensen@example.com",
      "email": "marcus.jensen@example.com",
      "password": "SecurePass123!",
      "status": "PENDING_ACTIVATION",
      "roles": ["ACCOUNT_OWNER", "USER"],
      "isActive": false,
      "requiresPasswordChange": false,
      "twoFactorEnabled": false
    },
    "categorization": {
      "id": "e50bb9ad-6a97-41da-8e66-4c3c0f7e2a3d",
      "name": "Medium Risk Individual",
      "description": "Medium-risk individual customer category",
      "isActive": true,
      "categoryFeatureRelations": [
        {
          "feature": {
            "id": "f7a8b9c0-d1e2-3f4g-5h6i-7j8k9l0m1n2o",
            "code": "MEDIUM_RISK_PROFILE"
          },
          "enabled": true,
          "parametrization": [
            {"name": "riskLevel", "value": "MEDIUM"},
            {"name": "riskScore", "value": "55"},
            {"name": "pep", "value": "false"},
            {"name": "sanctionsCheck", "value": "STANDARD"},
            {"name": "monthlyLimit", "value": "20000"}
          ]
        }
      ]
    }
  }
}
```text`n## Example Response

```json
{
  "data": {
    "id": "cust_123456789",
    "userId": "user_987654321",
    "personId": "pers_456789123",
    "user": {
      "id": "user_987654321",
      "username": "marcus.jensen@example.com",
      "status": "PENDING_ACTIVATION"
    },
    "status": "REGISTRATION_COMPLETE"
  }
}
```text`n## Smart Categorization Features

The registration process includes intelligent categorization that:

1. **Automatically applies risk parameters** based on selected category
2. **Sets compliance requirements** for verification processes
3. **Configures account limits** according to risk profile
4. **Determines verification levels** needed for activation

## Next Steps

After successful registration:

1. [Create Customer Session](/latest/api-reference/v2.1/session/create-individual-session) - Generate authentication token
2. [Initiate Verification](/latest/api-reference/v2.1/verification/create-verification) - Start KYC process
3. [Accept Consents](/latest/api-reference/v2.1/consent/individual-consents) - Process required consents
4. [Activate Account](/latest/api-reference/v2.1/customer/individual-activation) - Complete account setup

## PowerShell Script Example

```powershell
# Prepare category feature relations based on retrieved category
$categoryFeatureRelations = @()
$additionalDataArray = @()

if ($selectedCategory.features) {
    foreach ($feature in $selectedCategory.features) {
        Write-Host "Processing feature: $($feature.featureName)" -ForegroundColor Cyan
        
        # Create parametrization based on feature requirements
        $parametrization = @()
        
        if ($feature.mandatoryKeys) {
            foreach ($key in $feature.mandatoryKeys) {
                $value = switch -Regex ($key.ToLower()) {
                    "risk.*level" { "MEDIUM" }
                    "risk.*score" { "55" }
                    "pep" { "false" }
                    "sanctions" { "STANDARD" }
                    "monitoring" { "WEEKLY" }
                    "compliance" { "STANDARD_DUE_DILIGENCE" }
                    "edd" { "false" }
                    "monthly.*limit" { "20000" }
                    default { "MEDIUM_RISK_VALUE" }
                }
                
                $parametrization += @{
                    name  = $key
                    value = $value
                }
            }
        }
        
        $categoryFeatureRelations += @{
            feature = @{
                id   = $feature.databaseId
                code = $feature.featureCode
            }
            enabled = $true
            parametrization = $parametrization
        }
    }
}

# Generate unique email
$timestamp = Get-Date -Format "yyyyMMddHHmmss"
$randSuffix = ([guid]::NewGuid().ToString('N')).Substring(0, 6)
$uniqueEmail = "customer.$timestamp.$randSuffix@example.com"

# Create registration request
$registrationRequest = @{
    firstName          = "John"
    lastName           = "Smith"
    email              = $uniqueEmail
    phone              = "+1234567890"
    password           = "SecurePass123!"
    matchingPassword   = "SecurePass123!"
    roleIds            = @("ACCOUNT_OWNER", "USER")
    customerCategory   = @{
        id   = $selectedCategory.databaseId
        name = $selectedCategory.categoryName
    }
    individualCustomer = @{
        customerName   = "John Smith"
        person         = @{
            firstName   = "John"
            lastName    = "Smith"
            email       = $uniqueEmail
            dateOfBirth = "1990-01-15"
            gender      = "MALE"
            nationality = "US"
            addresses   = @(
                @{
                    type       = "HOME"
                    street     = "123 Main Street"
                    city       = "New York"
                    postalCode = "10001"
                    country    = "US"
                    isPrimary  = $true
                }
            )
            contacts    = @(
                @{
                    type      = "EMAIL"
                    value     = $uniqueEmail
                    isPrimary = $true
                },
                @{
                    type      = "PHONE"
                    value     = "+1234567890"
                    isPrimary = $false
                }
            )
        }
        user           = @{
            username               = $uniqueEmail
            email                  = $uniqueEmail
            password               = "SecurePass123!"
            status                 = "PENDING_ACTIVATION"
            roles                  = @("ACCOUNT_OWNER", "USER")
            isActive               = $false
            requiresPasswordChange = $false
            twoFactorEnabled       = $false
        }
        categorization = @{
            id                       = $selectedCategory.categoryId
            name                     = $selectedCategory.categoryName
            description              = "Customer category with appropriate risk profile"
            isActive                 = $true
            categoryFeatureRelations = $categoryFeatureRelations
            parametrization          = $additionalDataArray
        }
    }
}

$registrationUrl = "$baseUrl/api/v2.1/customer/individual/registration"
$registrationBody = $registrationRequest | ConvertTo-Json -Depth 10

try {
    $registrationResponse = Invoke-RestMethod -Uri $registrationUrl -Method Post -Headers $headers -Body $registrationBody
    
    # Extract customer details from response
    if ($registrationResponse.data) {
        $customerId = $registrationResponse.data.id
        $userId = $registrationResponse.data.userId
        $personId = $registrationResponse.data.personId
    }
    else {
        $customerId = $registrationResponse.id
        $userId = $registrationResponse.userId
        $personId = $registrationResponse.personId
    }
    
    Write-Host "Registration successful!" -ForegroundColor Green
    Write-Host "  Customer ID: $customerId" -ForegroundColor White
    Write-Host "  User ID: $userId" -ForegroundColor White
    Write-Host "  Person ID: $personId" -ForegroundColor White
}
catch {
    Write-Host "Registration failed: $($_.Exception.Message)" -ForegroundColor Red
}
```text`n## Related Endpoints

- [Get Categorization Hierarchy](/latest/api-reference/v2.1/customer/categorization-hierarchy) - Retrieve available categories
- [Get Customer Details](/latest/api-reference/v2.1/customerV0201/get-customer-by-id) - View registered customer