# Withdraw Fiat

> Withdraw fiat currency from your Alpha Ladder account to a bank account — first-party or third-party — via the MCP API.

Send fiat funds out of a Alpha Ladder account to a destination bank account. Supports first-party (own account) and third-party (beneficiary) withdrawal paths, including same-name (named account) routing.

## Before you start

Call `get_module_permissions` and confirm the `withdrawal` module returns `hasPermission: true`. See [Module permissions](/developers/financial-services/concepts#module-permissions).

A `verificationCode` is required by `execute_fiat_withdrawal`. This is a time-limited one-time code issued by Alpha Ladder's authentication layer. Obtain it before calling execute. See [Verification codes](/developers/financial-services/concepts#verification-codes).

## The flow

<Steps>

<Step>

**List available currencies** — call `get_withdrawal_currencies` (`currencyType: 1`, `withdrawalParty: 1` or `2`) to list fiat currencies available for withdrawal. Use `withdrawalParty: 1` for first-party (own bank) or `2` for third-party (beneficiary). For same-name path, add `isSameNameAccount: true`. `currencyType: 1` = fiat; see [Currency typing](/developers/financial-services/concepts#currency-typing).

</Step>

<Step>

**Get fees and limits** — call `get_withdrawal_quote` (currency, amount, `withdrawalParty`) to retrieve the service fee (`fee.serviceFee`) and minimum withdrawal amount (`minimumAmount.minimumAmount`) in a single call. Show both to the user and confirm the amount is above the minimum.

</Step>

<Step>

**Resolve the destination bank account:**

- **Regular path:** call `get_fiat_withdrawal_bank_accounts` to list the user's bound non-same-name bank accounts.
- **Same-name path:** call `get_named_account_list` to list the user's registered named accounts.

</Step>

<Step>

**Submit the withdrawal** — call `execute_fiat_withdrawal` to submit the withdrawal. Required parameters: `withdrawalParty`, `currency`, `amount`, `bankAccountNumber`, `verificationCode`. For **third-party** (`withdrawalParty: 2`), `purposeOfTransaction` (free text) is also required. For same-name path, set `isSameNameAccount: true`. The `chargeType` parameter controls fee allocation: `1` = borne by beneficiary, `2` = borne by sender, `3` = shared. See [Fees and charge types](/developers/financial-services/concepts#fees-and-charge-types).

<Callout type="warn">Destructive — confirm the fee, minimum amount, and destination bank account with the user before calling this tool.</Callout>

</Step>

</Steps>

For an explanation of first-party vs third-party and the same-name account concept, see [First-party vs third-party](/developers/financial-services/concepts#first-party-vs-third-party-cobo).

## Ask in chat

> "Withdraw 2,000 USD to my bank account."

The agent will check the available currencies, fetch the fee and minimum via `get_withdrawal_quote`, list your bound accounts via `get_fiat_withdrawal_bank_accounts`, and ask you to confirm before calling `execute_fiat_withdrawal`.

## What you get back

`execute_fiat_withdrawal` returns a transaction record including `txCode` (unique reference, e.g. `"WD2026..."`), `currency`, `status`, `withdrawalAmount`, `chargeAmount`, and `amountReceived`.

For the full response shape and status codes, see [Response Reference](/developers/financial-services/responses).
