O serviço de emissão de CT-e é responsável por realizar a validação dos dados do CT-e enviados de acordo com os tipos de dados definidos pelos schemas XMLs da Sefaz e realizar o envio do documento para processamento no WebService do Portal da Secretaria da Fazenda.
O retorno deste serviço contém as informações de recebimento do CT-e pela Sefaz ou a lista de erros em caso de erros durante o processamento.
Devido ao processo de autorização de um CT-e na Sefaz ser realizado através da requisição de diversos serviços assíncronos e ao tempo mínimo exigido pela Sefaz de 15 segundos de aguardo entre o envio do CT-e e a Consulta de Situação, este método retorna apenas a confirmação de recebimento do CT-e pela Sefaz ou as mensagens de erro caso alguma informação não passe pela validação contra o schema XML. Para saber se o CT-e foi Autorizado com sucesso ou não, é necessário realizar a consulta através do método de Status de Processamento do CT-e.
Campos preenchidos automaticamente pela API
A lista abaixo apresenta os campos e atributos do layout de emissão que serão preenchidos automaticamente pela API caso não sejam enviados:
- Id (atributo da tag infNFe)
- cDV
- dhCont
- xJust
URL
Produção CT-e 3.00: POST https://cte.ns.eti.br/cte/issue
Produção CT-e OS: POST https://cte.ns.eti.br/cte/issueos
Dados de entrada
Os dados do CT-e para o método de emissão podem ser enviados em JSON ou em TXT.
Envio de dados em formato JSON
Para envio dos dados em JSON do Content-Type da requisição deverá ser definido como application/json.
X-AUTH-TOKEN | Token de acesso do usuário |
---|---|
CTe | Dados genéricos do CT-e (conforme Manual de Orientações do Contribuinte da Sefaz) |
infModal | Dados específicos do modal do CT-e (conforme Manual de Orientações do Contribuinte da Sefaz) |
Clicando no arquivo abaixo é possível fazer o download de um exemplo completo de CT-e no formato JSON:
Envio de dados em formato XML
Para envio dos dados em XML o Content-Type da requisição deverá ser definido como application/xml e o X-AUTH-TOKEN deverá ser enviado no cabeçalho HTTP.
No envio em formato XML o corpo da requisição deverá conter o conteúdo do XML com as informações do CT-e. Esse conteúdo deverá ser gerado a partir do layout do Manual de Orientações do Contribuinte da Sefaz.
Clicando no arquivo abaixo é possível fazer o download de um exemplo completo de CT-e no formato XML:
Envio de dados em formato TXT
Para envio dos dados em TXT do Content-Type da requisição deverá ser definido como text/plain;charset=utf-8.
No envio em formato TXT o corpo da requisição deverá conter o conteúdo do TXT com as informações do CT-e. Esse conteúdo deverá ser gerado a partir do layout do TXT de emissão do integrador local da News Systems.
Clicando no arquivo abaixo é possível fazer o download de um exemplo completo de CT-e no formato TXT:
Exemplo de requisição
Requisição de emissão de CT-e em JSON
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"X-AUTH-TOKEN":"...",
"CTe":{...},
"infModal":{...}
}' \
https://cte.ns.eti.br/cte/issue
Requisição de emissão de CT-e em TXT
curl -X POST \
-H "Content-Type: text/plain" \
-d 'CONHECIMENTO|1| \
A|3.00|CTe|' \
https://cte.ns.eti.br/cte/issue
Dados retornados
Campo | Descrição | Tipo | Ocorrência | Grupo-Pai | Observação |
---|---|---|---|---|---|
status | Código de status do processamento | N | 1-1 | ||
motivo | Descrição literal do status de processamento | A | 1-1 | ||
chCTe | Chave de acesso do CT-e | N | 0-1 | Somente em status = 200 | |
nsNRec | Número do recibo pela API NS CT-e | N | 0-1 | Somente em status = 200, -6 e -7 | |
erros | Array contendo a lista de erros durante a validação das informações do CT-e de acordo com o tipo de dados | Array | 0-1 | Somente em status = -4 | |
erro | Objeto contendo informações sobre o erro de processamento | O | 0-1 | Somente em status = -9 | |
cStat | Código do erro | N | 1-1 | erro | |
xMotivo | Descrição literal do erro | A | 1-1 | erro |
Exemplos de retorno
Retorno com sucesso
{
"status": 200,
"motivo": "CT-e enviado para Sefaz",
"chCTe": "43151212936129000195570000000009451000009454",
"nsNRec": "631034008736114"
}
Retorno com erro de dados
{
"status": -4,
"motivo": "Modal invalido de acordo com a validacao contra schema",
erros": [
"O campo 'dhEmi' foi preenchido incorretamente com o valor '2020-04-10T11:30:04'. Este campo deve ser preenchido com data no seguinte formato: 'AAAA-MM-DDThh:mm:ss TZD (Ex.: 2010- 08-19T13:00:15-03:00)'. (cvc-pattern-valid: Value '2017-11-10T11:30:04' is not facet-valid with respect to pattern '(((20(([02468][048])|([13579][26]))-02-29))|(20[0-9][0-9])-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30)))))T(20|21|22|23|[0-1]\\d):[0-5]\\d:[0-5]\\d([\\-,\\+](0[0-9]|10|11):00|([\\+](12):00))' for type '#AnonType_dhEmiideinfCteTCTe'.)"
]
}
Códigos de retorno
Código | Descrição |
---|---|
200 | CT-e enviado com sucesso |
-2 | CT-e não informado ou vazio ( ex: {} ) |
-3 | infModal não informado ou vazio ( ex: {} ) |
-4 | Erro de informações de acordo com o tipo de dados |
-5 | Schema de validação inexistente para a versão do CT-e informada em CTe/infCTe/versao |
-6 | Documento já recebido, porém ainda sem status de processamento; Por favor, consulte o status de processamento do nsNRec informado |
-7 | Documento já recebido e autorizado. Por favor consulte o status de processamento do nsNRec informado |
-8 | Não foi possível carregar os dados enviados |
-9 | Erro ao enviar os dados para a Sefaz. Verifique o objeto erro para maiores informações |
-10 | Erro ao obter url de qrcode |
-11 | Emissão com xml assinado deve conter as informações de qrcode |
-12 | Emissão com xml assinado deve ter o valor do verProc terminado em NS+API |