A venda não ganha evento próprio aqui: ela já avisa pelo
charge.paid/payment.paid, que carrega o subaccountId.
Sandbox não emite eventos de subconta. Evento de teste caindo na URL de produção
confundiria mais do que ajudaria: valide o fluxo com o extrato
(
GET /v1/subaccounts/{id}/transactions), que funciona igual nos dois ambientes.Campos
Valor do movimento em centavos, sempre positivo. O sentido vem de
direction
(transferência) ou do próprio tipo de evento (saque debita, estorno credita).Só em
subaccount.transfer com between_subaccounts: a subconta que recebeu. O
subaccountId do evento é a origem, e é enviado um único evento por transferência.Só em
subaccount.transfer: api ou panel. É como você descobre que o dono
da loja moveu saldo pelo painel.Nos eventos de saque: o código do saque, o mesmo que aparece em
GET /v1/payouts
e no extrato da subconta. É com ele que você consulta o saque a qualquer momento, em
GET /v1/subaccounts/{id}/payouts/{code}.Só em
subaccount.payout: completed (banco confirmou) ou processing (o PIX
saiu ou pode ter saído; a confirmação vem depois). Nos dois casos o débito no
ledger FICA: não trate processing como falha.X-Webhook-Signature, idempotência em X-Webhook-Id (formato evento:id) e
reentrega com backoff.
