← InícioFleetPay / API

Repassar o CT-e à subcontratada (ponte da subcontratação)

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

POST/fiscal/cte/{cte_uuid}/subcontratacao
declareCteSubcontractingBase 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.

A contratante declara a quem subcontratou um CT-e que ela emitiu pela FleetPay — e o XML autorizado dele cai na caixa fiscal da subcontratada, exatamente como se ela o tivesse entregue em POST /fiscal/cte-subcontratacao.

Sem isto, com as duas empresas na FleetPay, o ERP da subcontratada precisava reenviar um documento que a plataforma já tinha; esquecer esse passo fazia o lote de contra-CT-e responder "CT-e original não recebido".

  • Só CT-e autorizado (cte_nao_autorizado caso contrário); o XML repassado é o arquivado na autorização, byte a byte.
  • A subcontratada precisa ser uma transportadora cliente FleetPay (subcontratada_nao_encontrada, subcontratada_nao_transportadora) e não pode ser a própria empresa (subcontratada_igual_contratante).
  • A caixa de destino é a do ambiente do CT-e; a recepção é idempotente pela chave: 201 na primeira entrega, 200 nas seguintes.
  • Nada financeiro acontece aqui; a partir daí a subcontratada segue o fluxo normal (POST /fiscal/cte/contra ou POST /fiscal/cte-subcontratacao/lote).

Depende do release que leva o PR core#1459.

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

cte_uuidpath · stringObrigatório

UUID público do CT-e.

Restrições
{
  "type": "string",
  "format": "uuid"
}

Corpo da Requisição

Obrigatório

application/json

subcontratadaobjectObrigatório
observacaostring | nullOpcional
maxLength255

Respostas

200 Resposta HTTP

Reenvio — a caixa da subcontratada já tinha o documento (received_count somado).

201 Resposta HTTP

Primeira entrega — o CT-e entrou na caixa da subcontratada.

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.

404 Resposta HTTP

Recurso não encontrado no tenant autenticado.

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.

503 Resposta HTTP

XML arquivado indisponível agora (xml_indisponivel) — tente novamente.

application/json

Definição Completa da Operação
{
  "tags": [
    "CT-e de subcontratação"
  ],
  "summary": "Repassar o CT-e à subcontratada (ponte da subcontratação)",
  "operationId": "declareCteSubcontracting",
  "description": "A **contratante** declara a quem subcontratou um CT-e que ela emitiu pela FleetPay — e o\nXML autorizado dele cai na caixa fiscal da **subcontratada**, exatamente como se ela o\ntivesse entregue em `POST /fiscal/cte-subcontratacao`.\n\nSem isto, com as duas empresas na FleetPay, o ERP da subcontratada precisava reenviar um\ndocumento que a plataforma já tinha; esquecer esse passo fazia o lote de contra-CT-e\nresponder \"CT-e original não recebido\".\n\n- Só CT-e **autorizado** (`cte_nao_autorizado` caso contrário); o XML repassado é o\n  arquivado na autorização, byte a byte.\n- A subcontratada precisa ser uma transportadora cliente FleetPay\n  (`subcontratada_nao_encontrada`, `subcontratada_nao_transportadora`) e não pode ser a\n  própria empresa (`subcontratada_igual_contratante`).\n- A caixa de destino é a do **ambiente do CT-e**; a recepção é idempotente pela chave:\n  `201` na primeira entrega, `200` nas seguintes.\n- Nada financeiro acontece aqui; a partir daí a subcontratada segue o fluxo normal\n  (`POST /fiscal/cte/contra` ou `POST /fiscal/cte-subcontratacao/lote`).\n\nDepende do release que leva o PR core#1459.\n",
  "parameters": [
    {
      "$ref": "#/components/parameters/CteUuid"
    }
  ],
  "requestBody": {
    "required": true,
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "required": [
            "subcontratada"
          ],
          "properties": {
            "subcontratada": {
              "type": "object",
              "required": [
                "cnpj"
              ],
              "properties": {
                "cnpj": {
                  "type": "string",
                  "description": "CNPJ da transportadora subcontratada (com ou sem máscara; aceita CNPJ alfanumérico)."
                }
              }
            },
            "observacao": {
              "type": [
                "string",
                "null"
              ],
              "maxLength": 255
            }
          }
        }
      }
    }
  },
  "responses": {
    "200": {
      "description": "Reenvio — a caixa da subcontratada já tinha o documento (`received_count` somado)."
    },
    "201": {
      "description": "Primeira entrega — o CT-e entrou na caixa da subcontratada.",
      "headers": {
        "X-Request-Id": {
          "$ref": "#/components/headers/RequestId"
        }
      },
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "data": {
                "type": "object",
                "properties": {
                  "cte": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "access_key": {
                        "type": "string"
                      }
                    }
                  },
                  "subcontratada": {
                    "type": "object",
                    "properties": {
                      "cnpj": {
                        "type": "string"
                      },
                      "nome": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    }
                  },
                  "recebimento": {
                    "$ref": "#/components/schemas/InboundCteReceipt"
                  }
                }
              },
              "environment": {
                "$ref": "#/components/schemas/Environment"
              }
            }
          }
        }
      }
    },
    "401": {
      "$ref": "#/components/responses/Unauthorized"
    },
    "403": {
      "$ref": "#/components/responses/Forbidden"
    },
    "404": {
      "$ref": "#/components/responses/NotFound"
    },
    "422": {
      "$ref": "#/components/responses/ValidationOrBusinessRuleFailed"
    },
    "429": {
      "$ref": "#/components/responses/RateLimited"
    },
    "503": {
      "description": "XML arquivado indisponível agora (`xml_indisponivel`) — tente novamente.",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ErrorEnvelope"
          }
        }
      }
    }
  },
  "method": "POST",
  "path": "/fiscal/cte/{cte_uuid}/subcontratacao"
}