curl --request POST \
--url https://api.example.com/api/v2.1/customers/individual/register \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>' \
--header 'X-Tenant-ID: <x-tenant-id>' \
--data '
{
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"password": "<string>",
"matchingPassword": "<string>",
"roleIds": [
{}
],
"customerCategory": {
"id": "<string>",
"name": "<string>"
},
"individualCustomer": {
"customerName": "<string>",
"person": {
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"dateOfBirth": "<string>",
"gender": "<string>",
"nationality": "<string>",
"addresses": [
{
"type": "<string>",
"street": "<string>",
"city": "<string>",
"postalCode": "<string>",
"country": "<string>",
"isPrimary": true
}
],
"contacts": [
{
"type": "<string>",
"value": "<string>",
"isPrimary": true
}
]
},
"user": {
"username": "<string>",
"email": "<string>",
"password": "<string>",
"status": "<string>",
"roles": [
{}
],
"isActive": true,
"requiresPasswordChange": true,
"twoFactorEnabled": true
},
"categorization": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"isActive": true,
"categoryFeatureRelations": [
{
"feature": {
"id": "<string>",
"code": "<string>"
},
"enabled": true,
"parametrization": [
{
"name": "<string>",
"value": "<string>"
}
]
}
],
"parametrization": [
{}
]
}
}
}
'{
"id": "<string>",
"userId": "<string>",
"personId": "<string>",
"user": {},
"status": "<string>"
}Create a new individual customer account with intelligent categorization and risk profiling
curl --request POST \
--url https://api.example.com/api/v2.1/customers/individual/register \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>' \
--header 'X-Tenant-ID: <x-tenant-id>' \
--data '
{
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"password": "<string>",
"matchingPassword": "<string>",
"roleIds": [
{}
],
"customerCategory": {
"id": "<string>",
"name": "<string>"
},
"individualCustomer": {
"customerName": "<string>",
"person": {
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"dateOfBirth": "<string>",
"gender": "<string>",
"nationality": "<string>",
"addresses": [
{
"type": "<string>",
"street": "<string>",
"city": "<string>",
"postalCode": "<string>",
"country": "<string>",
"isPrimary": true
}
],
"contacts": [
{
"type": "<string>",
"value": "<string>",
"isPrimary": true
}
]
},
"user": {
"username": "<string>",
"email": "<string>",
"password": "<string>",
"status": "<string>",
"roles": [
{}
],
"isActive": true,
"requiresPasswordChange": true,
"twoFactorEnabled": true
},
"categorization": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"isActive": true,
"categoryFeatureRelations": [
{
"feature": {
"id": "<string>",
"code": "<string>"
},
"enabled": true,
"parametrization": [
{
"name": "<string>",
"value": "<string>"
}
]
}
],
"parametrization": [
{}
]
}
}
}
'{
"id": "<string>",
"userId": "<string>",
"personId": "<string>",
"user": {},
"status": "<string>"
}/customers/individual/register (plural), not /customer/individual/registrationapplication/jsonShow Individual Customer Object
Show Person Object
Show User Object
Show Categorization Object
Show Feature Relation
{
"firstName": "Marcus",
"lastName": "Jensen",
"email": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"isPrimary": true
},
{
"type": "PHONE",
"value": "+37060012345",
"isPrimary": false
}
]
},
"user": {
"username": "[email protected]",
"email": "[email protected]",
"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": "[email protected]",
"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 = "[email protected]"
# 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