---
title: "Bulk update customers"
method: PATCH
path: "/v1/customers"
tags: ["Customers"]
---

# Bulk update customers

`PATCH /v1/customers`

## Request

- Base URL: `https://api.finalpos.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.finalpos.com/v1/customers`
- Auth: API key in header `x-api-key`

Updates multiple customers in a single request. Each item must include an id and the fields to update. Returns per-item results.

## Request body

- BulkUpdateRequestDto
  - `items` BulkUpdateItemDto[], required: Array of items to update
    - `id` string, required: The ID of the item to update
    - `data` object, required: The data payload with fields to update
    - `clientRef` string: Client-provided reference key for correlating request items with response results
  - `options` BulkOptionsDto
    - `onError` 'continue' | 'abort': How to handle item-level failures. "continue" processes all items and reports per-item status. "abort" stops on the first failure.

## Response `200`

Bulk update completed. Each item in the results array indicates success or failure.

- object
  - `summary` BulkSummaryDto
    - `total` number, required: Total number of items in the bulk operation
    - `succeeded` number, required: Number of items that succeeded
    - `failed` number, required: Number of items that failed
    - `skipped` number: Number of items skipped (abort policy only)
  - `results` union[]
    - union
      - object
        - `index` number
        - `status` 'success'
        - `data` CustomerResponseDto
          - `id` string: Unique identifier for the Customer.
          - `createdAt` string, date-time: Timestamp when the Customer was created.
          - `updatedAt` string, date-time: Timestamp when the Customer was last updated.
          - `companyId` string: Company ID associated with the Customer.
          - `email` string: Email address of the Customer.
          - `firstName` string: First name of the Customer.
          - `lastName` string: Last name of the Customer.
          - `outletId` string: Outlet ID associated with the Customer.
          - `externalId` string: External ID associated with the Customer when synced from external source. If present, it will set fromFinal to true.
          - `source` string: Source of the customer.
          - `phone` string: Phone number of the Customer.
          - `totalSpent` number: Total amount spent by the Customer.
          - `lastAction` string, date-time: Timestamp when the Customer was last actioned.
          - `tags` string[]: Tags associated with the Customer.
          - `billing` AddressDto
            - `address1` string, required: Street address line 1
            - `city` string, required: City
            - `postCode` string, required: Postal/ZIP code
            - `country` string, required: Country
            - `state` string, required: State/Province
            - `address2` string: Street address line 2
            - `phone` string: Phone number
          - `shipping` AddressDto
            - `address1` string, required: Street address line 1
            - `city` string, required: City
            - `postCode` string, required: Postal/ZIP code
            - `country` string, required: Country
            - `state` string, required: State/Province
            - `address2` string: Street address line 2
            - `phone` string: Phone number
          - `metadata` MetadataDto[]: Metadata associated with the Customer.
            - `key` string, required: Key of the metadata entry.
            - `value` string, required: Value of the metadata entry.
            - `externalId` string: External ID associated with the metadata entry.
          - `notes` NoteDto[]: Notes associated with the Customer.
            - `message` string: Message of the Note.
        - `clientRef` string
      - BulkItemErrorResultDto
        - `index` number, required: Zero-based index of the item in the request array
        - `status` 'error', required: Result status
        - `error` BulkItemErrorDetail, required
          - `statusCode` number, required: HTTP-style status code for this item
          - `message` string, required: Error message
        - `clientRef` string: Client-provided reference key echoed back

## Other responses

- `400`: Bad request. The bulk request itself is invalid.

---

[API](https://skmtc.dev/finalpos/apis/final-pos-public-api.md) · [All operations](https://skmtc.dev/finalpos/apis/final-pos-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/finalpos/apis/final-pos-public-api/revisions/6a6842dcb479?raw)
