BlendFi
OfframpOperações

Recebendo o depósito

O que a BlendFi faz quando o USDT chega ao endereço de depósito. Caminhos exato, parcial e excedente.

Após o aceite, a BlendFi observa o endereço de depósito on-chain. A cada confirmação válida, a plataforma atualiza received_amount na conversão e decide a próxima transição com base no valor e na janela.

Os três caminhos

1. Valor exato dentro da janela → funded → liquidação automática

O caminho feliz. O cliente final transfere exatamente expected_source_amount antes de deposit_window_expires_at. A conversão transita para funded, a liquidação do Pix avança automaticamente, e a conversão termina em completed. Você recebe conversion.completed.

Você não precisa chamar nada. A liquidação é totalmente automática a partir de funded.

2. Valor abaixo do esperado → standby imediato

Qualquer depósito com received_amount < expected_source_amount leva a conversão para standby com standby_reason='under_funded', sem esperar a janela expirar. A política é: qualquer divergência é uma decisão sua, não um erro a ser tolerado em silêncio.

Você recebe conversion.standby. Decida entre liquidar pelo valor recebido (POST /v1/conversions/:id/liquidate) ou tratar caso a caso. Veja Standby e liquidação manual.

3. Valor acima do esperado → standby imediato

Análogo ao caso 2, com standby_reason='over_funded'. A conversão transita para standby no instante do depósito; você decide o desfecho.

Sub-caso: janela expirou com depósito presente

Se a janela expira (deposit_window_expires_at no passado) com received_amount > 0 mas ainda em awaiting_deposit, a conversão transita para standby com standby_reason='window_expired'. O cenário cobre depósitos atrasados que chegam após o prazo de 15 minutos.

Sub-caso: janela expirou sem depósito

Se a janela expira com received_amount = 0, a conversão transita para expired (terminal), a reserva é liberada, o lock é solto. Não há depósito para tratar.

Depósitos tardios em conversão já em standby

Se um depósito on-chain confirma após a conversão já estar em standby, ele é creditado em received_amount, mas a conversão não sai de standby automaticamente. A saída só acontece via /liquidate ou via expiração para abandoned.

Webhooks que você recebe

CenárioWebhook
Valor exato + janela liquidaconversion.completed
Valor exato + janela falha na liquidaçãoconversion.failed
Valor divergente (qualquer tipo)conversion.standby
Janela expirada com depósitoconversion.standby
Janela expirada sem depósito(sem webhook dedicado; a conversão fica em expired)

A semântica completa de webhooks vai na seção de Webhooks quando o catálogo de eventos conversion.* for publicado.

Não recomende ao cliente final ajustar o valor

A UX correta é mostrar expected_source_amount ao cliente final e exigir o valor exato. Trate divergência como exceção, não como contrato. Cliente final que tenta "completar" um depósito parcial com um segundo depósito acaba causando duas confirmações, ambas em standby (a primeira) ou ignoradas (sem promoção automática a partir de standby).

Próximo passo

Nesta página