1. šŸ““ Webhooks
Lumo Payment's
  • šŸ“• Introdução
  • Gerar Deposito
    • Depósito em USDT
    • Depósito em PIX
      POST
  • Solicitar Saque
    • Saque via USDT
    • Saque via PIX
      POST
  • šŸ““ Webhooks
    • Introdução Webhooks
    • Webhook Depósito
    • Webhook Saque
    • Webhook USDT
  • šŸ’° Consultar SALDO
    • Integração para Consultar saldo
  • Consultar Transação
    • Consultar transação
  • Criação de contas para usuĆ”rios permitidos
    • Criação de conta
    • Usando a Secret Key Retornada
  1. šŸ““ Webhooks

Webhook USDT

Webhooks — Crypto#

Webhooks permitem que o seu sistema receba notificações em tempo real sempre que um depósito ou saque crypto ocorrer. Quando um evento acontece, enviamos um POST HTTP para a URL que você cadastrou.

Autenticação da Requisição#

Cada requisição enviada para a sua URL contém dois cabeçalhos de segurança:
CabeçalhoDescrição
X-Webhook-EventNome do evento disparado (ex: payment.crypto.deposit.paid)
X-SignatureAssinatura HMAC-SHA256 do body completo usando o seu api_secret

Como verificar a assinatura#

A assinatura Ć© gerada com HMAC-SHA256 sobre o JSON completo do body enviado.
Node.js
PHP
Python
Importante: Leia o body como bytes/raw antes de fazer o parse JSON. Se você fizer o parse primeiro e serializar de volta, a ordem das chaves pode mudar e a assinatura não vai bater.

Formato do Payload#

Todos os eventos seguem o mesmo envelope:
{
  "event": "nome.do.evento",
  "data": { ... },
  "timestamp": "2026-06-14T12:00:00.000Z"
}
O campo data contém os detalhes da transação.

Eventos — Depósito Crypto#

payment.crypto.deposit.created#

Disparado quando o usuÔrio inicia um depósito e o endereço de pagamento é gerado. O pagamento ainda não foi recebido.
{
  "event": "payment.crypto.deposit.created",
  "data": {
    "event": "payment.crypto.deposit.created",
    "transaction_id": "clx3ghi789",
    "external_id": "inv-abc123",
    "type": "crypto_in",
    "amount": 200.00,
    "amount_fees": 6.00,
    "net_amount": 194.00,
    "status": "pending",
    "crypto_currency": "USDT_TRX",
    "crypto_network": "USDT_TRX",
    "invoice_url": "https://checkout.example.com/invoice/abc123",
    "wallet_hash": "TXxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "qr_code": "data:image/png;base64,...",
    "memo": null,
    "created_at": "2026-06-14T14:00:00.000Z",
    "updated_at": "2026-06-14T14:00:00.000Z"
  },
  "timestamp": "2026-06-14T14:00:00.000Z"
}

payment.crypto.deposit.paid#

Disparado quando o pagamento Ʃ confirmado on-chain e o saldo Ʃ creditado ao usuƔrio (jƔ descontadas as taxas).
{
  "event": "payment.crypto.deposit.paid",
  "data": {
    "event": "payment.crypto.deposit.paid",
    "transaction_id": "clx3ghi789",
    "external_id": "inv-abc123",
    "type": "crypto_in",
    "amount": 200.00,
    "amount_fees": 6.00,
    "net_amount": 194.00,
    "status": "paid",
    "crypto_currency": "USDT_TRX",
    "crypto_network": "USDT_TRX",
    "paidAt": "2026-06-14T14:10:00.000Z",
    "created_at": "2026-06-14T14:00:00.000Z",
    "updated_at": "2026-06-14T14:10:00.000Z"
  },
  "timestamp": "2026-06-14T14:10:00.000Z"
}

payment.crypto.deposit.failed#

Disparado quando o depósito falha (ex: transação rejeitada ou expirou na blockchain).
{
  "event": "payment.crypto.deposit.failed",
  "data": {
    "event": "payment.crypto.deposit.failed",
    "transaction_id": "clx3ghi789",
    "external_id": "inv-abc123",
    "type": "crypto_in",
    "amount": 200.00,
    "amount_fees": 6.00,
    "net_amount": 194.00,
    "status": "failed",
    "crypto_currency": "USDT_TRX",
    "crypto_network": "USDT_TRX",
    "created_at": "2026-06-14T14:00:00.000Z",
    "updated_at": "2026-06-14T14:30:00.000Z"
  },
  "timestamp": "2026-06-14T14:30:00.000Z"
}

payment.crypto.deposit.cancelled#

Disparado quando o depósito é cancelado ou expirou sem pagamento.
{
  "event": "payment.crypto.deposit.cancelled",
  "data": {
    "event": "payment.crypto.deposit.cancelled",
    "transaction_id": "clx3ghi789",
    "external_id": "inv-abc123",
    "type": "crypto_in",
    "amount": 200.00,
    "amount_fees": 6.00,
    "net_amount": 194.00,
    "status": "cancelled",
    "crypto_currency": "USDT_TRX",
    "crypto_network": "USDT_TRX",
    "created_at": "2026-06-14T14:00:00.000Z",
    "updated_at": "2026-06-14T15:00:00.000Z"
  },
  "timestamp": "2026-06-14T15:00:00.000Z"
}

Eventos — Saque Crypto#

payment.crypto.withdraw.processing#

