← InicioFleetPay / API

Transferir el CT-e al subcontratista

Parámetros, estructura de datos y respuestas del contrato versionado.

POST/fiscal/cte/{cte_uuid}/subcontratacao
declareCteSubcontractingBase de Pruebas: https://api.fleetpay.site/v1

Las descripciones técnicas se traducen del contrato versionado. Se conservan los identificadores y el JSON originales; se omiten los ejemplos de datos.

La contratante declara a quién subcontrató un CT-e que emitió mediante FleetPay, y su XML autorizado llega a la bandeja fiscal de la subcontratada, exactamente como si esta lo hubiera enviado mediante POST /fiscal/cte-subcontratacao.

Sin este paso, aunque ambas empresas estuvieran en FleetPay, el ERP de la subcontratada tenía que reenviar un documento que la plataforma ya poseía; omitirlo provocaba que el lote de contra-CT-e respondiera "CT-e original não recebido" (CT-e original no recibido).

  • Solo se admite un CT-e autorizado (cte_nao_autorizado en caso contrario); el XML transferido es, byte por byte, el archivado en la autorización.
  • La subcontratada debe ser una transportista cliente de FleetPay (subcontratada_nao_encontrada, subcontratada_nao_transportadora) y no puede ser la misma empresa (subcontratada_igual_contratante).
  • La bandeja de destino corresponde al entorno del CT-e; la recepción es idempotente por clave: 201 en la primera entrega y 200 en las siguientes.
  • Aquí no ocurre ninguna operación financiera; después, la subcontratada sigue el flujo habitual (POST /fiscal/cte/contra o POST /fiscal/cte-subcontratacao/lote).

Depende de la versión que incluya el PR core#1459.

Autenticación

[
  {
    "oauth2": []
  },
  {
    "chaveApi": []
  }
]
La disponibilidad depende del entorno, los permisos habilitados y el proveedor. Esta referencia no ejecuta solicitudes ni recibe credenciales.

Parámetros

cte_uuidpath · stringObligatorio

UUID público del CT-e.

Restricciones
{
  "type": "string",
  "format": "uuid"
}

Cuerpo de la Solicitud

Obligatorio

application/json

subcontratadaobjectObligatorio
observacaostring | nullOpcional
maxLength255

Respuestas

200 Respuesta HTTP

Reenvío: la bandeja de la subcontratada ya contenía el documento (received_count incrementado).

201 Respuesta HTTP

Primera entrega: el CT-e entró en la bandeja de la subcontratada.

application/json

Headers

X-Request-Id

Identificador de correlación de la llamada.

401 Respuesta HTTP

Clave de API FleetPay ausente o no válida.

application/json

Headers

X-Request-Id

Identificador de correlación de la llamada.

403 Respuesta HTTP

Ámbito fiscal deshabilitado en la clave, o clave sin transportista activo.

application/json

Headers

X-Request-Id

Identificador de correlación de la llamada.

404 Respuesta HTTP

Recurso no encontrado en el tenant autenticado.

application/json

Headers

X-Request-Id

Identificador de correlación de la llamada.

422 Respuesta HTTP

Payload inválido, requisito pendiente o regla de negocio.

application/json

Headers

X-Request-Id

Identificador de correlación de la llamada.

429 Respuesta HTTP

Límite por transportista excedido.

application/json

Headers

X-Request-Id

Identificador de correlación de la llamada.

Retry-After

Segundos hasta un nuevo intento.

503 Respuesta HTTP

XML archivado no disponible en este momento (xml_indisponivel): inténtalo de nuevo.

application/json

Definición Completa de la Operación
{
  "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"
}