---
title: "PATCH /v2/customers/{merchant_id}"
method: PATCH
path: "/v2/customers/{merchant_id}"
tags: ["customers"]
---

# PATCH /v2/customers/{merchant_id}

`PATCH /v2/customers/{merchant_id}`

## Path parameters

- `merchant_id` string, required

## Request body

- CustomersUpdateCustomerRequestBody
  - `customer` object, required
    - `birthday` string
    - `blocked` boolean

## Response `200`

200

- CustomersUpdateCustomerResponseBody
  - `customer` object, required
    - `id` number, required
    - `merchant_id` string, required
    - `email` string, nullable, required
    - `points_approved` number, required
    - `points_pending` number, required
    - `points_spent` number, required
    - `properties` object, required
    - `metadata` object, required
      - `shopify_source_url` string
    - `rewards_claimed` integer, required
    - `rewards_used` integer, nullable, required
    - `blocked` boolean, required
    - `guest` boolean, required
    - `enrolled` boolean, required
    - `enrolled_at` string, nullable, required
    - `referral_id` string, nullable, required
    - `referred_by` object, nullable, required
      - `id` number, required
      - `merchant_id` string, required
    - `loyalty_tier_membership` object, nullable, required — Details of the customer's current tier membership, or `null` if the customer doesn't have one — e.g. guests, blocked or unenrolled customers, or programs without tiers enabled
      - `started_at` string, required
      - `expires_at` string, nullable, required
      - `manual` boolean, nullable, required
      - `loyalty_tier` object, required
        - `id` number, required
        - `name` string, required
        - `number` number, required
        - `default` boolean, required
        - `hidden` boolean, required
        - `lower_bound` string, required
        - `upper_bound` string, nullable, required
        - `position` number, required
    - `tier_eligibility` union, required
      - TierEligibilityPoints
        - `kind` 'points', required
        - `valid_until` string, date-time, nullable, required — ISO 8601 timestamp representing when the calculated progress is no longer accurate. After this date, progress values may be stale — for example, because contributing activities, spend, or qualifying orders have fallen outside the evaluation window. Null for lifetime tiers.
        - `tier_points` object, required
          - `now` number, required — The number of points contributing to tier progress as of right now. This is equivalent to the number of eligible points from now, back to the start of the evaluation window.
          - `at_expiration` number, nullable, required — The predicted number of points contributing to tier progress as of the current tier's expiration date. Null if the membership never expires (e.g. lifetime tiers).
        - `points_needed_for_renewal` number, nullable, required — The number of additional points required to renew the current tier when the current membership expires. Null if the membership does not expire (e.g. lifetime tiers), or if the current membership is for the default tier.
        - `points_needed_for_upgrade` number, nullable, required — The number of additional points required to move into the next tier. Null if there is no eligible next tier.
        - `upgrade_tier` object, nullable, required — The next tier that this customer could upgrade to from their current tier. Null if the customer is already at the highest tier.
          - `id` number, required
          - `name` string, required
          - `threshold` number, required — The threshold required to reach this tier. For points programs, this is the number of points. For spend programs, this is the spend amount in minor units (e.g. cents); the currency is determined by the program configuration. For order-count programs, this is the number of qualifying orders.
        - `forecasted_tier` object, nullable, required — The tier the customer is forecasted to be in at their membership expiration, based on their predicted points at expiration. Null if the membership never expires (e.g. lifetime tiers, default tier memberships, or conditional tier memberships).
          - `id` number, required
          - `name` string, required
      - TierEligibilitySpend
        - `kind` 'spend', required
        - `valid_until` string, date-time, nullable, required — ISO 8601 timestamp representing when the calculated progress is no longer accurate. After this date, progress values may be stale — for example, because contributing activities, spend, or qualifying orders have fallen outside the evaluation window. Null for lifetime tiers.
        - `tier_spend` object, required
          - `now` CurrencyAmount, required
            - `amount` number, required — Currency amount as a numeric value. This may be an integer or a float depending on the value and the currency. Currencies that do not use a decimal point will always be an integer
            - `formatted` string, required — Formatted amount as string with currency symbol, e.g. `$50` or `$10.50`
          - `at_expiration` CurrencyAmount, required
            - `amount` number, required — Currency amount as a numeric value. This may be an integer or a float depending on the value and the currency. Currencies that do not use a decimal point will always be an integer
            - `formatted` string, required — Formatted amount as string with currency symbol, e.g. `$50` or `$10.50`
        - `spend_needed_for_renewal` CurrencyAmount, required
          - `amount` number, required — Currency amount as a numeric value. This may be an integer or a float depending on the value and the currency. Currencies that do not use a decimal point will always be an integer
          - `formatted` string, required — Formatted amount as string with currency symbol, e.g. `$50` or `$10.50`
        - `spend_needed_for_upgrade` CurrencyAmount, required
          - `amount` number, required — Currency amount as a numeric value. This may be an integer or a float depending on the value and the currency. Currencies that do not use a decimal point will always be an integer
          - `formatted` string, required — Formatted amount as string with currency symbol, e.g. `$50` or `$10.50`
        - `upgrade_tier` object, nullable, required — The next tier that this customer could upgrade to from their current tier. Null if the customer is already at the highest tier.
          - `id` number, required
          - `name` string, required
          - `threshold` number, required — The threshold required to reach this tier. For points programs, this is the number of points. For spend programs, this is the spend amount in minor units (e.g. cents); the currency is determined by the program configuration. For order-count programs, this is the number of qualifying orders.
        - `forecasted_tier` object, nullable, required — The tier the customer is forecasted to be in at their membership expiration, based on their predicted spend at expiration. Null if the membership never expires (e.g. lifetime tiers, default tier memberships, or conditional tier memberships).
          - `id` number, required
          - `name` string, required
      - TierEligibilityOrders
        - `kind` 'orders', required
        - `valid_until` string, date-time, nullable, required — ISO 8601 timestamp representing when the calculated progress is no longer accurate. After this date, progress values may be stale — for example, because contributing activities, spend, or qualifying orders have fallen outside the evaluation window. Null for lifetime tiers.
        - `tier_orders` object, required
          - `now` number, required — The number of orders contributing to tier progress as of right now. This is equivalent to the number of eligible orders from now, back to the start of the evaluation window.
          - `at_expiration` number, nullable, required — The predicted number of orders contributing to tier progress as of the current tier's expiration date. Null if the membership never expires (e.g. lifetime tiers).
        - `orders_needed_for_renewal` number, nullable, required — The number of additional orders required to renew the current tier when the current membership expires. Null if the membership does not expire (e.g. lifetime tiers), or if the current membership is for the default tier.
        - `orders_needed_for_upgrade` number, nullable, required — The number of additional orders required to move into the next tier. Null if there is no eligible next tier.
        - `upgrade_tier` object, nullable, required — The next tier that this customer could upgrade to from their current tier. Null if the customer is already at the highest tier.
          - `id` number, required
          - `name` string, required
          - `threshold` number, required — The threshold required to reach this tier. For points programs, this is the number of points. For spend programs, this is the spend amount in minor units (e.g. cents); the currency is determined by the program configuration. For order-count programs, this is the number of qualifying orders.
        - `forecasted_tier` object, nullable, required — The tier the customer is forecasted to be in at their membership expiration, based on their predicted orders at expiration. Null if the membership never expires (e.g. lifetime tiers, default tier memberships, or conditional tier memberships).
          - `id` number, required
          - `name` string, required
    - `insights_segment` 'At Risk' | 'Win Back' | 'Loyal', nullable, required
    - `birthday` string, nullable, required
    - `referral_url` string, required
    - `receipt_upload_url` string, nullable, required
    - `loyalty_pass_url` string, nullable, required
    - `linked_merchant_ids` string[]
    - `created_at` string, required
    - `updated_at` string, required

## Other responses

- `400` — Bad Request
- `401` — 401
- `403` — 403
- `404` — 404

---

[API](https://skmtc.net/loyaltylion/apis/loyaltylion-admin-api.md) · [All operations](https://skmtc.net/loyaltylion/apis/loyaltylion-admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/loyaltylion/loyaltylion-admin-api/versions/4cfed13b45bc/schema)
