Skip to main content
POST
JavaScript

Authorizations

Authorization
string
header
required

An Account API key, account-scoped JWT, App API key, or user OAuth token. Prepend the key or token with Bearer, for example Bearer ***************************.

Headers

Idempotency-Key
string

A unique key that makes this request safe to retry. See Idempotent requests.

Maximum string length: 255
Example:

"d9105228-4a08-46b1-8b91-42fed586d383"

Api-Version-Date
string

Pins the request to a dated API version.

Example:

"2026-08-10"

Body

application/json
amount
number
required

The amount to move, in the transfer currency. For example 25.00.

origin_id
string
required

The account sending the funds. A user ID (user_xxx), account ID (biz_xxx), or ledger account ID (ldgr_xxx).

currency
string

Currency, such as usd. Required for ledger transfers.

Example:

"usd"

destination_id
string

The recipient. Required for ledger and wallet_send (a user_/biz_/ldgr_ ID, or — for sends — an email). Omit for claim_link.

expires_at
string<date-time> | null

claim_link only. Link expiry as an ISO 8601 timestamp. Defaults to 24 hours from creation.

idempotence_key
string | null

Ledger transfers and wallet sends. A unique key that makes retries safe. Retrying with the same key returns the original transfer, or attaches to the original wallet send, instead of moving money twice.

metadata
object | null

Ledger transfers only. Custom key-value pairs attached to the transfer. Max 50 keys, 100 chars per key, 500 chars per string value.

notes
string | null

Ledger transfers only. A short note describing the transfer.

redeemable_count
integer

claim_link only. How many different users can claim the link. Defaults to 1.

type
enum<string>

The kind of money movement, which decides what comes back. Defaults to ledger. ledger moves credit between two Whop balances and returns a transfer; wallet_send sends USDT from the origin account's Ethereum wallet and returns a send; claim_link funds a shareable link anyone with the URL can redeem and returns a claim_link. A ledger transfer from a stablecoin-rails account settles on-chain when covered, and still returns a transfer.

Available options:
ledger,
wallet_send,
claim_link

Response

money movement created

A transfer of credit between two ledger accounts.

amount
number
required

Transfer amount.

created_at
string<date-time>
required

When the transfer was created.

created_by_user
TransferCreatedByUser · object | null
required

The user who initiated the transfer, such as the team member who sent a manual payout. Null if the creator is unavailable.

currency
string
required

Transfer currency.

destination
Company · object
required

Account or user receiving funds.

destination_ledger_account_id
string
required

Destination ledger account ID.

id
string
required

Transfer ID.

object
enum<string>
required

The object type. Discriminates the create response from a send or a claim link.

Available options:
transfer
origin
Company · object
required

Account or user sending funds.

origin_ledger_account_id
string
required

Source ledger account ID.

status
enum<string>
required

Transfer status. processing means the on-chain leg is still executing — poll the transfer until it resolves to succeeded or failed.

Available options:
processing,
succeeded,
failed
fee_amount
number | null

Fee charged for the transfer.

metadata
object | null

Custom metadata attached to the transfer.

notes
string | null

Transfer note.