Disparado imediatamente quando o saque Ć© solicitado e o saldo Ć© debitado. O envio on-chain ainda estĆ” pendente.
{
  "event": "payment.crypto.withdraw.processing",
  "data": {
    "event": "payment.crypto.withdraw.processing",
    "transaction_id": "clx4jkl012",
    "external_id": null,
    "type": "crypto_out",
    "amount": 100.00,
    "amount_fees": 5.00,
    "net_amount": 105.00,
    "status": "processing",
    "crypto_currency": "USDT_TRX",
    "crypto_network": "USDT_TRX",
    "crypto_wallet": "TXxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "created_at": "2026-06-14T15:00:00.000Z",
    "updated_at": "2026-06-14T15:00:00.000Z"
  },
  "timestamp": "2026-06-14T15:00:00.000Z"
}
net_amount = amount + amount_fees (total debitado do saldo). O usuƔrio recebe amount convertido em crypto.

payment.crypto.withdraw.completed#

Disparado quando o envio Ć© confirmado on-chain.
{
  "event": "payment.crypto.withdraw.completed",
  "data": {
    "event": "payment.crypto.withdraw.completed",
    "transaction_id": "clx4jkl012",
    "external_id": "withdraw-xyz",
    "type": "crypto_out",
    "amount": 100.00,
    "amount_fees": 5.00,
    "net_amount": 105.00,
    "status": "paid",
    "crypto_currency": "USDT_TRX",
    "crypto_network": "USDT_TRX",
    "crypto_wallet": "TXxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "paidAt": "2026-06-14T15:15:00.000Z",
    "created_at": "2026-06-14T15:00:00.000Z",
    "updated_at": "2026-06-14T15:15:00.000Z"
  },
  "timestamp": "2026-06-14T15:15:00.000Z"
}

payment.crypto.withdraw.failed#

Disparado quando o saque falha. O saldo Ć© estornado automaticamente (amount + amount_fees devolvidos).
{
  "event": "payment.crypto.withdraw.failed",
  "data": {
    "event": "payment.crypto.withdraw.failed",
    "transaction_id": "clx4jkl012",
    "external_id": "withdraw-xyz",
    "type": "crypto_out",
    "amount": 100.00,
    "amount_fees": 5.00,
    "net_amount": 105.00,
    "status": "failed",
    "crypto_currency": "USDT_TRX",
    "crypto_network": "USDT_TRX",
    "crypto_wallet": "TXxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "created_at": "2026-06-14T15:00:00.000Z",
    "updated_at": "2026-06-14T15:10:00.000Z"
  },
  "timestamp": "2026-06-14T15:10:00.000Z"
}

payment.crypto.withdraw.cancelled#

Disparado quando o saque Ć© cancelado. O saldo Ć© estornado automaticamente.
{
  "event": "payment.crypto.withdraw.cancelled",
  "data": {
    "event": "payment.crypto.withdraw.cancelled",
    "transaction_id": "clx4jkl012",
    "external_id": "withdraw-xyz",
    "type": "crypto_out",
    "amount": 100.00,
    "amount_fees": 5.00,
    "net_amount": 105.00,
    "status": "cancelled",
    "crypto_currency": "USDT_TRX",
    "crypto_network": "USDT_TRX",
    "crypto_wallet": "TXxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "created_at": "2026-06-14T15:00:00.000Z",
    "updated_at": "2026-06-14T15:05:00.000Z"
  },
  "timestamp": "2026-06-14T15:05:00.000Z"
}

ReferĆŖncia de Campos#

CampoTipoDescrição
transaction_idstringID interno da transação na plataforma
external_idstring | nullID da transação no provedor externo. null enquanto o envio ainda não foi iniciado
typestringcrypto_in (depósito) ou crypto_out (saque)
amountnumberValor em BRL solicitado pelo usuƔrio
amount_feesnumberTotal de taxas cobradas em BRL
net_amountnumberDepósito: valor creditado ao usuÔrio (amount - fees). Saque: total debitado do saldo (amount + fees)
statusstringpending, processing, paid, failed, cancelled
crypto_currencystringCódigo da moeda (ex: USDT_TRX, SOL, BTC, ETH)
crypto_networkstringRede blockchain utilizada
crypto_walletstringEndereƧo de carteira do destinatƔrio (apenas saques)
wallet_hashstringEndereço gerado para receber o depósito (apenas depósitos)
invoice_urlstringURL da pƔgina de pagamento (apenas deposit.created)
memostring | nullMemo/tag obrigatório em algumas redes (TON, XRP)
paidAtstring | nullISO 8601 de quando o pagamento foi confirmado

Status das TransaƧƵes#

StatusDescrição
pendingAguardando pagamento
processingSaque solicitado, envio on-chain pendente
paidConfirmado e liquidado
failedFalhou — saldo estornado automaticamente quando aplicĆ”vel
cancelledCancelado — saldo estornado automaticamente quando aplicĆ”vel

Boas PrƔticas#

Responda com HTTP 200 rapidamente. O servidor aguarda atƩ 10 segundos. Se o seu processamento for demorado, salve o payload e processe de forma assƭncrona.
Sempre verifique a assinatura antes de processar qualquer evento.
Trate idempotência. O mesmo evento pode ser entregue mais de uma vez em caso de falha de rede. Use transaction_id como chave de deduplicação.
Use o campo type para distinguir depósitos (crypto_in) de saques (crypto_out).
Modificado emĀ 2026-06-14 06:45:04
PƔgina anterior
Webhook Saque
Próxima pÔgina
Integração para Consultar saldo
Built with