---
title: "Change the tier of a customer in BonifiQ"
method: POST
path: "/v1/pvt/Customer/{originalId}/changetier"
tags: ["Customer"]
---

# Change the tier of a customer in BonifiQ

`POST /v1/pvt/Customer/{originalId}/changetier`

This endpoint allows you to manually change the tier of a customer. The tier affects how the customer accrues points and which rewards are available to them.

## Some important remarks
- The `TierId` field is **required** and must match an existing tier configured in BonifiQ. If the tier does not exist, the API returns an error with the `Tier_NotFound` error code.
- If the customer already belongs to a tier, they will be **removed from the old tier** and assigned to the new one.
- If the customer does not exist, the API returns an error with the `Customer_NotFound` error code.
- This endpoint does **not** calculate tiers automatically based on points or history. It is a manual override.

## The GracePeriodInDays field
This optional field allows you to define a grace period (in days) for the tier change. 
This can be useful when promoting a customer temporarily or when a business rule requires the customer to stay in the tier for a limited time.

## The GracePeriodComments field
This optional field allows you to add a comment explaining the reason for the grace period. This information is internal-use only and will not be visible to the customer.

## Response
On success, the response contains the `CustomerId`, the new `TierId`, the `CurrentTierName`, and the `OldTierName` (if the customer was previously in a tier).

## Path parameters

- `originalId` string, required

## Request body

- ChangeTierCustomerRequest
  - `GracePeriodInDays` integer, nullable
  - `TierId` integer
  - `GracePeriodComments` string, nullable

## Response `200`

The updated tier information including old and new tier names, or an error response

- BaseExternalApiResponseOfBoolean — Standard response envelope used by the External API.
  - `ErrorMessage` string, nullable — Error message returned when the request fails validation or processing. For warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.
  - `ErrorCode` integer, nullable — Legacy numeric error code derived from internal API errors when available. This field is relevant only for error flows that use `ApiResponseErrorDescription`.
  - `Result` boolean — Business payload returned by the endpoint.
  - `Code` string, nullable — Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`. This field is available for success, warning and error outcomes.
  - `CodeName` string, nullable — Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.
  - `Severity` 0 | 1 | 2 — 0 = Success 1 = Warning 2 = Error
  - `HasWarning` boolean — Convenience flag that is `true` when `Severity` is `Warning`. Warnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors.
  - `HasError` boolean — Indicates whether the request failed and should be handled as an error response. This flag is reserved for real API errors; warnings must keep this property as `false`.

---

[API](https://skmtc.net/bonifiq/apis/bonifiq-private-apis.md) · [All operations](https://skmtc.net/bonifiq/apis/bonifiq-private-apis/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bonifiq/bonifiq-private-apis/revisions/1c29e55baf55/schema)
