> ## Documentation Index
> Fetch the complete documentation index at: https://docs.repediu.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Atualizar clientes

> Atualize nome, telefone, CPF, e-mail ou data de nascimento de até 500 clientes por requisição

Atualiza dados cadastrais de clientes já conhecidos pela Repediu. Suporta até **500 clientes por requisição**.

<Warning>
  O match do cliente é feito **somente pelo `id`**, contra vendas já recebidas para a mesma empresa via [Enviar venda](/envio-de-dados/enviar-venda) — não por `documentNumber` (CPF) ou `phone`. Se nenhuma venda com aquele `id` de cliente existir para a empresa, o registro é reportado como "Customer not found" e o update daquele item é ignorado (os demais itens do lote seguem normalmente).
</Warning>

<Info>
  Os campos são atualizados por **merge**: um campo enviado sobrescreve o valor existente; um campo omitido (ou `null`) mantém o valor que já estava salvo. Envie apenas os campos que mudaram.
</Info>

## Erros

| HTTP | Situação |
| - | - |
| `400` | Lista vazia |
| `400` | Mais de 500 itens |
| `400` | Um ou mais clientes não encontrados — vem em `error.errorDetails` como uma lista de `{ExternalCode, Message: "Customer not found", Success: false}` |

<Card title="Avaliação de pedido" icon="star" href="/envio-de-dados/avaliacao-pedido">
  Envie a nota da pesquisa de satisfação de um pedido.
</Card>


## OpenAPI

````yaml openapi-envio-de-dados.yaml PUT /customers
openapi: 3.0.1
info:
  title: Repediu — API de Envio de Dados
  description: >-
    API para o parceiro ENVIAR dados para a Repediu (vendas, clientes,
    avaliações e cashback) — sentido inverso ao da API Open Delivery, onde o
    parceiro LÊ dados da Repediu. Autenticação própria via
    clientId/clientSecret, sem relação com o token client_credentials do Open
    Delivery.
  version: v1
servers:
  - url: https://public-api.repediu.com.br
    description: Produção
security:
  - Bearer: []
paths:
  /customers:
    put:
      tags:
        - Clientes
      summary: Atualizar clientes
      description: >-
        Atualiza até 500 clientes por requisição. O match é feito pelo id do
        cliente contra vendas já recebidas para a mesma empresa — não por
        documentNumber ou phone. Campos enviados sobrescrevem os existentes só
        quando não nulos (merge).
      operationId: updateManyCustomers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              maxItems: 500
              items:
                $ref: '#/components/schemas/CustomerRequest'
            example:
              - id: '242150'
                name: Elton Monteiro
                email: elton@repediu.com.br
              - id: '151233'
                name: João Cesar Coelho
                documentNumber: 312.721.381-60
                phone:
                  number: '11999998880'
                  extension: '+55'
                email: joao.souza.teste@gmail.com
                birthDate: '1985-04-28'
      responses:
        '200':
          description: Clientes atualizados com sucesso.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StringEnvelope'
              example:
                result: Customers updated successfully
                error: null
                timeGenerated: '2025-09-26T17:36:38.5881764Z'
                success: true
        '400':
          description: >-
            Lista vazia, mais de 500 itens, ou um ou mais clientes não
            encontrados (nenhuma venda com aquele id para a empresa).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StringEnvelope'
              example:
                result: null
                error:
                  message: One or more errors occurred
                  notifications: null
                  errorDetails:
                    - ExternalCode: '999999'
                      Message: Customer not found
                      Success: false
                timeGenerated: '2025-09-26T17:36:38.5881764Z'
                success: false
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  schemas:
    CustomerRequest:
      type: object
      required:
        - id
      properties:
        id:
          type: string
        name:
          type: string
        documentNumber:
          type: string
        phone:
          $ref: '#/components/schemas/PhoneNumberRequest'
        email:
          type: string
        birthDate:
          type: string
          format: date
    StringEnvelope:
      type: object
      properties:
        result:
          type: string
          nullable: true
        error:
          $ref: '#/components/schemas/EnvelopeError'
        timeGenerated:
          type: string
          format: date-time
        success:
          type: boolean
    PhoneNumberRequest:
      type: object
      properties:
        number:
          type: string
        extension:
          type: string
          default: '+55'
    EnvelopeError:
      type: object
      nullable: true
      properties:
        message:
          type: string
        notifications:
          type: array
          nullable: true
          items:
            type: object
            properties:
              key:
                type: string
              message:
                type: string
        errorDetails:
          nullable: true
          description: Formato livre — string, objeto ou array dependendo do erro.
  responses:
    TooManyRequests:
      description: >-
        Mais de 60 requisições no último minuto para este token. Sem fila — o
        excedente é rejeitado na hora.
      content:
        application/json:
          schema:
            type: string
          example: To many requests, try again in 1 minutes.
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Token emitido por POST /authentication/users/accessToken. Envie no
        header Authorization como `Bearer <token>`. Válido por 6 horas.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.