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

# Create customer

> Create a new customer

Creates a new customer associated with your merchant account. Customers can be linked to transactions for better reporting and payment pre-filling.


## OpenAPI

````yaml api-reference/openapi.json POST /v1/customers
openapi: 3.1.1
info:
  title: Safefy - Pix Gateway
  description: >

    ## Introducao


    **Seu parceiro financeiro de confianca.**


    Nos somos a Safefy, uma plataforma especializada em solucoes de pagamento
    PIX. Com um servico personalizado e focado nas suas necessidades, estamos
    prontos para apoiar sua empresa em cada etapa do processo.


    - Conte com o **PIX** como metodo de pagamento rapido, seguro e alinhado com
    as melhores praticas de conformidade e prevencao a fraudes.

    - Gerencie suas financas de forma simples e acessivel por meio de uma
    interface completa e intuitiva.

    - Nosso time de suporte esta sempre disponivel para oferecer um atendimento
    exclusivo e eficiente.


    ## Precisa de Ajuda?


    A equipe da Safefy quer garantir que sua integracao seja um sucesso. Se
    tiver duvidas ou precisar de suporte, nao hesite em nos contatar:


    **suporte@safefypay.com.br**


    ---


    ## Valores Monetarios


    Todos os valores monetarios sao representados em **centavos** (menor unidade
    da moeda).


    | Valor Real | Valor na API |

    |------------|--------------|

    | R$ 1,00    | 100          |

    | R$ 10,50   | 1050         |

    | R$ 100,00  | 10000        |
  contact:
    name: Suporte Safefy
    email: suporte@safefypay.com.br
  version: v1
servers:
  - url: https://api-payment.safefypay.com.br
    description: API de Pagamentos Safefy
security:
  - bearerAuth: []
tags:
  - name: Autenticacao
    description: Endpoints de autenticacao OAuth2
  - name: Transacoes
    description: Gerenciamento de transacoes PIX
  - name: Clientes
    description: Gerenciamento de clientes
  - name: Saldo
    description: Consulta de saldo e volumes
  - name: Saques
    description: Solicitacao e gerenciamento de saques
  - name: Disputas
    description: Consulta de disputas e envio de defesa
paths:
  /v1/customers:
    post:
      tags:
        - Clientes
      summary: Criar cliente
      description: Cria um novo cliente associado a sua organizacao.
      operationId: createCustomer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomerRequest'
            example:
              name: Joao Silva
              email: joao@email.com
              externalId: cliente_123
              document: '12345678900'
              documentType: CPF
              phone: '5511999998888'
              metadata: '{"plano": "premium"}'
      responses:
        '201':
          description: Cliente criado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCustomerResponse'
              example:
                data:
                  id: 550e8400-e29b-41d4-a716-446655440000
                  externalId: cliente_123
                  name: Joao Silva
                  email: joao@email.com
                  document: 123.456.789-00
                  documentType: CPF
                  phone: '5511999998888'
                  status: Active
                  metadata: '{"plano": "premium"}'
                  address: null
                  createdAt: '2025-01-15T15:00:00Z'
                message: Cliente criado com sucesso.
                error: null
        '400':
          description: Dados invalidos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseResponse'
              example:
                data: null
                message: null
                error:
                  message: O campo email e obrigatorio.
                  code: validation_error
        '401':
          description: Nao autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseResponse'
              example:
                data: null
                message: null
                error:
                  message: Token invalido ou expirado.
                  code: unauthorized
        '409':
          description: Cliente ja existe
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseResponse'
              example:
                data: null
                message: null
                error:
                  message: Ja existe um cliente com o externalId informado.
                  code: conflict
components:
  schemas:
    CreateCustomerRequest:
      type: object
      required:
        - name
        - email
      properties:
        name:
          type: string
          description: Nome completo do cliente
          example: Joao Silva
        email:
          type: string
          description: E-mail do cliente
          example: joao@email.com
        externalId:
          type: string
          nullable: true
          description: Seu identificador interno
          example: cliente_123
        document:
          type: string
          nullable: true
          description: CPF ou CNPJ (apenas numeros)
          example: '12345678900'
        documentType:
          type: string
          enum:
            - CPF
            - CNPJ
          nullable: true
          description: Tipo do documento
          example: CPF
        phone:
          type: string
          nullable: true
          description: >-
            Telefone com codigo do pais. Aceita com ou sem '+' no envio e e
            salvo apenas com digitos.
          example: '5511999998888'
        metadata:
          type: string
          nullable: true
          description: Metadados em JSON
          example: '{"plano": "premium"}'
    CreateCustomerResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CustomerData'
        message:
          type: string
          nullable: true
        error:
          $ref: '#/components/schemas/ApiErrorResponse'
    BaseResponse:
      type: object
      properties:
        data:
          nullable: true
        message:
          type: string
          nullable: true
        error:
          $ref: '#/components/schemas/ApiErrorResponse'
    CustomerData:
      type: object
      nullable: true
      properties:
        id:
          type: string
          format: uuid
          description: ID unico do cliente
          example: 550e8400-e29b-41d4-a716-446655440000
        externalId:
          type: string
          nullable: true
          description: ID externo informado
          example: cliente_123
        name:
          type: string
          description: Nome do cliente
          example: Joao Silva
        email:
          type: string
          description: E-mail do cliente
          example: joao@email.com
        document:
          type: string
          nullable: true
          description: CPF/CNPJ formatado
          example: 123.456.789-00
        documentType:
          type: string
          enum:
            - CPF
            - CNPJ
          nullable: true
          description: Tipo do documento
          example: CPF
        phone:
          type: string
          nullable: true
          description: Telefone com codigo do pais, salvo apenas com digitos
          example: '5511999998888'
        status:
          type: string
          enum:
            - Active
            - Inactive
          description: Status do cliente
          example: Active
        metadata:
          type: string
          nullable: true
          description: Metadados
          example: null
        address:
          $ref: '#/components/schemas/CustomerAddress'
        createdAt:
          type: string
          format: date-time
          description: Data de criacao
          example: '2025-01-15T15:00:00Z'
    ApiErrorResponse:
      type: object
      nullable: true
      properties:
        message:
          type: string
          description: Mensagem de erro
          example: Token invalido ou expirado.
        code:
          type: string
          description: Codigo do erro
          example: unauthorized
    CustomerAddress:
      type: object
      nullable: true
      properties:
        street:
          type: string
          nullable: true
          example: Rua das Flores
        number:
          type: string
          nullable: true
          example: '123'
        complement:
          type: string
          nullable: true
          example: Apto 45
        neighborhood:
          type: string
          nullable: true
          example: Centro
        city:
          type: string
          nullable: true
          example: Sao Paulo
        state:
          type: string
          nullable: true
          example: SP
        postalCode:
          type: string
          nullable: true
          example: 01234-567
        country:
          type: string
          nullable: true
          example: BR
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido via /v1/auth/token

````