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

# Withdrawing funds to your bank

> Full withdrawal walkthrough — bank account registration, on-chain send to Prudra’s exchange wallet, and Phase 1 manual fiat settlement.

## Overview

Withdrawals let organisations move value from **managed wallets** toward **fiat bank payouts**. Phase 1 is intentionally operational: after your tokens are sent on-chain to Prudra’s configured exchange receive address, Prudra operations completes the bank transfer manually. Status stays queryable via API so your agents and dashboards stay in sync.

## How it works

1. You register one or more **bank accounts** (masked in list responses).
2. You call **withdraw** with the managed wallet id, amount, token, chain, and optional `bankAccountId` plus reference string.
3. We process you withdrawl from 1-3 working days

## Setting up a bank account

**HTTP**

```bash theme={null}
curl -X POST https://api.prudra.dev/wallet-infra/bank-accounts \
  -H "Authorization: Bearer prv_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "accountName": "Acme Operations",
    "currency": "GBP",
    "sortCode": "12-34-56",
    "accountNumber": "12345678"
  }'
```

**SDK**

```typescript theme={null}
import { registerBankAccount, listBankAccounts } from '@prudra/wallet';

const bank = await registerBankAccount({
  accountName: 'Acme Operations',
  currency: 'GBP',
  sortCode: '12-34-56',
  accountNumber: '12345678',
});
```

List returns masked account numbers and truncated IBAN hints. `DELETE` soft-deactivates a bank account.

## Initiating a withdrawal

```bash theme={null}
curl -X POST https://api.prudra.dev/wallet-infra/withdraw \
  -H "Authorization: Bearer prv_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "fromWalletId": "mwt_xxx",
    "fromWalletType": "master",
    "amount": "250.00",
    "token": "USDC",
    "chain": "base",
    "bankAccountId": "ba_xxx",
    "reference": "invoice-2026-04-001"
  }'
```

`bankAccountId` is optional: if omitted, ops may still process manually using your org’s default instructions, but linking a bank row is recommended.

The response includes `id`, `status` (e.g. `pending_conversion`), `txHash`, `estimatedDays`, and `reference`.

## What happens next (Phase 1)

* **On-chain:** Funds must confirm to the Prudra exchange wallet; `txHash` is your receipt.
* **Off-chain:** Operations validates KYC/banking coverage and initiates the payout.
* **Support:** Use `reference` and withdrawal `id` when contacting Prudra.

Automated status webhooks may be added in later phases; poll `GET /wallet-infra/withdrawals/:id` today.

## Supported currencies and regions

Coverage depends on Prudra’s banking partners and your organisation’s verification status. Register accounts with the appropriate `currency` field (`GBP`, `EUR`, `USD`, etc.). Unsupported corridors return clear errors at registration or withdrawal time as the product hardens.

## Expected timing

**2–3 business days** is the default `estimatedDays` hint for manual processing after the on-chain leg is observed. Bridges or congested chains may add delay before the exchange wallet credits.

## Tracking status

| Endpoint                            | Purpose                                              |
| ----------------------------------- | ---------------------------------------------------- |
| `GET /wallet-infra/withdrawals`     | Recent withdrawals for the org.                      |
| `GET /wallet-infra/withdrawals/:id` | Single withdrawal row including status and `txHash`. |

## Configuration (operators)

Set in the API environment:

* `PRUDRA_EXCHANGE_ADDRESS`
* `PRUDRA_EXCHANGE_CHAIN` (default `base`)
* `PRUDRA_EXCHANGE_TOKEN` (default `USDC`)
* `PAYMENT_STUB_MODE=true` for stub transfers in development

## Related

* [Token transfers](/concepts/token-transfers)
* [Managed wallets](/concepts/managed-wallets)
* [Wallet SDK](/guides/sdk-wallet)
