Ir para o conteúdo

Webhook de Faturas

POST https://seusite.com/webhook/

Através deste Webhook, o Embarcador receberá notificações sobre as faturas recebidas em 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 de faturas, 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
code Código de negociação da Fatura via e-mail String (UUID) *
number Número da Fatura Inteiro *
series Série da Fatura Inteiro *
version Versão do layout do documento String *
document_type Tipo do documento String *
document_action Ação referente ao documento String *
identifier Identificador externo do documento String *
shipper Dados do embarcador Objeto JSON *
 name Nome do embarcador String *
 cnpj CNPJ do embarcador String (14 caracteres) *
carrier Dados da transportadora Objeto JSON *
 name Nome da transportadora String *
 cnpj CNPJ da transportadora String (14 caracteres) *
dispatcher Dados do expedidor Objeto JSON *
 dispatcher_id ID do expedidor Inteiro *
 corporate_name Razão social do expedidor String *
dates Datas relacionadas a Fatura Objeto JSON *
 importDate Data de importação da Fatura DateTime (ISO 8601) *
 issueDate Data de emissão da Fatura DateTime (ISO 8601) *
 dueDate Data de vencimento da Fatura DateTime (ISO 8601) *
status Status da Fatura e Status do pagamento Objeto JSON *
 invoiceStatus Status da fatura String (ex: released) *
 paymentStatus Status do pagamento String (ex: open) *
values Valores da Fatura Objeto JSON *
 total_ctes Quantidade total de CT-es informados na Fatura (DOCCOB) recebida Inteiro *
 total_value Valor informado diretamente na Fatura (DOCCOB) recebida Number *
 total_contracted_value Soma dos valores contratados(previsto em tabela) de todos os CT-es Number *
 total_charged_ctes_value Soma dos valores cobrados de todos os CT-es da Fatura Number *
 total_divergence_value Valor total das divergências incluídas na Fatura Number *
 discount_value Valor inserido pelo usuário durante negociação ou fechamento da Fatura Number *
 total_with_discount Valor total(fretes contratados) menos o valor do desconto aplicado na Fatura Number *
 indicators Indicadores de status dos CT-es contidos na Fatura(quantidade de ct-es contidos na fatura, divididos por status) Objeto JSON *
bankData Dados bancários da Fatura Objeto JSON *
 bankCode Código do banco String *
 bankName Nome do banco String *
 agency.number Número da agência String *
 agency.digit Dígito da agência String *
 account.number Número da conta String *
 account.digit Dígito da conta String *
taxes Valores das Taxas incluídas na Fatura Objeto JSON *
 cfopCode Código CFOP String *
 invoice_key Chave da nota fiscal String *
 return_key Chave de devolução String *
 authorization_protocol Protocolo de autorização String *
 icms.value Valor do ICMS Number *
 iss.value Valor do ISS Number *
 ir.value Valor do IR Number *
control.status_log Histórico da Fatura Array *
 status Status da Fatura String *
 message Mensagem descritiva do evento (liberação, cancelamento da Fatura) String *
 message_json Mensagem complementar em JSON String *
 approval_reasons_message Motivo da realização da ação na Fatura String *
 user_id ID do usuário que realizou a ação no Dash Inteiro *
 user_name Nome do usuário que realizou a ação no Dash String *
 complement Complemento adicionado pelo usuário na hora da ação na Fatura String *
 from_status Status anterior da Fatura String *
 to_status Novo status da Fatura String *
 changed_at Data e hora da mudança/evento DateTime ("YYYY-MM-DD HH:mm:ss") *
 doccob_id ID do DocCob Inteiro *
* Informado sempre

Exemplo de envio:

{
  "code": "",
  "number": 0,
  "series": 0,
  "version": "",
  "document_type": "",
  "document_action": "",
  "identifier": "",
  "shipper": {
    "name": "",
    "cnpj": ""
  },
  "carrier": {
    "name": "",
    "cnpj": ""
  },
  "dispatcher": {
    "dispatcher_id": 0,
    "corporate_name": ""
  },
  "dates": {
    "importDate": "",
    "issueDate": "",
    "dueDate": ""
  },
  "status": {
    "invoiceStatus": "",
    "paymentStatus": ""
  },
  "values": {
    "total_ctes": 0,
    "total_value": 0,
    "total_contracted_value": 0,
    "total_charged_ctes_value": 0,
    "total_divergence_value": 0,
    "discount_value": 0,
    "total_with_discount": 0,
    "indicators": {
      "total_audited_ctes": 0,
      "not_linkeds_ctes": {
        "total_ctes": 0,
        "percentage": 0
      },
      "under_reviews_ctes": {
        "total_ctes": 0,
        "percentage": 0
      },
      "divergences_ctes": {
        "total_ctes": 0,
        "percentage": 0
      },
      "negotiations_ctes": {
        "total_ctes": 0,
        "percentage": 0
      },
      "pre_releaseds_ctes": {
        "total_ctes": 0,
        "percentage": 0
      },
      "releaseds_ctes": {
        "total_ctes": 0,
        "percentage": 0
      },
      "rejecteds_ctes": {
        "total_ctes": 0,
        "percentage": 0
      },
      "duplicateds_ctes": {
        "total_ctes": 0,
        "percentage": 0
      },
      "value_ctes_duplicated": 0
    }
  },
  "bankData": {
    "bankCode": "",
    "bankName": "",
    "agency": {
      "number": "",
      "digit": ""
    },
    "account": {
      "number": "",
      "digit": ""
    }
  },
  "taxes": {
    "cfop_code": "",
    "invoice_key": "",
    "return_key": "",
    "authorizationProtocol": "",
    "icms": {
      "value": 0
    },
    "iss": {
      "value": 0
    },
    "ir": {
      "value": 0
    }
  },
  "control": {
    "status_log": []
  }
}

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
Voltar ao topo