← InícioFleetPay / API

Receber um CT-e de terceiro

Parâmetros, estrutura de dados e respostas do contrato versionado.

POST/fiscal/cte-subcontratacao
receiveInboundCteBase de Homologação: https://api.fleetpay.site/v1

Descrições técnicas preservadas do contrato versionado. Exemplos de dados foram omitidos da cópia pública.

Entrega à FleetPay o XML de um CT-e emitido por outra empresa — tipicamente o da transportadora contratante, que dá origem ao seu contra-CT-e de subcontratação.

Por que existe

As demais formas de recepção dependem de um terceiro entre você e a plataforma. Aqui é o seu sistema que entrega o documento, e ele passa a existir na FleetPay sem intermediário — inclusive quando nenhuma recepção automática está contratada.

É também o que destrava POST /fiscal/cte/contra: aquele endpoint precisa do XML do CT-e original para montar o contra-CT-e, e passa a encontrá-lo aqui.

Como enviar

Duas formas, escolha uma:

  • application/json com o campo xml — o XML cru ou em base64. A codificação é detectada pelo conteúdo; não há flag a acertar.
  • multipart/form-data com o campo arquivo.

O documento pode ser o cteProc (com protocolo) ou o CTe cru. Limite de 2 MB.

Reenviar é seguro

A operação é idempotente pela chave de acesso. O primeiro envio responde 201; os seguintes respondem 200 com o mesmo recurso e received_count somado. Retry de rede, reprocessamento noturno e clique duplo não criam registro duplicado nem erro.

Se o reenvio trouxer um XML diferente do arquivado — o caso comum é mandar o CTe e depois o cteProc com o protocolo —, o conteúdo é substituído pelo mais recente e content_updated vem true.

Receber não é emitir

Registrar a chegada não gera documento fiscal nenhum. O contra-CT-e continua nascendo em POST /fiscal/cte/contra, com motorista, veículo e o preço do seu trecho — nenhum dos três está no XML da contratante.

Um CT-e que não admite contra-CT-e (por exemplo, um que a sua própria empresa emitiu) é recebido do mesmo jeito: o campo carrier_role nomeia o seu papel e allows_counter_cte responde a pergunta prática, sem que você precise reimplementar a regra.

Autenticação

[
  {
    "oauth2": []
  },
  {
    "chaveApi": []
  }
]
A disponibilidade depende do ambiente, dos escopos habilitados e do provedor. Esta referência não executa chamadas nem recebe credenciais.

Parâmetros

Nenhum parâmetro declarado nesta operação.

Corpo da Requisição

Obrigatório

application/json

xmlstringObrigatório

O XML do CT-e, cru ou em base64. Aceita cteProc (com protocolo) ou CTe.

maxLength2097152

multipart/form-data

arquivostring · binaryObrigatório

XML do CT-e, até 2 MB.

Respostas

200 Resposta HTTP

Documento já conhecido. A entrega é idempotente: o mesmo recurso volta, com received_count somado.

application/json

Headers

X-Request-Id

Identificador de correlação da chamada.

201 Resposta HTTP

Primeira chegada deste documento; o recurso foi criado.

application/json

Headers

X-Request-Id

Identificador de correlação da chamada.

400 Resposta HTTP

Payload inválido.

application/json

Headers

X-Request-Id

Identificador de correlação da chamada.

401 Resposta HTTP

Chave de API FleetPay ausente ou inválida.

application/json

Headers

X-Request-Id

Identificador de correlação da chamada.

403 Resposta HTTP

Escopo fiscal desabilitado na chave, ou chave sem transportadora ativa.

application/json

Headers

X-Request-Id

Identificador de correlação da chamada.

422 Resposta HTTP

Payload inválido, pendência ou regra de negócio.

application/json

Headers

X-Request-Id

Identificador de correlação da chamada.

429 Resposta HTTP

Limite por transportadora excedido.

application/json

Headers

X-Request-Id

Identificador de correlação da chamada.

Retry-After

Segundos até uma nova tentativa.

500 Resposta HTTP

Falha interna sem detalhes de integrações operacionais.

application/json

Headers

X-Request-Id

Identificador de correlação da chamada.

Definição Completa da Operação
{
  "tags": [
    "CT-e de subcontratação"
  ],
  "summary": "Receber um CT-e de terceiro",
  "description": "Entrega à FleetPay o XML de um CT-e emitido por outra empresa — tipicamente o da\ntransportadora **contratante**, que dá origem ao seu contra-CT-e de subcontratação.\n\n## Por que existe\n\nAs demais formas de recepção dependem de um terceiro entre você e a plataforma. Aqui é o\nseu sistema que entrega o documento, e ele passa a existir na FleetPay sem intermediário\n— inclusive quando nenhuma recepção automática está contratada.\n\nÉ também o que destrava `POST /fiscal/cte/contra`: aquele endpoint precisa do XML do CT-e\noriginal para montar o contra-CT-e, e passa a encontrá-lo aqui.\n\n## Como enviar\n\nDuas formas, escolha uma:\n\n- `application/json` com o campo `xml` — o XML cru ou em **base64**. A codificação é\n  detectada pelo conteúdo; não há flag a acertar.\n- `multipart/form-data` com o campo `arquivo`.\n\nO documento pode ser o `cteProc` (com protocolo) ou o `CTe` cru. Limite de 2 MB.\n\n## Reenviar é seguro\n\nA operação é **idempotente pela chave de acesso**. O primeiro envio responde `201`; os\nseguintes respondem `200` com o mesmo recurso e `received_count` somado. Retry de rede,\nreprocessamento noturno e clique duplo não criam registro duplicado nem erro.\n\nSe o reenvio trouxer um XML diferente do arquivado — o caso comum é mandar o `CTe` e\ndepois o `cteProc` com o protocolo —, o conteúdo é substituído pelo mais recente e\n`content_updated` vem `true`.\n\n## Receber não é emitir\n\nRegistrar a chegada não gera documento fiscal nenhum. O contra-CT-e continua nascendo em\n`POST /fiscal/cte/contra`, com motorista, veículo e o preço do **seu** trecho — nenhum dos\ntrês está no XML da contratante.\n\nUm CT-e que não admite contra-CT-e (por exemplo, um que a sua própria empresa emitiu) é\nrecebido do mesmo jeito: o campo `carrier_role` nomeia o seu papel e `allows_counter_cte`\nresponde a pergunta prática, sem que você precise reimplementar a regra.\n",
  "operationId": "receiveInboundCte",
  "requestBody": {
    "required": true,
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/InboundCteInput"
        }
      },
      "multipart/form-data": {
        "schema": {
          "type": "object",
          "required": [
            "arquivo"
          ],
          "properties": {
            "arquivo": {
              "type": "string",
              "format": "binary",
              "description": "XML do CT-e, até 2 MB."
            }
          }
        }
      }
    }
  },
  "responses": {
    "200": {
      "$ref": "#/components/responses/InboundCteReceivedAgain"
    },
    "201": {
      "$ref": "#/components/responses/InboundCteReceived"
    },
    "400": {
      "$ref": "#/components/responses/ValidationFailed"
    },
    "401": {
      "$ref": "#/components/responses/Unauthorized"
    },
    "403": {
      "$ref": "#/components/responses/Forbidden"
    },
    "422": {
      "$ref": "#/components/responses/ValidationOrBusinessRuleFailed"
    },
    "429": {
      "$ref": "#/components/responses/RateLimited"
    },
    "500": {
      "$ref": "#/components/responses/InternalError"
    }
  },
  "method": "POST",
  "path": "/fiscal/cte-subcontratacao",
  "parameters": []
}