Skip to main content
POST
https://sandbox.finhub.cloud
/
api
/
v2.1
/
customer
/
organization
/
registration
Organization Registration API
curl --request POST \
  --url https://sandbox.finhub.cloud/api/v2.1/customer/organization/registration \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: <content-type>' \
  --header 'User-Agent: <user-agent>' \
  --header 'X-Forwarded-For: <x-forwarded-for>' \
  --header 'X-Tenant-ID: <x-tenant-id>' \
  --data '
{
  "email": "<string>",
  "password": "<string>",
  "matchingPassword": "<string>",
  "roleIds": [
    {}
  ],
  "organizationCustomer": {
    "customerName": "<string>",
    "organization": {
      "legalName": "<string>",
      "tradingName": "<string>",
      "registrationNumber": "<string>",
      "taxId": "<string>",
      "incorporationDate": "<string>",
      "legalForm": "<string>",
      "industry": "<string>",
      "businessDescription": "<string>",
      "website": "<string>",
      "email": "<string>",
      "phone": "<string>",
      "businessType": "<string>"
    },
    "user": {
      "username": "<string>",
      "email": "<string>",
      "password": "<string>",
      "status": "<string>",
      "roles": [
        {}
      ]
    },
    "employees": [
      {
        "person": {},
        "role": "<string>",
        "roles": [
          {}
        ],
        "department": "<string>",
        "addresses": [
          {}
        ],
        "telephoneNumbers": [
          {}
        ]
      }
    ]
  }
}
'
{
  "code": 200,
  "message": "Organization registered successfully. Default admin will be created automatically. Use separate endpoints to add employees, directors, and shareholders.",
  "data": {
    "individual": false,
    "organization": true,
    "adminEmployees": [],
    "id": "ef4a8be6-602b-4b26-b81d-afa7d6d835fd",
    "organizationId": "ef4a8be6-602b-4b26-b81d-afa7d6d835fd",
    "tenantId": "d1e2f3a4-b5c6-47d8-9e0f-1a2b3c4d5e6f",
    "email": "[email protected]",
    "shareholders": [],
    "employees": [],
    "directors": []
  }
}

Organization Registration API

Register a new B2B organization customer with complete company details.
Endpoint: POST /api/v2.1/customer/organization/registration
Important Registration BehaviorEmployees, directors, and shareholders included in the registration request are ignored by the API.The registration endpoint only creates:
  • Organization entity
  • Primary admin user account
You must use separate endpoints after registration:
  1. POST /customer/organization/{id}/director - Add directors
  2. POST /customer/organization/{id}/shareholders - Add shareholders
  3. POST /customer/organization/{id}/employee - Add employees (requires ADMIN_USER role)
See Organization Management API for details.

Endpoint

POST /api/v2.1/customer/organization/registration

Headers

For complete details on authentication, compliance headers, and SDK implementation examples, refer to the Standard HTTP Headers reference documentation.
X-Tenant-ID
string
required
Tenant identifier for multi-tenant operationsExample: tenant_cloudvault
Authorization
string
required
Bearer token for authentication (admin privileges required)Example: Bearer eyJ0eXAiOiJKV1QiLCJh...
Content-Type
string
required
Must be application/json
X-Forwarded-For
string
required
Required for Compliance & AuditClient’s originating IP address for KYB compliance trackingExample: 192.168.1.100
User-Agent
string
required
Required for Compliance & AuditClient application identifier for security analysisExample: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36

Request Body

The request body uses a nested structure. All organization details must be inside the organizationCustomer.organization wrapper object.

Top-Level Fields

email
string
required
Primary admin user email address (must be unique)Example: "[email protected]"
password
string
required
Password for the admin user accountSecurity Requirements:
  • Minimum 8 characters
  • Must contain uppercase and lowercase
  • Must contain numbers and special characters
matchingPassword
string
required
Password confirmation (must match password)
roleIds
array
required
Array of role identifiers for the admin userStandard Roles:
  • ACCOUNT_OWNER: Primary account owner
  • ADMIN: Administrative privileges
