---
title: "Creates or updates a customer using the OriginalId provided in the request body."
method: POST
path: "/v1/pvt/Customer/upsert"
tags: ["Customer"]
---

# Creates or updates a customer using the OriginalId provided in the request body.

`POST /v1/pvt/Customer/upsert`

This endpoint performs an upsert operation for customer data.
            
## Matching rule
- Uses OriginalId as the unique key
- If the customer does not exist, it is created (Operation = created)
- If the customer already exists, it is updated (Operation = updated)
            
## Response
Returns customer data plus an Operation field with created or updated.

## Request body

- ExternalCreateCustomerRequest — Creater Customer body Request
  - `OriginalId` string — This is the Id in the client store.
  - `Name` string — Customer name.
  - `Email` string, nullable — Customer email.
  - `Phone` string, nullable — Customer Contact Phone.
  - `BirthdayDate` string, date-time, nullable — Customer Birthdate.
  - `SignupDate` string, date-time, nullable — Date when the customer made the register on client store.
  - `Document` string, nullable — Some document number from the customer, accepts any string.
  - `IsEnrolled` boolean — If true the customer is participating on the points plan from the store.
  - `EnrolledDate` string, date-time, nullable — Date when the customer made entered into the program. Use the OrderPlacementDate if not informed.

## Response `200`

Upsert result containing customer data and operation metadata.

- BaseExternalApiResponseOfUpsertCustomerResponse — 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` UpsertCustomerResponse
    - `OriginalId` string — This is the Id in the client store.
    - `PublicId` string, nullable — Bonifiq Plubic Id
    - `Name` string — Customer name.
    - `Email` string — Customer email.
    - `Phone` string, nullable — Customer Contact Phone.
    - `BirthdayDate` string, date-time, nullable — Customer Birthdate.
    - `SignupDate` string, date-time, nullable — Date when the customer made the register on client store.
    - `Document` string, nullable — Some document number from the customer, accepts any string.
    - `IsEnrolled` boolean — If true the customer is participating on the points plan from the store.
    - `ReferralURL` string, nullable — Customer`s Referral URL. Will be null if the Referral Objective is not active.
    - `WhatsappReferralUrl` string, nullable — Customer`s Referral URL for sharing in Whatsapp. Will be null if Referral Objective is not active
    - `CurrentTier` CustomerTierResponse
      - `Name` string
      - `Color` string
      - `IconUrl` string
    - `BalanceOfPoints` integer — Customer's current points balance
    - `BalanceCashback` number, nullable — Customer's current cashback balance (calculated from points). Will be null if cashback is not enabled.
    - `Operation` string — Indicates if the upsert operation created or updated the customer.
  - `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)
