Pedidos assinados
HMAC-SHA256 sobre o carimbo de data/hora e o corpo em bruto, enviado como X-Tailride-Signature: v1=…, com o carimbo de data/hora em X-Tailride-Timestamp para que possa rejeitar pedidos antigos ou repetidos.
O Tailride envia um webhook JSON assinado assim que uma fatura é processada ou editada — fornecedor, valores, IVA, linhas da fatura e uma ligação para o PDF. Pesquise faturas através de uma API REST ou ligue o Zapier e o Make sem escrever código.
Um webhook é um pedido HTTP POST que o Tailride envia para um URL à sua escolha. Há dois eventos: invoice.processed, quando uma nova fatura acabou de ser lida, e invoice.updated, quando alguém a edita, lhe anexa um documento ou a marca como paga. Cada pedido é assinado com HMAC-SHA256, repetido quando o seu servidor não está disponível e registado no histórico de atividade da fatura, para que o seu ERP, data warehouse ou fluxo de aprovação receba os mesmos dados que vê no painel.
O que o seu endpoint recebe
Esta é uma entrega invoice.processed tal como o Tailride a envia. O invoice.updated leva a mesma fatura e ainda uma lista do que mudou.
import crypto from "node:crypto";
export function isFromTailride(req, rawBody, secret) {
const ts = req.headers["x-tailride-timestamp"];
const sig = req.headers["x-tailride-signature"]?.replace("v1=", "") ?? "";
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
const expected = crypto.createHmac("sha256", secret)
.update(`${ts}.${rawBody}`).digest("hex");
return sig.length === expected.length &&
crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
}curl "https://tailride.so/api/v1/invoices?search=northwind&limit=20" \
-H "X-Api-Key: trapi_…"POST /hooks/tailride HTTP/1.1
Content-Type: application/json
User-Agent: Tailride-Webhooks/1.0
X-Tailride-Event: invoice.processed
X-Tailride-Timestamp: 1792574400
X-Tailride-Signature: v1=5f2c8e…b41d
{
"event": "invoice.processed",
"timestamp": "2026-10-21T09:20:00.000Z",
"data": {
"invoice": {
"id": "6716f0c2e4b09a35d8f11a42",
"from": "billing@northwind.example",
"invoiceId": "INV-4471",
"invoiceDate": "2026-10-20T00:00:00.000Z",
"documentType": "invoice",
"amount": 1249,
"currency": "EUR",
"payment": { "status": "unpaid" },
"vendor": { "name": "Northwind Supplies GmbH", "countryCode": "DE", "taxId": "DE811234567" },
"items": [
{ "description": "Office chairs", "quantity": 2, "unitPrice": 524.79,
"taxRate": 19, "taxAmount": 199.42, "subtotal": 1049.58, "total": 1249 }
],
"tags": ["office"],
"attachment": { "url": "https://…/INV-4471.pdf", "expiresAt": "2026-10-22T09:20:00.000Z" }
}
}
}Cinco minutos nas Definições e, a partir daí, cada fatura chega sozinha.
Em Definições → Webhooks, introduza um nome e um URL, escolha o evento e, se quiser, adicione até cinco cabeçalhos personalizados — por exemplo, uma chave de API que o seu endpoint exija.
Cada webhook tem o seu próprio segredo whsec_. Use-o para verificar o cabeçalho X-Tailride-Signature. Regenere-o sempre que precisar; o anterior deixa de funcionar de imediato.
Quando uma fatura é processada ou alterada, o Tailride envia um POST com um JSON da fatura completa. Responda com qualquer estado 2xx no prazo de 10 segundos.
Escreva os dados no seu ERP, numa base de dados ou num fluxo de aprovação — ou deixe que as apps do Tailride para Zapier e Make o façam sem código.
HMAC-SHA256 sobre o carimbo de data/hora e o corpo em bruto, enviado como X-Tailride-Signature: v1=…, com o carimbo de data/hora em X-Tailride-Timestamp para que possa rejeitar pedidos antigos ou repetidos.
Até três tentativas, com um tempo limite de 10 segundos. Erros de rede, tempos limite e respostas 408, 429 e 5xx são repetidos; as outras respostas 4xx contam como rejeição. Use data.invoice.id para ignorar uma repetição.
Fornecedor e número de IVA, número e datas da fatura, montante, moeda, estado de pagamento, dados da subscrição, etiquetas e cada linha com a respetiva taxa de imposto — e ainda ligações para transferir o PDF e os documentos de suporte.
O invoice.updated é disparado em edições, quando se adicionam ou removem documentos de suporte e quando o estado de pagamento muda, com o valor anterior e o atual de cada campo alterado.
Os endereços privados e internos são bloqueados, os redirecionamentos nunca são seguidos, e o segredo de assinatura e os valores dos cabeçalhos personalizados são guardados encriptados.
Cada entrega — e cada entrega falhada — aparece no histórico de atividade da fatura, para que veja o que foi enviado, para onde e quando.
O invoice.processed é disparado quando um novo documento foi lido e reconhecido como fatura. O invoice.updated é disparado quando uma fatura processada muda depois disso: campos editados, documentos de suporte anexados ou removidos, um novo estado de pagamento. Cada webhook subscreve um único evento, por isso adicione um segundo webhook para receber os dois.
Calcule o HMAC-SHA256 do valor de X-Tailride-Timestamp, um ponto e o corpo do pedido em bruto, usando o segredo whsec_ do webhook. Compare o resultado em hexadecimal com o valor a seguir a v1= em X-Tailride-Signature e rejeite os pedidos cujo carimbo de data/hora tenha mais de alguns minutos.
O Tailride tenta até três vezes, com alguns segundos de intervalo. Erros de rede, tempos limite e respostas 408, 429 ou 5xx são repetidos; qualquer outra resposta 4xx é tratada como rejeição. Se todas as tentativas falharem, a falha aparece no histórico de atividade da fatura — use a API para obter o que lhe tiver escapado.
Com uma chave de API trapi_ pode ler a conta (GET /api/v1/me), pesquisar e percorrer as faturas processadas — até 100 por página — com GET /api/v1/invoices, e inscrever o Zapier ou o Make em eventos de faturas. O URL base é https://tailride.so/api/v1; envie a chave como X-Api-Key ou como token Bearer.
Sim. A app do Zapier é pública: acionadores New Invoice e Updated Invoice e uma pesquisa Find Invoice. A app do Make — acompanhar faturas novas ou atualizadas, pesquisar faturas, fazer uma chamada à API — está disponível por convite; peça a ligação ao suporte.
Todos os planos pagos, para contas empresariais. O titular da conta gere-os em Definições → Webhooks: até 10 webhooks e 10 chaves de API, além dos webhooks que o Zapier e o Make criam por si.
As ligações de transferência num webhook funcionam durante 24 horas; as devolvidas pela API funcionam durante uma hora. Guarde o ficheiro do seu lado se precisar de o manter.
Continue a ler
As integrações prontas a usar, a documentação para programadores e, antes de mais, de onde vêm as faturas.
Webhooks, chaves de API e a app do Zapier estão incluídos em todos os planos pagos.