Example: ["ACCOUNT_OWNER", "ADMIN"]

Organization Customer Object

organizationCustomer
object
required
Nested object containing all organization details

Code Examples

curl -X POST "https://sandbox.finhub.cloud/api/v2.1/customer/organization/registration" \
  -H "X-Tenant-ID: tenant_cloudvault" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-Forwarded-For: 192.168.1.100" \
  -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \
  -d '{
    "email": "[email protected]",
    "password": "SecurePassword123!",
    "matchingPassword": "SecurePassword123!",
    "roleIds": ["ACCOUNT_OWNER", "ADMIN"],
    "organizationCustomer": {
      "customerName": "Acme Corporation Ltd",
      "organization": {
        "legalName": "Acme Corporation Limited",
        "tradingName": "Acme Corp",
        "registrationNumber": "REG-1234567890",
        "taxId": "TAX-1234567890",
        "incorporationDate": "2015-03-20",
        "legalForm": "LIMITED_LIABILITY_COMPANY",
        "industry": "TECHNOLOGY",
        "businessDescription": "Software development and consulting services",
        "website": "https://acmecorp.com",
        "email": "[email protected]",
        "phone": "+37060012345",
        "businessType": "B2B"
      },
      "user": {
        "username": "[email protected]",
        "email": "[email protected]",
        "password": "SecurePassword123!",
        "status": "PENDING_ACTIVATION",
        "roles": ["ACCOUNT_OWNER", "ADMIN"]
      },
      "employees": [
        {
          "person": {
            "firstName": "Finance",
            "lastName": "Manager",
            "email": "[email protected]",
            "dateOfBirth": "1988-03-10",
            "nationality": "LT",
            "gender": 0,
            "placeOfBirth": "Kaunas",
            "fullName": "Finance Manager"
          },
          "role": "TRANSACTION_APPROVER",
          "roles": ["TRANSACTION_APPROVER", "EMPLOYEE"],
          "department": "Finance",
          "addresses": [
            {
              "type": "HOME",
              "street": "789 Finance Street",
              "city": "Vilnius",
              "postalCode": "01236",
              "country": "LT",
              "isPrimary": true
            }
          ],
          "telephoneNumbers": [
            {
              "number": "+37067890124",
              "country": "LT",
              "phoneType": 1,
              "operator": "Telia",
              "purpose": "personal",
              "isPrimary": true
            }
          ]
        }
      ]
    }
  }'

Advanced: Registration with Categorization

For medium or high-risk business customers, you can include categorization with feature parametrization to define appropriate risk controls during registration. This enables automated compliance and transaction monitoring from day one.

How It Works

  1. Get Categorization Hierarchy - Call GET /customer/individual/categorization/hierarchy/ (use individual endpoint for organizations too)
  2. Filter Business Categories - Client-side filter for categories with “BUSINESS”, “ORGANIZATION”, “B2B”
  3. Build Feature Relations - Map features with business-appropriate values
  4. Include in Registration - Add categorization object to organizationCustomer

Example: Business Registration with Categorization

