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

# Cadastrar empresa emissora

> Cria o emissor (Issuer) que vai assinar os documentos fiscais deste CNPJ. Nasce em homologação (`ambienteFiscal: 2`) e sem certificado: emitir de verdade exige enviar o certificado A1 depois, em `POST /v1/companies/{id}/certificate`. CNPJ já cadastrado por OUTRO parceiro não sobrescreve: responde `409` e a saída é solicitar transferência em `POST /v1/companies/transfer-request`.



## OpenAPI

````yaml /openapi.json post /v1/companies
openapi: 3.1.0
info:
  title: EngineAPI - Motor Fiscal SaaS
  description: >-

    ## API de Emissão Fiscal B2B2B


    EngineAPI é uma plataforma SaaS para emissão de documentos fiscais
    eletrônicos brasileiros.


    ### Documentos Suportados

    - **NF-e** (Modelo 55) - Nota Fiscal Eletrônica

    - **NFC-e** (Modelo 65) - Nota Fiscal de Consumidor Eletrônica

    - **NFS-e** - Nota Fiscal de Serviços Eletrônica


    > CTe (57) e MDFe (58): roadmap sem data, fora da superfície pública.


    ### Autenticação

    Todas as rotas protegidas requerem:

    ```

    Authorization: Bearer <seu_token>    # JWT (painel web)

    x-api-key: ek_live_<sua_key>         # API Key (server-to-server)

    ```


    ### Rate Limits

    - **Por plano** (janela de 1 segundo): Dev 5 · Starter 20 · Growth 60 ·
    Scale 200 req/s

    - Headers `X-RateLimit-Limit`/`Remaining`/`Reset` em toda resposta;
    `Retry-After` no 429


    ### Idempotency

    POSTs aceitam header `Idempotency-Key` para prevenir duplicatas:

    ```

    Idempotency-Key: <uuid-único-por-operação>

    ```


    ### Ambientes

    - **Homologação**: Para testes (SEFAZ sandbox)

    - **Produção**: Emissões reais


    ### Suporte

    - Email: suporte@engineapi.com.br

    - Docs: https://docs.engineapi.com.br
        
  version: 2.1.0
  contact:
    name: engineAPI
    url: https://engineapi.com.br
    email: suporte@engineapi.com.br
  license:
    name: Proprietário
    url: https://engineapi.com.br/legal/termos
servers:
  - url: https://api.engineapi.com.br
    description: Produção
security: []
tags:
  - name: Cérebro Fiscal
    description: >-
      Classificação fiscal assistida + tributação IBS/CBS (tier 80%, apoio à
      decisão)
  - name: Autenticação
    description: Login, registro de conta e API Keys
  - name: Empresas
    description: Gestão de empresas emitentes (Issuers)
  - name: NFe
    description: Nota Fiscal Eletrônica (Modelo 55)
  - name: NFCe
    description: Nota Fiscal de Consumidor (Modelo 65)
  - name: NFSe
    description: Nota Fiscal de Serviços Eletrônica
  - name: Consultas
    description: Consulta de CNPJ e CPF
  - name: Webhooks
    description: Configuração, entregas e reenvio de eventos assíncronos
  - name: Status
    description: Status público por serviço e canário de deploy
  - name: Saúde
    description: Liveness/readiness do processo e sanidade de autenticação
paths:
  /v1/companies:
    post:
      tags:
        - Empresas
      summary: Cadastrar empresa emissora
      description: >-
        Cria o emissor (Issuer) que vai assinar os documentos fiscais deste
        CNPJ. Nasce em homologação (`ambienteFiscal: 2`) e sem certificado:
        emitir de verdade exige enviar o certificado A1 depois, em `POST
        /v1/companies/{id}/certificate`. CNPJ já cadastrado por OUTRO parceiro
        não sobrescreve: responde `409` e a saída é solicitar transferência em
        `POST /v1/companies/transfer-request`.
      operationId: create
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCompanyDto'
      responses:
        '201':
          description: Empresa cadastrada
        '400':
          description: CNPJ ou dados cadastrais inválidos
        '409':
          description: CNPJ já é emissor de outro parceiro
      security:
        - JWT-auth: []
components:
  schemas:
    CreateCompanyDto:
      type: object
      properties:
        cnpj:
          type: string
        name:
          type: string
          minLength: 1
          maxLength: 150
        tradeName:
          type: string
          maxLength: 150
        ie:
          type: string
        im:
          type: string
        crt:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        email:
          type: string
          format: email
          pattern: >-
            ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
        phone:
          type: string
        cep:
          type: string
        address:
          type: string
          maxLength: 150
        number:
          type: string
        complement:
          type: string
        neighborhood:
          type: string
          maxLength: 150
        city:
          type: string
          maxLength: 150
        state:
          type: string
        ibgeCode:
          type: string
        csc:
          type: string
        cscId:
          type: string
        cnae:
          type: string
        segmento:
          type: string
        mei:
          type: boolean
        fiscalBrainEnabled:
          type: boolean
        cTribNacPadrao:
          type: string
          pattern: ^\d{6}$
        servicoPadraoLc116:
          type: string
          pattern: ^\d{2}\.\d{2}$
        pTotTribSNPadrao:
          type: number
          exclusiveMinimum: 0
          maximum: 100
      required:
        - cnpj
        - name
  securitySchemes:
    JWT-auth:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: Token JWT obtido via /v1/auth/login

````