# Customers, customer groups & KYC levels

A **customer** represents an end user (a player) in your system. Omno uses the customer to drive provider [eligibility](/guides/concepts/routing) and to collect any KYC a provider requires.

## Create or update

`externalUserId` is your merchant-side unique key. Creating a customer again with the same `externalUserId` **updates** the existing record — create-or-update semantics.

## Three ways to identify a customer

When you create a Cashier session or a transaction, identify the customer in **exactly one** of these ways:

- an inline `customer` object,
- an `externalCustomerId` (your key), or
- an `internalCustomerId` (the Omno customer ID).


Send exactly one — don't combine them.

## Customer groups

`customer.customerGroups` is an array of **merchant-defined** labels, for example `"Vipgroup"` or `"Test"`. Omno matches them against each provider's group rules during [eligibility filtering](/guides/concepts/routing).

## KYC levels

`customer.kyc.kycLevels` is an array of **merchant-defined** labels, for example `"Identity Check"` or `"Mail Verification"`, matched against each provider's KYC rules. `kycVerified` tells Omno whether the customer is verified in your system.

When a provider needs KYC fields the customer doesn't have yet, the **Cashier prompts for the missing required fields** during the flow.

## Build it →

- [Solutions, routing & PSP eligibility](/guides/concepts/routing)
- [Other APIs → Customers](/apis)