curl -X POST "https://sandbox.finhub.cloud/api/v2.1/customer/organization/registration" \
  -H "X-Tenant-ID: tenant_cloudvault" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-Forwarded-For: 192.168.1.100" \
  -H "User-Agent: Mozilla/5.0" \
  -d '{
    "email": "[email protected]",
    "password": "SecurePassword123!",
    "matchingPassword": "SecurePassword123!",
    "roleIds": ["ACCOUNT_OWNER", "ADMIN"],
    "customerCategory": {
      "id": "business-medium-risk-7f9a",
      "name": "BUSINESS_MEDIUM_RISK"
    },
    "organizationCustomer": {
      "customerName": "Acme Corporation Ltd",
      "organization": {
        "legalName": "Acme Corporation Limited",
        "tradingName": "Acme Corp",
        "registrationNumber": "REG-1234567890",
        "taxId": "TAX-1234567890",
        "incorporationDate": "2015-03-20",
        "legalForm": "LIMITED_LIABILITY_COMPANY",
        "industry": "TECHNOLOGY",
        "businessDescription": "Software development and consulting services",
        "website": "https://acmecorp.com",
        "email": "[email protected]",
        "phone": "+37060012345",
        "businessType": "B2B",
        "addresses": [
          {
            "type": "REGISTERED_OFFICE",
            "street": "456 Tech Boulevard",
            "city": "Vilnius",
            "postalCode": "01234",
            "country": "LT",
            "isPrimary": true
          }
        ],
        "contacts": [
          {
            "type": "EMAIL",
            "value": "[email protected]",
            "isPrimary": true
          },
          {
            "type": "PHONE",
            "value": "+37060012345",
            "isPrimary": true
          }
        ],
        "representatives": [
          {
            "firstName": "John",
            "lastName": "Doe",
            "position": "CEO",
            "email": "[email protected]",
            "phone": "+37060012346",
            "dateOfBirth": "1980-05-15",
            "nationality": "LT",
            "isPrimaryOwner": true,
            "ownershipShare": 51.0
          },
          {
            "firstName": "Jane",
            "lastName": "Smith",
            "position": "CFO",
            "email": "[email protected]",
            "phone": "+37060012347",
            "dateOfBirth": "1985-08-20",
            "nationality": "LT",
            "isPrimaryOwner": false,
            "ownershipShare": 49.0
          }
        ]
      },
      "user": {
        "username": "[email protected]",
        "email": "[email protected]",
        "password": "SecurePassword123!",
        "status": "PENDING_ACTIVATION",
        "roles": ["ACCOUNT_OWNER", "ADMIN"]
      },
      "categorization": {
        "id": "business-medium-risk-7f9a",
        "name": "BUSINESS_MEDIUM_RISK",
        "description": "Medium risk business customer",
        "isActive": true,
        "categoryFeatureRelations": [
          {
            "feature": {
              "id": "business-risk-assessment-3c4d",
              "code": "BUSINESS_RISK_ASSESSMENT"
            },
            "enabled": true,
            "parametrization": [
              {
                "name": "BUSINESS_RISK_LEVEL",
                "value": "MEDIUM"
              },
              {
                "name": "BUSINESS_RISK_SCORE",
                "value": "60"
              },
              {
                "name": "ANNUAL_REVENUE",
                "value": "1000000"
              },
              {
                "name": "EMPLOYEE_COUNT",
                "value": "25"
              },
              {
                "name": "SANCTIONS_CHECK",
                "value": "STANDARD"
              }
            ]
          },
          {
            "feature": {
              "id": "business-transaction-limits-7e2f",
              "code": "BUSINESS_TRANSACTION_LIMITS"
            },
            "enabled": true,
            "parametrization": [
              {
                "name": "MONTHLY_LIMIT",
                "value": "50000"
              },
              {
                "name": "DAILY_LIMIT",
                "value": "10000"
              },
              {
                "name": "PER_TRANSACTION_LIMIT",
                "value": "5000"
              }
            ]
          },
          {
            "feature": {
              "id": "business-verification-requirements-9a1b",
              "code": "BUSINESS_VERIFICATION_REQUIREMENTS"
            },
            "enabled": true,
            "parametrization": [
              {
                "name": "BUSINESS_VERIFICATION",
                "value": "REQUIRED"
              },
              {
                "name": "BENEFICIAL_OWNER_VERIFICATION",
                "value": "REQUIRED"
              },
              {
                "name": "DOCUMENT_VERIFICATION",
                "value": "REQUIRED"
              }
            ]
          }
        ]
      }
    }
  }'

Categorization Benefits for Business Customers

