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

# Withdraw from Card

> Withdraw funds from a card back to partner wallet

Withdraws funds from a card and credits the amount back to your partner wallet. Supported on both float-funded and crypto-funded cards.

<ParamField header="Authorization" type="string" required>
  Bearer token. Example: `Bearer sk_staging_your_api_key`
</ParamField>

<ParamField header="idempotency-key" type="string" required>
  A unique key to ensure the request is processed only once. Use a UUID v4.
</ParamField>

<ParamField body="serviceCardId" type="string" required>
  The card's service ID.
</ParamField>

<ParamField body="amount" type="number" required>
  Amount to withdraw in USD. Must be between 5 and 10000.
</ParamField>

<ParamField body="reference" type="string" required>
  Partner-supplied opaque correlator (1–256 chars). Echoed back on the resulting [`wallet.deposit.card-withdrawal`](/webhooks#card-withdrawal-wallet-credit-webhook) webhook so you can match the wallet credit to your originating user transaction.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://services-staging.getplu.com/api/v1/partner/card/withdraw \
    -H "Authorization: Bearer sk_staging_your_api_key" \
    -H "Content-Type: application/json" \
    -H "idempotency-key: 770f9500-f30c-52e5-b827-557766551002" \
    -d '{
      "serviceCardId": "acme-card-xyz789jkl012mno",
      "amount": 25,
      "reference": "ref-test-001"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://services-staging.getplu.com/api/v1/partner/card/withdraw',
    {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer sk_staging_your_api_key',
        'Content-Type': 'application/json',
        'idempotency-key': '770f9500-f30c-52e5-b827-557766551002',
      },
      body: JSON.stringify({
        serviceCardId: 'acme-card-xyz789jkl012mno',
        amount: 25,
        reference: 'ref-test-001',
      }),
    }
  );
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "status": "success",
    "message": "Card withdrawal successful",
    "data": {}
  }
  ```

  ```json 400 theme={null}
  {
    "status": "error",
    "message": "INSUFFICIENT_FUNDS",
    "data": {
      "error": "Card does not have enough balance"
    }
  }
  ```

  ```json 400 Idempotency theme={null}
  {
    "status": "error",
    "message": "Idempotency key has already been used",
    "data": {
      "error": "Idempotency key has already been used"
    }
  }
  ```

  ```json 400 Missing reference theme={null}
  {
    "status": "error",
    "message": "error",
    "data": {
      "error": [
        { "property": "reference", "constraints": { "isNotEmpty": "reference should not be empty" } }
      ]
    }
  }
  ```

  ```json 404 theme={null}
  {
    "status": "error",
    "message": "CARD_NOT_FOUND",
    "data": {
      "error": "Card not found"
    }
  }
  ```
</ResponseExample>

<Note>
  Minimum withdrawal amount is **$5**. Maximum is **$10,000** per transaction. A withdrawal fee may apply based on your partner fee configuration.
</Note>

<Info>
  Once the wallet is credited, a [`wallet.deposit.card-withdrawal`](/webhooks#card-withdrawal-wallet-credit-webhook) webhook is delivered to your endpoint with the same `reference` echoed in `data.reference`. Use it to fan funds out to your end-user's destination address.
</Info>
