Webhook de Envio CT-e Liberado V2
POST https://seusite.com/webhook/
Através deste Webhook, o Embarcador receberá notificações sobre os CT-es que foram Liberados na Auditoria V2.
Para isso, basta disponibilizar uma URL única que receberá as requisições com os dados listados abaixo.
Cada vez que ocorrer a atualização do status do CT-e para Liberado, o webhook enviará as informações para a URL cadastrada, de acordo com as configurações definidas no Dash FR.
Envio:
Parâmetros enviados no corpo da requisição:
| Nome | Descrição | Formato / Exemplo | Informado |
|---|---|---|---|
| status | Informa o status do CT-e. (Como o disparo do webhook acontece apenas quando é liberado, o status sempre estará como 'released') | String | * |
| status_log | Histórico geral do CT-e | JSON | Opcional |
| access_key | Chave de acesso do CT-e | String de 44 caracteres | * |
| action | Evento referente à operação de transporte ( 'I' , 'A' , 'E' ) | String | Opcional |
| additional_value | Outras taxas extras | String Númerica | Opcional |
| advalorem | Ad Valorem | String Númerica | Opcional |
| ademe | Valor da taxa de ADEME | String Númerica | Opcional |
| basis_calculation_icms | Base de cálculo do ICMS | String Númerica | Opcional |
| basis_calculation_iss | Base de cálculo do ISS | String Númerica | Opcional |
| cfop | Código de CFOP | Inteiro | Opcional |
| clearance_value | Valor taxa de despacho | String numérica | Opcional |
| collection_value | Valor da taxa de coleta | String Númerica | Opcional |
| consignee_corporate_name | Nome do consignatário | String | Opcional |
| consignee_register_number | CNPJ do consignatário | String de 14 caracteres | Opcional |
| cte_id | ID do CT-e Liberado | Inteiro | * |
| cubage | Cubagem da mercadoria | String Númerica | Opcional |
| cubed_weight | Peso cubado aferido | String Númerica | Opcional |
| difal_icms_destination | Percentual DIFAL destino | String Númerica | Opcional |
| difal_icms_origin | Percentual DIFAL origem | String Númerica | Opcional |
| difal_rate_destination | Alíquota DIFAL de origem | String Númerica | Opcional |
| difal_rate_origin | Alíquota DIFAL de origem | String Númerica | Opcional |
| file_type | Tipo do arquivo (XML, TXT) | String | Opcional |
| freight_value | Valor total do frete | String Númerica | Opcional |
| freight_value_volume_weight | Valor frete peso | String Númerica | Opcional |
| gris | Valor do GRIS | String Númerica | Opcional |
| gross_weight | Peso bruto da mercadoria | String Númerica | Opcional |
| hired_carrier_corporate_name | Nome da transportadora contratada | String | Opcional |
| hired_carrier_register_number | CNPJ da transportadora contratada | String | Opcional |
| hired_shipper_corporate_name | Nome do Embarcador que realizou a contratação | String | Opcional |
| hired_shipper_register_number | CNPJ do Embarcador que realizou a contratação | String | Opcional |
| hire_id | ID da Contratação | Inteiro | Opcional |
| income_tax | Imposto renda | String Númerica | Opcional |
| invoice_issuer_register_number | CNPJ do emissor da Nota Fiscal | String de 14 caracteres | Opcional |
| issue_date | Data e hora de emissão do Conhecimento pela transportadora | DateTime ("YYYY-MM-DD hh:mm:ss") | Opcional |
| issuer_corporate_name | Nome do emissor do Conhecimento | String | Opcional |
| issuer.register_number | CNPJ do emissor do Conhecimento | String | Opcional |
| itr | Valor taxa ITR | String Númerica | Opcional |
| nat_op | Natureza da Operação do CT-e | String | Opcional |
| number | Número do CT-e | String Númerica | Opcional |
| operation_type | Código do tipo de operação | String | Opcional |
| operation_type_detail | Detalhe do tipo de operação (alguns ct-es contém detalhes sobre a operação neste campo) | String | Opcional |
| operation_type_complement | Complemento do tipo de operação (alguns ct-es contém detalhes sobre a operação neste campo) | String | Opcional |
| percentage_icms | Alíquota ICMS | String Númerica | Opcional |
| percentage_iss | Percentual do ISS | String Númerica | Opcional |
| processing | Data e hora do processamento do EDI na Transportadora | DateTime ("YYYY-MM-DD hh:mm:ss") | Opcional |
| protocol | Número do Protocolo do CT-e na SEFAZ | String | Opcional |
| quantity_volumes | Quantidade de volumes | Inteiro | Opcional |
| quote_id | ID da cotação | Inteiro | * |
| reshipment_value | Valor da taxa de despacho | String Númerica | Opcional |
| sec_cat | Valor taxa SEC/CAT | String Númerica | Opcional |
| serie | Série do CT-e | String Númerica | Opcional |
| shipping_cost_invoice | Valor do custo de envio na Nota Fiscal | String numérica | Opcional |
| suframa | Valor da taxa de SUFRAMA | String Númerica | Opcional |
| tas | Valor do TAS | String Númerica | Opcional |
| taxed_weight | Peso considerado no cálculo | String Númerica | Opcional |
| tax_substitution | Se tem ou não substituição tributária | Inteiro | Opcional |
| toll_value | Valor taxa de pedágio | String numérica | Opcional |
| total_invoice_value | Valor total nota fiscal | String numérica | Opcional |
| tracking_code | Código de rastreio | String | Opcional |
| transport_type | Código do tipo de transporte | String (vide códigos anexos) | Opcional |
| trt | Valor do TRT | String Númerica | Opcional |
| type | Tipo de frete | String (C or F) | Opcional |
| value | Valor total do frete (CT-e) | String Númerica | Opcional |
| value_icms | ICMS calculado | String Númerica | Opcional |
| value_iss | Valor da taxa de ISS | String Númerica | Opcional |
| code | Código de negociação do CT-e via e-mail | String | Opcional |
| created_at | Data e hora que recebemos o CT-e | DateTime ("YYYY-MM-DD hh:mm:ss") | * |
| invoice_access_key | Chave de acesso da nota fiscal | String numérica | Opcional |
| invoice_number | Número da nota fiscal | String numérica | Opcional |
| invoice_serie | Número de série da nota fiscal | String numérica | Opcional |
| quote_price | Valor original da cotação contratada do frete | Number | Opcional |
| quote_final_price_with_tax | Valor original da cotação contratada do frete com taxas adicionais | Number | Opcional |
| * Informado sempre |
Exemplo de envio:
{
"status": "",
"status_log": [],
"access_key": "",
"action": "",
"additional_value": "",
"advalorem": "",
"ademe": "",
"basis_calculation_icms": "",
"basis_calculation_iss": "",
"cfop": "",
"clearance_value": "",
"collection_value": "",
"consignee_corporate_name": "",
"consignee_register_number": "",
"cte_id": "",
"cubage": "",
"cubed_weight": "",
"difal_icms_destination": "",
"difal_icms_origin": "",
"difal_rate_destination": "",
"difal_rate_origin": "",
"file_type": "",
"freight_value": "",
"freight_value_volume_weight": "",
"gris": "",
"gross_weight": "",
"hired_carrier_corporate_name": "",
"hired_carrier_register_number": "",
"hired_shipper_corporate_name": "",
"hired_shipper_register_number": "",
"hire_id": "",
"income_tax": "",
"invoice_issuer_register_number": "",
"issue_date": "",
"issuer_corporate_name": "",
"issuer.register_number": "",
"itr": "",
"nat_op": "",
"number": "",
"operation_type": "",
"operation_type_detail": "",
"operation_type_complement": "",
"percentage_icms": "",
"percentage_iss": "",
"processing": "",
"protocol": "",
"quantity_volumes": "",
"quote_id": "",
"reshipment_value": "",
"sec_cat": "",
"serie": "",
"shipping_cost_invoice": "",
"suframa": "",
"tas": "",
"taxed_weight": "",
"tax_substitution": "",
"toll_value": "",
"total_invoice_value": "",
"tracking_code": "",
"transport_type": "",
"trt": "",
"type": "",
"value": "",
"value_icms": "",
"value_iss": "",
"code": "",
"created_at": "",
"invoice_access_key": "",
"invoice_number": "",
"invoice_serie": "",
"original_price": "",
"final_price_with_tax": ""
}
Resposta:
- Em caso de sucesso deverá ser retornado o código de resposta HTTP 200.
Reprocessamento
- O reprocessamento automático acontece nos casos onde o status do retorno seja:
| Condição | Status |
|---|---|
| igual a | HTTP 408 |
| igual a | HTTP 429 |
| maior ou igual a | HTTP 500 |
Cada tentativa é realizada até que a API retorne um status de sucesso ou até que o número máximo de tentativas seja atingido.
O intervalo entre as tentativas de reprocessamento é relativo à tentativa anterior, ou seja, cada nova tentativa ocorre após um tempo adicional em relação à última tentativa, e não em relação ao momento de criação do webhook. O exemplo a seguir ilustra esse processo de re-tentativas, com o tempo adicional aplicado a cada nova tentativa:
- Tentativa 1: após 1 minuto (acumulado: 1 minuto)
- Tentativa 2: após 5 minutos (acumulado: 6 minutos)
- Tentativa 3: após 10 minutos (acumulado: 16 minutos)
Veja abaixo a tabela completa com as tentativas e seus respectivos tempos:
| Tentativa | Tempo |
|---|---|
| 1 | 1min |
| 2 | 2min |
| 3 | 3min |
| 4 | 5min |
| 5 | 10min |
| 6 | 30min |
| 7 | 1h |
| 8 | 2h |
| 9 | 3h |
| 10 | 4h |
| 11 | 5h |
| 12 | 8h |
- Ao solicitar o reprocessamento pelo Dash FR, caso o retorno não seja bem-sucedido, serão realizadas até 3 tentativas, todas com um intervalo de 1 minuto. As tentativas seguem a mesma lógica cumulativa utilizada no fluxo padrão, acumulando o tempo total decorrido entre elas.
| Tentativa | Tempo |
|---|---|
| 1 | 1min |
| 2 | 1min |
| 3 | 1min |