---
title: "Find customer by code, phone, or UID"
method: GET
path: "/customers/find"
tags: ["Customers"]
---

# Find customer by code, phone, or UID

`GET /customers/find`

Find a customer by promo code (`code`), phone number (`phone`), or UDS identifier (`uid`).
This is the primary endpoint for identifying customers during checkout.

**Promo code** — generated by the customer in the UDS mobile app (QR code). Short-lived and single-use.
Allows point redemption during the transaction.

**Phone number** — for automated systems. Points cannot be redeemed when identifying by phone
(unless `purchaseByPhone` is enabled in settings).

**UID** — permanent UDS customer identifier for returning customers.

The response includes the customer's loyalty calculation (`purchase` field) which shows
available discounts and max redeemable points for the current transaction.

## Query parameters

- `code` string
- `phone` string
- `uid` string
- `exchangeCode` boolean
- `total` number
- `skipLoyaltyTotal` number
- `unredeemableTotal` number

## Response `200`

Customer found by the given search criteria.

- object
  - `user` CustomerDetail — A customer enrolled in your company's loyalty program. Contains UDS profile information, current point balance, membership tier, and transaction statistics. Returned by list and search endpoints.
    - `uid` string, nullable — Customer ID in the UDS.
    - `avatar` string, nullable — Avatar URL.
    - `displayName` string — Customer name.
    - `gender` 'MALE' | 'FEMALE' | 'NOT_SPECIFIED', nullable — Customer's gender for personalization and marketing segmentation.
    - `phone` string, nullable — Participant phone number.
    - `birthDate` string, date, nullable — Customer birth date
    - `participant` Participant — Customer's loyalty program details within your company — point balance, discount rates, transaction statistics, and membership tier. This is the core loyalty data for a customer.
      - `id` integer, nullable — Participant ID.
      - `inviterId` integer, nullable — ID of the inviting participant.
      - `points` number — Available loyalty points that the customer can redeem for discounts on future purchases.
      - `discountRate` number — Current discount rate (percentage) based on the customer's membership tier. Applied to purchases when baseDiscountPolicy is APPLY_DISCOUNT.
      - `cashbackRate` number — Current cashback rate (percentage) based on the customer's membership tier. Determines points earned per purchase when baseDiscountPolicy is CHARGE_SCORES.
      - `cashSpent` number — Total amount the customer has paid in currency across all completed purchases (excluding point payments). Used for automatic membership tier upgrades based on spending thresholds.
      - `savedFunds` number — Total amount the customer has saved through discounts, point redemptions, and certificates across all transactions.
      - `invitedCount` integer — Total number of people this customer has invited to join the loyalty program via referral link.
      - `effectiveInvitedCount` integer — Number of invited people who made at least one purchase (effective referrals). Used for membership tier upgrade conditions.
      - `operationsCount` integer — Total number of completed purchase transactions by this customer.
      - `fullRefundsCount` integer — Number of fully refunded transactions for this customer.
      - `note` string, nullable — Note.
      - `membershipTier` MembershipTier — Membership tier (loyalty level) configuration. Defines the discount/cashback rate and automatic upgrade conditions based on spending or referral count.
        - `uid` string — Tier ID.
        - `name` string, required — Tier name.
        - `rate` number, required — Tier rate.
        - `maxScoresDiscount` number, nullable — The maximum discount (in percentage) allowed when redeeming points.
        - `conditions` object — Conditions to upgrade customer tiers automatically.
          - `totalCashSpent` object, nullable — Upgrade to tier when customer reaches target `cashSpent`.
            - `target` number — Amount of cash spent.
          - `effectiveInvitedCount` object, nullable — Upgrade to tier when customer reaches target `effectiveInvitedCount`.
            - `target` integer — Amount of invited count.
      - `dateCreated` string, date-time, nullable — Date and time when customer was registered in company.
      - `lastTransactionTime` string, date-time, nullable — Date and time when the customer made the last transaction.
      - `pointsExpireIn` string, date-time, nullable — Date and time when the customer's points will be expired.
    - `channelName` string, nullable — Acquisition channel name
    - `email` string, nullable — Customer email
    - `tags` TagModel[] — List of tags
      - `id` integer — Tag identifier
      - `name` string — Tag name
  - `code` string, nullable — New long life purchase promo code if exchangeCode queried
  - `type` 'PURCHASE' | 'BONUS_ITEMS_PURCHASE' | 'GOODS_ORDER_COMPLETE' | 'CERTIFICATE' — Type of action associated with a customer's purchase token: * `PURCHASE` — standard purchase operation * `BONUS_ITEMS_PURCHASE` — purchase using bonus items * `GOODS_ORDER_COMPLETE` — completing a goods order * `CERTIFICATE` — certificate redemption
  - `purchase` PurchaseCalc — Loyalty program calculation result for a purchase. Shows discount amounts, point values, final cash payment, and projected cashback. All monetary values are in company currency units.
    - `maxPoints` number — Maximum number of loyalty points the customer can redeem for this purchase, considering their balance and tier limits.
    - `total` number — Original purchase total before any loyalty benefits are applied (in currency units).
    - `skipLoyaltyTotal` number — Portion of the purchase total excluded from loyalty program benefits — no discount applied, no cashback earned (e.g., alcohol, tobacco, gift cards). In currency units.
    - `unredeemableTotal` number — Portion of the purchase total that cannot be paid with loyalty points (in currency units).
    - `discountAmount` number — Discount amount in currency units. Only applicable when baseDiscountPolicy is APPLY_DISCOUNT.
    - `discountPercent` number — Discount as a percentage of the total. Only applicable when baseDiscountPolicy is APPLY_DISCOUNT.
    - `points` number — Number of loyalty points being redeemed (deducted from customer balance) for this purchase.
    - `pointsPercent` number — Points redemption as a percentage of the total purchase amount.
    - `netDiscount` number — Total combined discount from both loyalty discount and point redemption (in currency units).
    - `netDiscountPercent` number — Total combined discount as a percentage (loyalty discount + point redemption).
    - `certificatePoints` number — Number of certificate points deducted (separate from regular loyalty points).
    - `cash` number — Final amount the customer pays in currency after all discounts and point redemptions. Use this value in POST /operations.
    - `cashTotal` number — Total amount to be paid including extra charges like delivery fees (in currency units).
    - `cashBack` number — Loyalty points the customer will earn from this purchase. Applied after operation is completed (may be deferred by deferPointsForDays setting).
    - `extras` object — Additional payments will not be taken into account by the loyalty program.
      - `delivery` number — Delivery cost (in currency units).
    - `maxScoresDiscount` number — The maximum discount (in percentage) allowed when redeeming points.

## Other responses

- `404` — Entity not found.

---

[API](https://skmtc.dev/uds/apis/uds-api.md) · [All operations](https://skmtc.dev/uds/apis/uds-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/uds/uds-api/revisions/6fbbbc79e671/schema)
