Přeskočit na hlavní obsah

KYC flow

KYC má čtyři ownership modely — vyberte jednou per tenant; model určuje, které strany kontraktu podporujete.

Model: platform_owns

Nejběžnější pro kasina. Platforma řeší kompletní KYC; CRM zrcadlí state přes webhooks.

Implementujete: webhook sendery pro lifecycle níže.

NEimplementujete: outbound KYC endpointy (CRM vám pro KYC nikdy nevolá).

Webhook události

POST /v1/adapters/<slug>/webhooks/kyc-events

// kyc.submitted
{
"event": "kyc.submitted",
"event_id": "evt-uuid",
"ts": "2026-05-08T...",
"player_external_id": "casino_player_001",
"level": 1,
"data": { "documents": ["passport", "selfie"] }
}

// kyc.approved
{
"event": "kyc.approved",
"level": 2,
"data": { "expires_at": "2027-05-08T..." } // volitelné TTL
}

// kyc.rejected
{
"event": "kyc.rejected",
"level": 1,
"data": { "reason": "document_expired" }
}

// kyc.expired
{ "event": "kyc.expired", "level": 2, "data": {} }

// kyc.level_upgraded — hráč začal submit na vyšší úroveň
{ "event": "kyc.level_upgraded", "level": 3, "data": {} }

State transitions vynucené server-side: none → pending → {verified, rejected}, verified → expired, atd.

Model: crm_owns

Méně běžné — typické pro operátory s custom KYC workflow. CRM admin iniciuje; platforma poslouchá verdikty.

Implementujete: outbound KYC endpointy.

NEimplementujete: webhook sendery. casinocrm.io odmítá inbound kyc.* webhooks s 403 pro crm_owns tenanty.

POST <your-base>/v1/kyc/initiate

{
"tenant_id": "...",
"player_external_id": "casino_player_001",
"level": 1,
"requirements": ["passport", "address_proof"]
}

Response: { ok: true, provider_ref?: "..." } nebo { ok: false, code, message }.

POST <your-base>/v1/kyc/update

CRM admin approves / rejects na CRM straně; casinocrm.io informuje vaši platformu:

{
"tenant_id": "...",
"player_external_id": "casino_player_001",
"status": "verified", // nebo "rejected"
"level": 1,
"reason": "documents validated"
}

GET <your-base>/v1/kyc/:player_external_id

Reconciliation lookup:

{
"status": "verified",
"level": 2,
"last_updated": "..."
}

Model: dual

Oba flow zároveň — typické pro MGA / UK kde:

  • Platforma dělá ID verification (level 1, level 2)
  • CRM dělá affordability checks (level 3)

Implementujete OBA outbound endpointy AND webhook sendery. Každá KYC úroveň přirozeně padne na jednu nebo druhou stranu; casinocrm.io nevynucuje, která strana zpracovává kterou úroveň.

Model: none

Žádný KYC tracking pro tento tenant. casinocrm.io odmítá všechny KYC webhooks AND nezobrazuje KYC admin akce. Užitečné jen pro neregulovaná testovací prostředí.

Ukládání stavu

Bez ohledu na model CRM ukládá:

players.kyc_status -- none | pending | verified | rejected | expired
players.kyc_level -- 0..10
players.kyc_history -- append-only audit JSONB
players.kyc_last_event_at
players.kyc_expires_at

Admin UI renderuje timeline přímo z kyc_history.