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

# For Company Wallets

> Learn how to withdraw stablecoins from your treasury wallet to your bank account

Withdrawals allow you to offramp stablecoins from your treasury wallet directly to your bank account. This is the reverse of the [funding process](/stablecoin-orchestration/guides/on-off-ramps/funding-company-wallets#bank-transfer).

## Via the Console

Authorized users can initiate withdrawals directly from the Crossmint Console:

1. Navigate to [crossmint.com/console](https://crossmint.com/console)
2. Go to **Wallets** > **Company Wallets**
3. Click the **Withdraw** button on your treasury wallet
4. Follow the on-screen instructions to complete the withdrawal

<Info>
  To enroll additional authorized users for withdrawals, contact your Crossmint CSE.
</Info>

## Via API

1. Contact Crossmint's [Customer Success Engineering](https://www.crossmint.com/contact) (CSE) team to obtain the `bankAccountId` for your registered bank account.
2. Initiate a stablecoin transfer from your treasury wallet to a bank account using the [Create Order API](/api-reference/headless/create-order).

<CodeGroup>
  ```bash cURL theme={null}
  curl --request POST \
    --url 'https://www.crossmint.com/api/2022-06-09/orders' \
    --header 'Content-Type: application/json' \
    --header 'x-api-key: <your-server-side-api-key>' \
    --data '{
      "payment": {
        "method": "base",
        "currency": "usdc",
        "payerAddress": "<your-treasury-wallet-address>"
      },
      "recipient": {
        "bankAccountId": "<bank-account-id-from-cse>"
      },
      "lineItems": [
        {
          "currencyLocator": "fiat:usd",
          "executionParameters": {
            "mode": "exact-in",
            "amount": "100"
          }
        }
      ]
    }'
  ```

  ```js Node.js theme={null}
  const serverApiKey = process.env.CROSSMINT_SERVER_SIDE_API_KEY;
  const payerAddress = "<your-treasury-wallet-address>";
  const bankAccountId = "<bank-account-id-from-cse>";
  const amount = "100"; // Amount of USDC to offramp

  const response = await fetch("https://www.crossmint.com/api/2022-06-09/orders", {
      method: "POST",
      headers: {
          "Content-Type": "application/json",
          "x-api-key": serverApiKey,
      },
      body: JSON.stringify({
          payment: {
              method: "base",
              currency: "usdc",
              payerAddress: payerAddress
          },
          recipient: {
              bankAccountId: bankAccountId
          },
          lineItems: [
              {
                  currencyLocator: "fiat:usd",
                  executionParameters: {
                      mode: "exact-in",
                      amount: amount
                  }
              }
          ]
      }),
  });

  const data = await response.json();
  console.log(data);
  ```

  ```python Python theme={null}
  import os
  import requests

  server_api_key = os.getenv("CROSSMINT_SERVER_SIDE_API_KEY")
  payer_address = "<your-treasury-wallet-address>"
  bank_account_id = "<bank-account-id-from-cse>"
  amount = "100"  # Amount of USDC to offramp

  url = "https://www.crossmint.com/api/2022-06-09/orders"
  headers = {
      "Content-Type": "application/json",
      "x-api-key": server_api_key
  }
  payload = {
      "payment": {
          "method": "base",
          "currency": "usdc",
          "payerAddress": payer_address
      },
      "recipient": {
          "bankAccountId": bank_account_id
      },
      "lineItems": [
          {
              "currencyLocator": "fiat:usd",
              "executionParameters": {
                  "mode": "exact-in",
                  "amount": amount
              }
          }
      ]
  }

  response = requests.post(url, headers=headers, json=payload)
  data = response.json()
  print(data)
  ```
</CodeGroup>

Once the offramp is initiated:

* The specified amount of USDC is debited from your treasury wallet
* Crossmint converts the USDC to fiat currency
* The fiat amount (minus fees) is transferred to your registered bank account
* You can monitor the transaction status by polling the order's status, or via the Crossmint console

<Note>
  Settlement times may vary depending on your bank and region.
</Note>

### Monitor Withdrawal Status

You can track the status of your withdrawal by polling the order status endpoint to check progress:

<CodeGroup>
  ```bash cURL theme={null}
  API_KEY="<your-server-side-api-key>"
  ORDER_ID="<order-id>"

  curl --request GET \
    --url "https://www.crossmint.com/api/2022-06-09/orders/${ORDER_ID}" \
    --header "Content-Type: application/json" \
    --header "x-api-key: ${API_KEY}"
  ```

  ```js Node.js theme={null}
  const API_KEY = "<your-server-side-api-key>";
  const orderId = "<order-id>";

  const response = await fetch(`https://www.crossmint.com/api/2022-06-09/orders/${orderId}`, {
      method: "GET",
      headers: {
          "Content-Type": "application/json",
          "x-api-key": API_KEY,
      }
  });

  if (!response.ok) {
      throw new Error(`Failed to get order: ${response.status} ${response.statusText}`);
  }

  const data = await response.json();
  console.log(data);
  ```

  ```python Python theme={null}
  import requests

  API_KEY = "<your-server-side-api-key>"
  order_id = "<order-id>"

  url = f"https://www.crossmint.com/api/2022-06-09/orders/{order_id}"
  headers = {
      "Content-Type": "application/json",
      "x-api-key": API_KEY
  }

  response = requests.get(url, headers=headers)

  if not response.ok:
      raise Exception(f"Failed to get order: {response.status_code} {response.reason}")

  print(response.json())
  ```
</CodeGroup>

## Troubleshooting

<Info>
  If you encounter issues with a withdrawal (incorrect amount, failed transfer, etc.), [contact our support team](https://help.crossmint.com/hc/en-us/requests/new) for assistance.
</Info>
