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

# Inserir Faturas

> Cria uma ou mais faturas. Aceita objeto único (retorna 201) ou array (retorna 200/207/422). O cliente do `codigo` deve existir (senão 404). Títulos duplicados são rejeitados com 409.



## OpenAPI

````yaml POST /invoices
openapi: 3.0.0
info:
  title: API Corp ERP
  version: 1.1.0
  description: >-
    API para gerenciamento de clientes e faturas no ERP Corp.


    **Autenticação:** envie a API key no header `x-api-key` (ou `Authorization:
    Bearer <apikey>`). Cada chave possui escopos (`clients:read`,
    `clients:write`, `invoices:read`, `invoices:write`) e pode ter data de
    expiração.


    **Paginação:** os endpoints GET são paginados via `page` (1-based) e `limit`
    (default 50, máximo 100). A resposta traz `count`, `page`, `limit` e
    `total_pages`.


    **Limites:** até 1000 registros por requisição POST (em lote); corpo de até
    8 MB; até 120 requisições por minuto por chave (resposta 429 com
    `Retry-After`). Uma importação em lote conta como 1 requisição.
servers:
  - url: https://api-corp.usight.com.br
    description: Produção
  - url: https://api-corp-sandbox.usight.com.br
    description: Sandbox (homologação)
security:
  - ApiKeyAuth: []
paths:
  /invoices:
    post:
      tags:
        - Faturas
      summary: Inserir Faturas
      description: >-
        Cria uma ou mais faturas. Aceita objeto único (retorna 201) ou array
        (retorna 200/207/422). O cliente do `codigo` deve existir (senão 404).
        Títulos duplicados são rejeitados com 409.
      operationId: postFaturas
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/FaturaInput'
                - type: array
                  items:
                    $ref: '#/components/schemas/FaturaInput'
            examples:
              array:
                summary: Array de faturas
                value:
                  - codigo: '001'
                    titulo: NF-2025-001
                    vencimento: '2025-07-01'
                    qtd_consultas: 120
                    valor: 1500
                    banco: BANCO DO BRASIL
              objeto_unico:
                summary: Objeto único
                value:
                  codigo: '001'
                  titulo: NF-2025-001
                  vencimento: '2025-07-01'
                  qtd_consultas: 120
                  valor: 1500
                  banco: BANCO DO BRASIL
      responses:
        '200':
          description: Lote inteiramente bem-sucedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoteSuccess'
        '201':
          description: Fatura criada com sucesso (objeto único)
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/FaturaOutput'
        '207':
          description: Lote parcial — alguns itens falharam
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoteSuccess'
        '400':
          description: >-
            Requisição inválida — JSON malformado, erro de validação ou lote
            acima de 1000 registros
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Não autorizado — API key ausente, inválida, revogada ou expirada
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Sem permissão — a API key não possui o escopo necessário para esta
            operação
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Cliente não encontrado para o código informado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflito — título de fatura já existe
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '413':
          description: Payload muito grande — corpo da requisição excede 8 MB
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Muitas requisições — limite por minuto excedido. Veja o header
            `Retry-After`.
          headers:
            Retry-After:
              description: Segundos a aguardar antes de repetir a requisição
              schema:
                type: integer
                example: 60
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    FaturaInput:
      type: object
      required:
        - codigo
        - titulo
        - vencimento
        - qtd_consultas
        - valor
        - banco
      properties:
        codigo:
          type: string
          description: Código de acesso da empresa — deve ser cadastrado em /clients-api
          example: '001'
        titulo:
          type: string
          description: Identificador único da fatura
          example: NF-2025-001
        vencimento:
          type: string
          description: Data de vencimento. Aceita YYYY-MM-DD ou DD/MM/AAAA
          example: '2025-07-01'
        qtd_consultas:
          type: integer
          description: Quantidade de consultas realizadas
          example: 120
        valor:
          type: number
          description: Valor da fatura. Aceita 1500.00 ou '1.500,00'
          example: 1500
        banco:
          type: string
          description: Banco emissor
          enum:
            - BANCO DO BRASIL
            - BRADESCO
            - CONFIRME BB
            - CREDILINK
          example: BANCO DO BRASIL
    LoteSuccess:
      type: object
      properties:
        success:
          type: integer
          example: 2
        errors:
          type: array
          items:
            type: object
            properties:
              titulo:
                type: string
              codigo:
                type: string
              error:
                type: string
          example: []
    FaturaOutput:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        cont_cd_acesso:
          type: string
          example: '001'
        titulo:
          type: string
          example: NF-2025-001
        vencimento:
          type: string
          example: '2025-07-01'
        valor_bruto:
          type: number
          example: 1500
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          example: Cliente não cadastrado para o código '001'.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        `Apikey` fornecida pelo Corp ERP. Também aceita `Authorization: Bearer
        <apikey>`.

````