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

# WithdrawalsService

> Withdrawal initiation and executable calldata lookup

Package: `monaco.api.withdrawals`

Source: `protos/api/withdrawals.proto`

Use `WithdrawalsService` to allocate withdrawals, list the ones still awaiting confirmation, and retrieve ABI-encoded `executeWithdrawal(...)` vault calldata for on-chain submission once the merkle proof is available.

```protobuf theme={null}
service WithdrawalsService {
  rpc InitiateWithdrawal(InitiateWithdrawalRequest) returns (Withdrawal);
  rpc GetWithdrawal(GetWithdrawalRequest) returns (Withdrawal);
  rpc ListPendingWithdrawals(ListPendingWithdrawalsRequest) returns (ListPendingWithdrawalsResponse);
}
```

## Notes

* Initiating a withdrawal requires authentication and withdraw permission.
* `InitiateWithdrawal` returns an empty `calldata` field until the withdrawal root is confirmed on-chain.
* `GetWithdrawal` can re-fetch the merkle-proof-backed `executeWithdrawal(...)` calldata once it is ready.
* `ListPendingWithdrawals` is authenticated and returns only the caller's own withdrawals that are still awaiting on-chain root confirmation, newest first. Each entry carries `withdrawal_index`, `asset_id`, `asset_symbol`, the raw `amount`, `destination`, `status` (always `pending`), and `created_at`, but no calldata: fetch that with `GetWithdrawal` once the withdrawal is confirmed.
* `ListPendingWithdrawals` is cursor-paginated: send an empty `page_token` to start, then each response's `next_page_token` until it comes back empty; an empty token is definitive. `page_size` defaults to `20` and must be 1–1000, and a larger value is rejected rather than clamped. `total` and `total_pages` are exact. There is no `page` field: a stub generated from an older proto that still sets it has the unknown field discarded and reads the first page on every call, so regenerate it.
* `ListPendingWithdrawals` returns `INVALID_ARGUMENT` for an invalid page size or token, `UNAUTHENTICATED` without a session, `RESOURCE_EXHAUSTED` when the account's read budget is exhausted and enforced (retry after `RetryInfo`), and `INTERNAL` on a backend failure.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.