---
title: "Create withdrawal"
method: POST
path: "/earn/v1/withdrawals"
tags: ["Portfolio Transfers"]
---

# Create withdrawal

`POST /earn/v1/withdrawals`

## Request

- Base URL: `https://api.sandbox.bvnk.com`
- URL: `https://api.sandbox.bvnk.com/earn/v1/withdrawals`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/bvnk/apis/bvnk-api-endpoints/docs/earn/v1/withdrawals/post.ts> (a function with typed inputs; its response is checked against the schema)

Withdraws funds from a portfolio back into a same-currency wallet you own. The portfolio must hold sufficient balance to cover the withdrawal amount.

## Headers

- `Idempotency-Key` string, required

## Request body

- EarnWithdrawalRequest
  - `portfolioId` string, uuid, required: UUID of the portfolio to withdraw funds from.
  - `reference` string, required: Unique reference identifier for the withdrawal transaction.
  - `beneficiary` EarnCounterparty, required: A wallet and amount on one side of a portfolio transfer.
    - `walletId` string, required: Unique identifier of the wallet involved in the transaction.
    - `amount` number, required: Amount involved in the transaction. Must be greater than 0.
  - `counterparty` EarnCounterparty, required: A wallet and amount on one side of a portfolio transfer.
    - `walletId` string, required: Unique identifier of the wallet involved in the transaction.
    - `amount` number, required: Amount involved in the transaction. Must be greater than 0.

## Response `201`

Created

- EarnWithdrawalTransferResponse
  - `id` string, uuid: Unique identifier of the withdrawal operation.
  - `reference` string: Unique reference identifier for the withdrawal.
  - `status` 'PROCESSING' | 'COMPLETED' | 'FAILED': Status of a portfolio transfer (deposit or withdrawal).
  - `portfolioId` string, uuid: Unique identifier of the portfolio involved in the withdrawal.
  - `withdrawalAmount` EarnMoney: An amount of money in a given currency.
    - `amount` number, required: The amount of money.
    - `currency` string, required: Currency code, for example USDC.
  - `beneficiaryWalletId` string: Unique identifier of the beneficiary wallet.
  - `balance` EarnMoney: An amount of money in a given currency.
    - `amount` number, required: The amount of money.
    - `currency` string, required: Currency code, for example USDC.
  - `createdAt` string, date-time: Timestamp when the withdrawal was created.
  - `updatedAt` string, date-time: Timestamp when the withdrawal was last updated.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden. Returned when the portfolio does not belong to your account.
- `428`: Precondition Required. Returned when the Earn Rewards capability has not been enabled for your account.

## Changes

- **2026-11-06** `c386d436bf2c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/bvnk/apis/bvnk-api-endpoints/changes/earn/v1/withdrawals/post.md)

---

[API](https://skmtc.dev/bvnk/apis/bvnk-api-endpoints.md) - [All operations](https://skmtc.dev/bvnk/apis/bvnk-api-endpoints/llms.txt) - [OpenAPI document](https://skmtc.dev/bvnk/apis/bvnk-api-endpoints/revisions/c386d436bf2c?raw)
