> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Withdraw flow

> What happens when funds exit a ledger, and how you control withdrawal authorization.

Funds leave a ledger through the Portal contract on Base. The ledger keeps recipients and balances private.

<Frame>
  <img src="https://mintcdn.com/base-a060aa97/4KnToVUb5PvkWfhD/images/ledger/withdraw-flow.png?fit=max&auto=format&n=4KnToVUb5PvkWfhD&q=85&s=b9a9e9024f364e35584a98caf5c45fd8" alt="Withdrawal flow: request an operator-signed withdrawal authorization from the ledger API, submit the withdrawal to the Portal contract on Base, which releases funds and debits the ledger." width="2360" height="824" data-path="images/ledger/withdraw-flow.png" />
</Frame>

Withdrawals move funds from the ledger back to a recipient on Base. You choose how the Portal validates a withdrawal onchain, from a simple signature check to full state-transition proofs. The ledger debits the account when you commit the withdrawal; you then submit the authorization onchain and the Portal releases the funds.

## What is exposed

| Data      | Public? | Why                                      |
| --------- | ------- | ---------------------------------------- |
| Asset     | Public  | Required to be public to settle on Base. |
| Amount    | Public  | Required to be public to settle on Base. |
| Sender    | Hidden  | Not revealed by the ledger Portal.       |
| Recipient | Public  | Required to be public to settle on Base. |

A withdrawal can also require an attestation or permission, for example to gate who can withdraw.

## Composability

`withdraw()` is an ordinary Base contract call. An integration can batch it with other Base actions in one atomic transaction. The actions share one transaction, so they settle together or not at all. Funds never sit in an intermediate state.
