Skip to main content

Phase 4: Consent Management

Three mandatory consents must be accepted before account activation can proceed.

Required Consents

Consent TypeRequiredDescription
TERMS_AND_CONDITIONS✅ YesPlatform terms of service
PRIVACY_POLICY✅ YesData privacy policy
DATA_PROCESSING✅ YesData processing agreement
All three consents must be ACCEPTED before activation can proceed. Missing consents will block activation.

Accept Terms and Conditions

Endpoint: POST /api/v2.1/customer/individual/{customerId}/consents/termsHeaders:
Authorization: Bearer {jwt-token}
X-Forwarded-For: 192.168.1.100
User-Agent: Mozilla/5.0...
Request Body:
{
  "accepted": true,
  "version": "1.0",
  "acceptanceTimestamp": "2026-01-14T11:00:00.000Z"
}

Accept Privacy Policy

Endpoint: POST /api/v2.1/customer/individual/{customerId}/consents/privacyRequest Body:
{
  "accepted": true,
  "version": "1.0",
  "acceptanceTimestamp": "2026-01-14T11:01:00.000Z"
}

Accept Data Processing Agreement

Endpoint: POST /api/v2.1/customer/individual/{customerId}/consents/data-processingRequest Body:
{
  "accepted": true,
  "version": "1.0",
  "acceptanceTimestamp": "2026-01-14T11:02:00.000Z"
}

FieldDescription
idUnique consent record ID
consentTypeType of consent
statusACCEPTED or PENDING
versionConsent document version
grantedAtTimestamp of acceptance
expiresAtConsent expiry (typically 1 year)
ipAddressIP address at time of acceptance
userAgentBrowser/client information

For audit and compliance purposes, the following is recorded:
Data PointExample
IP Address192.168.1.100
User AgentMozilla/5.0 (Windows NT 10.0; Win64; x64)…
Acceptance MethodWEB_UI, MOBILE_APP, API
Document URLhttps://finhub.com/terms/v1.0
Languageen-US
Timestamp2026-01-14T11:00:00.000Z

Before activation, verify all consents are in place:
async function checkActivationReadiness(customerId, tenantId) {
  const required = ['TERMS_AND_CONDITIONS', 'PRIVACY_POLICY', 'DATA_PROCESSING'];
  const missing = [];
  
  for (const type of required) {
    const hasConsent = await checkConsent(customerId, tenantId, type);
    if (!hasConsent) {
      missing.push(type);
    }
  }
  
  return {
    ready: missing.length === 0,
    missing: missing
  };
}

Individual consents only require accepted: true. Organization consents require additional fields:
  • acceptedBy (user ID)
  • acceptedDate (timestamp)
FieldIndividual (B2C)Organization (B2B)
acceptedRequiredRequired
acceptedByNot requiredRequired
acceptedDateNot requiredRequired

Next Step

After all consents are accepted, proceed to Phase 5: Account Activation.

Phase 5: Activation

Activate account and generate IBAN