POST
/
api
/
v2.1
/
customer
/
individual
/
{customerId}
/
activation
{
  "iban": "<string>",
  "accountNumber": "<string>",
  "wallet": {
    "walletId": "<string>",
    "id": "<string>",
    "currency": "<string>",
    "balance": "<string>",
    "status": "<string>"
  },
  "status": "<string>",
  "activatedAt": "<string>"
}

Overview

The Account Activation endpoint completes the customer onboarding process by activating the account, generating an IBAN, and creating the associated wallet. This is typically done after verification processes are complete and required consents have been accepted.

Path Parameters

customerId
string
required
The unique identifier of the customer to activate

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

code
string
required
Activation code (can be system-generated or provided by admin)
userId
string
required
The user ID associated with the customer

Response

iban
string
The generated IBAN for the customer account
accountNumber
string
The internal account number
wallet
object
Wallet information
status
string
Account activation status
activatedAt
string
Timestamp of activation

Example Request

curl --request POST \
  --url https://api.finhub.cloud/api/v2.1/customer/individual/cust_123456789/activation \
  --header 'Authorization: Bearer YOUR_TOKEN' \
  --header 'X-Tenant-ID: fh_api_finsei_ltd_7f957f77' \
  --header 'Content-Type: application/json' \
  --data '{
    "code": "ACTIVATION_CODE_MED_12345",
    "userId": "user_987654321"
  }'
```text`n## Example Response

```json
{
  "data": {
    "iban": "LT123456789012345678",
    "accountNumber": "ACC123456789",
    "wallet": {
      "walletId": "wal_abc123def456",
      "id": "wal_abc123def456",
      "currency": "EUR",
      "balance": "0.00",
      "status": "ACTIVE"
    },
    "status": "ACTIVATED",
    "activatedAt": "2025-01-23T11:00:00.000Z"
  }
}
```text`n## Activation Requirements

Before activation, ensure the following steps are completed:

1. **Customer Registration** - Account created successfully
2. **Verification Process** - Based on risk level:
   - Medium Risk: Identity and document verification
   - High Risk: Enhanced due diligence completed
3. **Consent Acceptance** - Required consents processed:
   - Terms and Conditions
   - Privacy Policy
   - Data Processing Consent

## Activation Codes

Activation codes can be:
- **System-generated**: Auto-generated based on customer type and risk level
- **Admin-provided**: Custom codes for specific scenarios
- **Pattern-based**: Following naming conventions like `ACTIVATION_CODE_{RISK}_{ID}`

Examples:
- `ACTIVATION_CODE_MED_12345` - Medium risk customer
- `ACTIVATION_CODE_HIGH_67890` - High risk customer
- `ACTIVATION_CODE_LOW_11111` - Low risk customer

## Post-Activation Actions

After successful activation:

1. **Create Customer Session** - Enable customer login
2. **Add Beneficiaries** - Set up payment recipients
3. **Fund Wallet** - Add initial balance if needed
4. **Set Transaction Limits** - Based on categorization

## Wallet Features

The created wallet includes:

- **Multi-currency support** (initially EUR)
- **Real-time balance tracking**
- **Transaction history**
- **Configurable limits based on risk profile**

### Balance Model

```json
{
  "balances": {
    "available": "0.00",    // Funds immediately usable
    "current": "0.00",      // Book balance
    "locked": "0.00"        // Reserved for pending operations
  }
}
```text`n## Error Handling

Common activation errors:

| Error Code | Description | Resolution |
|------------|-------------|------------|
| 400 | Invalid activation code | Verify code format and validity |
| 403 | Insufficient verification | Complete required verification steps |
| 404 | Customer not found | Check customer ID |
| 409 | Already activated | Account is already active |

## PowerShell Script Example

```powershell
# Account activation after verification and consent acceptance
$activationUrl = "$baseUrl/api/v2.1/customer/individual/$customerId/activation"
$activationRequest = @{
    code   = "ACTIVATION_CODE_$(Get-Date -Format 'yyyyMMddHHmmss')"
    userId = $userId
}

$activationBody = $activationRequest | ConvertTo-Json

try {
    $activationResponse = Invoke-RestMethod -Uri $activationUrl -Method Post -Headers $headers -Body $activationBody
    
    Write-Host "Account activated successfully!" -ForegroundColor Green
    
    # Extract IBAN from multiple possible locations
    if ($activationResponse.iban) {
        $accountIban = $activationResponse.iban
        Write-Host "  IBAN: $accountIban" -ForegroundColor Cyan
    }
    elseif ($activationResponse.data -and $activationResponse.data.iban) {
        $accountIban = $activationResponse.data.iban
        Write-Host "  IBAN: $accountIban" -ForegroundColor Cyan
    }
    
    # Extract wallet information
    $wallet = $null
    if ($activationResponse.data -and $activationResponse.data.wallet) {
        $wallet = $activationResponse.data.wallet
    }
    elseif ($activationResponse.wallet) {
        $wallet = $activationResponse.wallet
    }
    
    if ($wallet) {
        if ($wallet.walletId) { 
            $walletId = $wallet.walletId
            Write-Host "  Wallet ID: $walletId" -ForegroundColor Cyan 
        }
        elseif ($wallet.id) {
            $walletId = $wallet.id
            Write-Host "  Wallet ID: $walletId" -ForegroundColor Cyan
        }
        if ($wallet.currency) { 
            Write-Host "  Currency: $($wallet.currency)" -ForegroundColor White 
        }
        if ($wallet.balance) { 
            Write-Host "  Balance: $($wallet.balance)" -ForegroundColor White 
        }
        
        # Save customer session data
        $customerData = @{
            customerId = $customerId
            userId     = $userId
            walletId   = $walletId
            iban       = $accountIban
            activatedAt = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")
        }
        
        # Optionally save to file for future use
        $customerDataFile = "./customer_data_$(Get-Date -Format 'yyyyMMddHHmmss').json"
        $customerData | ConvertTo-Json | Set-Content -Path $customerDataFile
        Write-Host "  Customer data saved to: $customerDataFile" -ForegroundColor Gray
    }
}
catch {
    Write-Host "Activation failed: $($_.Exception.Message)" -ForegroundColor Red
    
    # Check if it's an already activated error
    if ($_.Exception.Message -match "already activated") {
        Write-Host "  Account is already active" -ForegroundColor Yellow
    }
}
```text`n## Related Endpoints

- [Register Individual Customer](/latest/api-reference/v2.1/customer/individual-register) - Initial registration
- [Create Verification Request](/latest/api-reference/v2.1/verification/create-verification) - Start verification
- [Accept Consents](/latest/api-reference/v2.1/consent/individual-consents) - Process consents
- [Get Wallet Details](/latest/api-reference/v2.1/wallet/get-wallet) - View wallet information