Phase 5: Account Activation

Activate customer account, generate IBAN, and enable wallet

Phase 5: Account Activation

Activation is the final step before the customer can perform financial operations. This phase generates the IBAN and activates the wallet.

Prerequisites Checklist

PrerequisiteRequired StatusCheck
VerificationAPPROVED
Terms & ConditionsACCEPTED
Privacy PolicyACCEPTED
Data ProcessingACCEPTED
Customer StatusNot ACTIVE

Check Activation Readiness

Before attempting activation, verify all prerequisites are met.

Endpoint: GET /api/v2.1/customer/individual/{customerId}/owner/{tenantId}/activation/check

Headers:

http
Authorization: Bearer {jwt-token}

Status: 200 OK

json
{
  "code": 200,
  "message": "Activation check completed",
  "data": {
    "activationAllowed": true,
    "consentOk": true,
    "verificationOk": true,
    "powerTenantApprovalOk": true,
    "powerTenantApprovalRequired": false,
    "riskLevel": "LOW",
    "isHighRisk": false,
    "customerId": "cust-550e8400-e29b-41d4-a716-446655440010",
    "powerTenant": "97e7ff29-15f3-49ef-9681-3bbfcce4f6cd",
    "ownerTenant": "97e7ff29-15f3-49ef-9681-3bbfcce4f6cd"
  }
}
json
{
  "code": 200,
  "message": "Activation check completed",
  "data": {
    "activationAllowed": false,
    "consentOk": false,
    "verificationOk": true,
    "riskLevel": "LOW",
    "customerId": "cust-550e8400-e29b-41d4-a716-446655440010",
    "missingConsents": ["PRIVACY_POLICY", "DATA_PROCESSING"]
  }
}

Activate Customer Account

Endpoint: POST /api/v2.1/customer/individual/{customerId}/activation

Headers:

http
Authorization: Bearer {admin-jwt-token}

Request Body:

json
{
  "activationReason": "All verification and consents completed successfully",
  "activatedBy": "admin-user-id"
}

Status: 200 OK

json
{
  "code": 200,
  "message": "Customer activated successfully",
  "data": {
    "activationStatus": "ACTIVATED",
    "customerId": "cust-550e8400-e29b-41d4-a716-446655440010",
    "iban": "FR7630001007941234567890185",
    "bic": "SOGEFRPP",
    "activatedAt": "2026-01-14T14:00:00.000Z",
    "wallet": {
      "walletId": "wallet-aa0e8400-e29b-41d4-a716-446655440050",
      "id": "wallet-aa0e8400-e29b-41d4-a716-446655440050",
      "iban": "FR7630001007941234567890185",
      "bic": "SOGEFRPP",
      "currency": "EUR",
      "balance": "0.00",
      "reservedBalance": "0.00",
      "status": "ACTIVE",
      "asset": {
        "assetId": "asset-bb0e8400-e29b-41d4-a716-446655440051",
        "assetType": "FIAT",
        "currency": "EUR",
        "currentBalance": "0.00",
        "availableBalance": "0.00",
        "blockedBalance": "0.00",
        "lastUpdated": "2026-01-14T14:00:00.000Z"
      },
      "createdAt": "2026-01-13T10:30:00.000Z",
      "activatedAt": "2026-01-14T14:00:00.000Z"
    }
  }
}

Status: 400 Bad Request

json
{
  "code": 400,
  "message": "Missing required consents",
  "data": {
    "activationStatus": "CONSENT_REQUIRED",
    "customerId": "cust-550e8400-e29b-41d4-a716-446655440010",
    "missingConsentTypes": ["PRIVACY_POLICY", "DATA_PROCESSING"],
    "missingConsentDetails": {
      "PRIVACY_POLICY": {
        "consentType": "PRIVACY_POLICY",
        "title": "Privacy Policy and Data Protection",
        "required": true,
        "status": "MISSING",
        "reason": "Customer has not provided active consent",
        "acceptUrl": "/api/v2.1/customer/individual/{customerId}/consents/privacy"
      },
      "DATA_PROCESSING": {
        "consentType": "DATA_PROCESSING",
        "title": "Data Processing Agreement",
        "required": true,
        "status": "MISSING",
        "acceptUrl": "/api/v2.1/customer/individual/{customerId}/consents/data-processing"
      }
    },
    "totalRequiredConsents": 3,
    "totalMissingConsents": 2,
    "nextSteps": [
      "Accept Privacy Policy",
      "Accept Data Processing Agreement",
      "Retry activation"
    ]
  }
}

Status: 422 Unprocessable Entity

json
{
  "code": 422,
  "message": "Customer not verified",
  "data": {
    "activationStatus": "VERIFICATION_REQUIRED",
    "customerId": "cust-550e8400-e29b-41d4-a716-446655440010",
    "verificationStatus": "PENDING_REVIEW",
    "reason": "Customer verification must be APPROVED before activation",
    "currentVerificationId": "verif-880e8400-e29b-41d4-a716-446655440030",
    "verificationStatusUrl": "/api/v2.1/verifications/{verificationId}",
    "estimatedCompletionTime": "1-2 business days"
  }
}

What Happens During Activation

flowchart TD
    A[Activation Request] --> B{Check Prerequisites}
    B -->|All Met| C[Generate IBAN]
    B -->|Missing| D[Return Error]
    C --> E[Activate Wallet]
    E --> F[Update Customer Status]
    F --> G[Publish Events]
    G --> H[Return Success]
    
    style C fill:#e8f5e9
    style E fill:#e8f5e9
    style F fill:#e8f5e9

Activation Steps

  1. Validate Prerequisites - Check verification and consents
  2. Generate IBAN - Create unique IBAN for customer
  3. Activate Wallet - Change wallet status from INACTIVE to ACTIVE
  4. Update Status - Set customer status to ACTIVE
  5. Publish Events - CustomerActivated, WalletActivated (Kafka)
  6. Send Notifications - Email confirmation to customer

Key IDs Created

FieldExample ValueDescription
ibanFR7630001007941234567890185Customer’s IBAN for payments
bicSOGEFRPPBank Identifier Code
walletIdwallet-aa0e8400…Wallet identifier for transactions

IBAN Format

FR76 + [Bank Code] + [Account Number] + [Check Digits]
     └─── Country Code (France)

Next Step

After activation, proceed to Phase 6: Wallet Operations to manage the customer’s wallet.

Phase 6: Wallet Operations

Query balance and allowed operations

Type to search…

↑↓ navigate open esc close