Skip to main content
Lead manages every internal transfer status. You create the transfer. After that, Lead moves it from processing to posted or rejected, and you can’t change it.

Lifecycle

The diagram shows every status and transition.

Statuses

The table lists each status. A request that fails the create checks returns an error and creates no transfer. The rejected status is for transfers Lead accepted and then could not post, for example because the sender’s balance no longer had enough available funds.

Where core transactions are created

A transfer that moves to posted creates two core transactions at once: a debit on sender_core_balance_id and a credit on receiver_core_balance_id. The transfer returns them as sender_core_transaction_id and receiver_core_transaction_id. A rejected transfer creates none.

Observing changes

Treat processing as pending. Do not assume success from the 200 on create.
  • internal_transfer.posted webhook. Sent when the transfer moves to posted. The payload is the internal transfer object. This is your signal that money moved.
  • internal_transfer.rejected webhook. Sent when the transfer moves to rejected. The payload includes the rejection block.
  • Polling. GET /v2/internal_transfers/{internal_transfer_id} returns the current status.
processing doesn’t emit an event.