Přeskočit na hlavní obsah

KYC tracking

casinocrm.io podporuje čtyři KYC ownership modely — vyberte jednou per tenant, override per-player podle potřeby.

Modely

kyc_modelKdo iniciujeKdo rozhodujeWebhooks akceptované
platform_ownsCasino platformaPlatformaAno — kyc.* lifecycle webhooky aktualizují CRM state
crm_ownsCRM admin (POST /v1/players/:id/kyc/request)CRM admin (POST .../approve)Ne — casinocrm.io odmítá inbound kyc.* webhooky (403)
dualKterákoli stranaKterákoli strana (split podle KYC level — basic přes platformu, source-of-funds přes CRM)Ano
noneNikdo (jen test envs)Ne

State machine

none → pending → verified
→ rejected
verified → expired (TTL refresh)
verified → pending (level upgrade)
rejected → pending (resubmit)
expired → pending (re-verify)

Forward-only. Žádné verified → rejected (admin používá POST .../revoke, který přejde na expired).

Levels

Operator-defined integer 0..10:

  • 0 — žádné KYC
  • 1 — basic ID (passport / driver's license)
  • 2 — address verification (utility bill)
  • 3 — source of funds
  • 4+ — operator-specific (enhanced due diligence, atd.)

Storage

players.kyc_status, players.kyc_level, players.kyc_history (append-only JSONB), players.kyc_last_event_at, players.kyc_expires_at (TTL pro verified KYC).

Admin akce

POST /v1/players/:id/kyc/request — dostupné pouze když tenant.kyc_model in {crm_owns, dual} AND adapter podporuje kyc.initiate. Přejde none → pending.

POST /v1/players/:id/kyc/approve — dostupné pouze když tenant.kyc_model in {crm_owns, dual} AND adapter podporuje kyc.update. Přejde pending → verified. Volitelný expires_at pro TTL.

POST /v1/players/:id/kyc/revoke — vždy dostupné (admin override). Přejde current → expired.

Webhook události

Eventfrom → to
kyc.submittednone/rejected/expired → pending
kyc.approvedpending → verified
kyc.rejectedpending → rejected
kyc.expiredverified → expired
kyc.level_upgradedverified → pending (nová vyšší level submission)

History entry shape:

{
"ts": "2026-05-08T12:00:00Z",
"from": "pending",
"to": "verified",
"level": 1,
"actor_kind": "platform" | "crm" | "admin",
"actor_id": "user_abc",
"reason": "documents accepted",
"data": { "provider_ref": "..." }
}

Capability mismatch

Pokud váš tenant pickne crm_owns, ale adapter nepodporuje kyc.update, admin UI zobrazí varování + zakáže Approve tlačítko. Operátoři uvidí trade-off + buď změní adapter nebo přepnou na platform_owns.