Pular para o conteúdo principal

Internal transfers

An internal transfer moves funds between accounts inside LB Pay, without leaving for BACEN. Because it does not touch the external settlement network, it completes faster — but the integration rules are identical to every other write operation.

API: POST /v1/transfer, GET /v1/transfer/{externalId}

curl --request POST \
--url "https://api.sdb.lbpay.com.br/v1/transfer" \
--header "Authorization: Bearer $TOKEN" \
--header 'content-type: application/json' \
--data '{
"externalId": "5f6a7b8c-9d0e-1f2a-3b4c-5d6e7f8a9b0c",
"amount": 2500,
"toAccountNumber": "00098765"
}'

amount is in cents. toAccountNumber cannot be the account paying.

Rules that still apply​

  • One externalId per transfer, persisted before sending and reused on retries. See Idempotency.
  • Timeouts require a GET, not an assumption. See Retries and timeouts.

Statuses​

The terminal success status is COMPLETED — not SUCCESS, which is what Pix-Out uses. Mapping the two flows to the same vocabulary is a common source of transfers that appear stuck forever.

PENDING and CONFIRMED are transitional: take no action until the transfer reaches COMPLETED, REJECTED, EXPIRED or ERROR. The full table and the state diagram are in Status Machine — Internal transfer.