Skip to main content
POST
/
investors
/
{investor_id}
/
withdrawals
curl --request POST \
  --url https://api.bluumfinance.com/v1/investors/{investor_id}/withdrawals \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "amount": "500.00",
  "currency": "USD",
  "method": "ach",
  "funding_source_id": "fs_01j9x8m2k7qpzwv3t5r6y8n0ef"
}
'
{
  "id": "wd_01j9x8m2k7qpzwv3t5r6y8n0ab",
  "object": "withdrawal",
  "created": 1747776000,
  "livemode": false,
  "method": "ach",
  "status": "pending",
  "amount": "500.00",
  "currency": "USD",
  "description": "Monthly withdrawal",
  "method_details": {
    "provider_name": "alpaca",
    "transfer_id": "bef72b18-2g71-5727-bccd-5d78g1d8c158",
    "alpaca_status": "QUEUED"
  },
  "destination_details": null,
  "investor_id": "inv_01j9x8m2k7qpzwv3t5r6y8n0ab",
  "wallet_id": "wlt_01j9x8m2k7qpzwv3t5r6y8n0cd",
  "funding_source_id": "fs_01j9x8m2k7qpzwv3t5r6y8n0ef",
  "initiated_at": "2026-05-20T10:00:00.000Z",
  "completed_at": null,
  "failure_reason": null
}

Authorizations

Authorization
string
header
required

HTTP Basic Authentication using the API Key as username and API Secret as password.

Headers

Idempotency-Key
string

A unique key to ensure idempotency of the request. If a request with the same idempotency key has already been processed, the original response will be returned.

Path Parameters

investor_id
string
required

The prefixed public id of the investor (e.g. inv_…).

Body

application/json
amount
string
required

The withdrawal amount as a decimal string with up to 2 decimal places.

Pattern: ^\d+(\.\d{1,2})?$
Example:

"500.00"

method
enum<string>
required

The funding method for the withdrawal:

  • ach: ACH bank transfer
  • wire: Wire transfer
  • international_wire: International wire transfer
  • manual_bank_transfer: Bank transfer to a linked funding source
Available options:
ach,
wire,
international_wire,
manual_bank_transfer
Example:

"ach"

currency
string
default:USD

The currency code (ISO 4217). Defaults to USD.

Required string length: 3
Example:

"USD"

description
string | null

Optional description for the withdrawal.

Maximum string length: 500
Example:

"Monthly withdrawal to checking account"

funding_source_id
string

Prefixed public id (fs_…) or UUID of the investor's active funding source. Required when method is ach, wire, international_wire, or manual_bank_transfer; wire payouts use the funding source's beneficiary profile.

wire_options
object

Options for wire withdrawals. (Future implementation)

Example:
{}

Response

Withdrawal initiated successfully

Envelope-wrapped withdrawal resource.

object
string
required

The resource type discriminator.

Example:

"investor"

livemode
boolean
required

Whether this resource was created against a live API key. Test-mode keys always return false.

Example:

false

id
string

Prefixed public id (e.g. inv_…, ord_…, dep_…).

Example:

"inv_01j9x8m2k7qpzwv3t5r6y8n0ab"

created
integer | null

Unix-seconds timestamp of resource creation.

Example:

1747776000

metadata
object

Partner-set key/value map for cross-referencing.

investor_id
string

Prefixed public id of the owning investor.

wallet_id
string

Prefixed public id of the source wallet.

funding_source_id
string | null
method
enum<string>
Available options:
ach,
wire,
international_wire,
manual_bank_transfer
status
enum<string>

Bluum-native transfer status.

Available options:
pending,
processing,
completed,
cancelled,
failed
amount
string
currency
string
description
string | null
method_details
object

Provider-specific transfer details. Shape varies by method:

  • ach: { provider_name, transfer_id, alpaca_status }
  • international_wire: { provider_name, recipient_bank_action, alpaca_bank_id }
  • manual_bank_transfer: { provider_name, external_withdrawal_id } (NGN IvoryPay bank payout)
destination_details
object
initiated_at
string<date-time> | null
completed_at
string<date-time> | null
failure_reason
string | null