Why Use Categorization During Organization Registration?
  1. Business Risk Assessment - Define risk profile based on annual revenue, employee count, industry
  2. Transaction Limits - Set appropriate limits for business operations (typically higher than individual)
  3. Verification Requirements - Specify KYB checks (business verification, UBO verification, document verification)
  4. Compliance Automation - Ensure AML/CTF requirements are met from day one
  5. Monitoring Frequency - Schedule transaction monitoring appropriate for business risk level

Smart Value Selection for Business

Production-proven patterns for business categorization:
ParameterSmart Selection LogicTypical Values
BUSINESS_RISK_LEVELMatch “MEDIUM”, “STANDARD”MEDIUM, STANDARD, VERIFIED
BUSINESS_RISK_SCOREMatch 50-70 range for medium risk60, 55, 65
ANNUAL_REVENUEMatch 500K-2M range1000000, 500000, 2000000
EMPLOYEE_COUNTMatch 10-50 range25, 20, 30
MONTHLY_LIMITMatch 40K-60K for medium risk50000, 40000, 60000
DAILY_LIMITMatch 8K-12K for medium risk10000, 8000, 12000
SANCTIONS_CHECKMatch “STANDARD” or “PERIODIC”STANDARD, PERIODIC, ENHANCED
Production Pattern: Use the individual categorization endpoint (GET /customer/individual/categorization/hierarchy/{tenantId}) and filter client-side for business categories. The organization-specific endpoint returns 404 in production.
UBO Ownership Validation: If including representatives with ownershipShare, ensure the total adds up to 100%. The API may validate this during verification.

Response

{
  "code": 200,
  "message": "Organization registered successfully. Default admin will be created automatically. Use separate endpoints to add employees, directors, and shareholders.",
  "data": {
    "individual": false,
    "organization": true,
    "adminEmployees": [],
    "id": "ef4a8be6-602b-4b26-b81d-afa7d6d835fd",
    "organizationId": "ef4a8be6-602b-4b26-b81d-afa7d6d835fd",
    "tenantId": "d1e2f3a4-b5c6-47d8-9e0f-1a2b3c4d5e6f",
    "email": "[email protected]",
    "shareholders": [],
    "employees": [],
    "directors": []
  }
}
Why are the arrays empty?Even if you send employees, directors, or shareholders in the registration request, they will not be processed. The API intentionally returns empty arrays to indicate you must use the dedicated management endpoints.This design ensures proper validation and role requirements for each organizational role type.

Next Steps After Registration

1. Add Directors

POST /api/v2.1/customer/organization/{organizationId}/director
See Add Director for details.

2. Add Shareholders

POST /api/v2.1/customer/organization/{organizationId}/shareholders
See Add Shareholders for details.

3. Add Additional Employees

POST /api/v2.1/customer/organization/{organizationId}/employee
Important: At least one employee must have the ADMIN_USER role.

4. Complete Verification

POST /api/v2.1/customer/organization/{organizationId}/verify
See Business Verification for details.

5. Accept Consents

Required consents:
  • Terms and Conditions
  • Privacy Policy
  • Data Processing
See Consent Management for details.

6. Activate Organization

POST /api/v2.1/customer/organization/{organizationId}/activation
See Organization Activation for details.

Common Validation Errors

Missing ADMIN_USER Role

Error:
{
  "code": 400,
  "message": "Missing required role 'ADMIN_USER' for BUSINESS_TYPE_CLIENT_TO_TENANT organization. At least one employee must have this role."
}
Solution: Ensure at least one employee has the ADMIN_USER role.

Duplicate Registration Number

Error:
{
  "code": 409,
  "message": "Organization with registration number 'REG-123' already exists"
}
Solution: Registration numbers must be unique within the tenant.

Invalid Nested Structure

Error:
{
  "code": 400,
  "message": "organizationCustomer is required"
}
Solution: Use the nested structure with organizationCustomer.organization.*

API Schema Reference

For the complete OpenAPI schema specification of this endpoint, including all request and response structures, see the API Schema Mapping document.

Changelog

VersionDateChanges
v2.12026-01-13Initial release