---
title: "Webhook event: balance_transfer.created.v1"
method: POST
path: "balance_transfer.created.v1"
---

# Webhook event: balance_transfer.created.v1

`POST balance_transfer.created.v1` (webhook)

Fired when a new balance adjustment is initiated against a client holdings account. The event includes details about the adjustment, direction, type, and initial payment status.

## Payload

- object
  - `event_type` string, required: Type of the event
  - `event_id` string, uuid, required: UUID of the event
  - `account_id` string, uuid, required: UUID of the account associated with this event
  - `data` BalanceTransferEventV1, required
    - `id` string, uuid, required: Unique identifier for this balance transfer.
    - `amount` integer, required: Transfer amount in the smallest currency unit (e.g. 1000 = $10.00 USD).
    - `category` 'available' | 'charges' | 'payouts' | 'reserve' | 'revenue' | 'returns' | 'pending', required
    - `direction` 'deposit' | 'withdrawal', required
    - `description` string, nullable: Optional human-readable description for this balance transfer.
    - `payment_rail` 'ach'
    - `currency` string, required: Three-letter ISO 4217 currency code.
    - `external_id` string, required: Your unique identifier for this balance transfer, used to correlate with your internal records and prevent the possibility of any duplicates.
    - `created_at` string, date-time, required: Timestamp when this balance transfer was created.
    - `updated_at` string, date-time, required: Timestamp when this balance transfer was last updated.
    - `effective_at` string, date-time, nullable: Timestamp when funds were settled. Null until settlement is confirmed.
    - `processed_at` string, date-time, nullable: Timestamp when this balance transfer was submitted to the payment network. Null until processed.
    - `status` 'created' | 'scheduled' | 'failed' | 'cancelled' | 'on_hold' | 'pending' | 'paid' | 'reversed', required
    - `status_details` StatusDetailsEventV1, required
      - `message` string, required: A human-readable description of the current status.
      - `reason` 'insufficient_funds' | 'closed_bank_account' | 'invalid_bank_account' | 'invalid_routing' | 'disputed' | 'payment_stopped' | 'owner_deceased' | 'frozen_bank_account' | 'risk_review' | 'fraudulent' | 'duplicate_entry' | 'invalid_paykey' | 'payment_blocked' | 'amount_too_large' | 'too_many_attempts' | 'internal_system_error' | 'user_request' | 'ok' | 'other_network_return' | 'payout_refused' | 'validating' | 'auto_hold', required
      - `source` 'watchtower' | 'bank_decline' | 'customer_dispute' | 'user_action' | 'system', required
      - `code` string, nullable, required: The status code if applicable.
      - `changed_at` string, date-time, required: The time the status change occurred.
    - `status_history` PaymentStatusEventV1StatusHistoryEventV1[], required: Complete ordered history of all status changes for this balance transfer.
      - `reason` 'insufficient_funds' | 'closed_bank_account' | 'invalid_bank_account' | 'invalid_routing' | 'disputed' | 'payment_stopped' | 'owner_deceased' | 'frozen_bank_account' | 'risk_review' | 'fraudulent' | 'duplicate_entry' | 'invalid_paykey' | 'payment_blocked' | 'amount_too_large' | 'too_many_attempts' | 'internal_system_error' | 'user_request' | 'ok' | 'other_network_return' | 'payout_refused' | 'validating' | 'auto_hold', required
      - `source` 'watchtower' | 'bank_decline' | 'customer_dispute' | 'user_action' | 'system', required
      - `message` string, required: A human-readable description of the status.
      - `code` string, nullable: The status code if applicable.
      - `changed_at` string, date-time, required: The time the status change occurred.
      - `status` 'created' | 'scheduled' | 'failed' | 'cancelled' | 'on_hold' | 'pending' | 'paid' | 'reversed', required
    - `metadata` object, nullable: Key-value metadata stored with this balance transfer.

## Acknowledgement `200`

Webhook processed successfully

---

[API](https://skmtc.dev/straddleio/apis/straddle-api.md) - [All operations](https://skmtc.dev/straddleio/apis/straddle-api/llms.txt) - [OpenAPI document](https://skmtc.dev/straddleio/apis/straddle-api/revisions/284d54c51439?raw)
