Initiate a transfer from a Link account

post/link/api/link/v1/enterprises/{enterpriseId}/accounts/{accountId}/transfers

The destination kind is selected by destination.kind and dispatched server-side. Supported kinds today: on-chain address ('address') and BitGo wallet ('wallet').

Path Parameters

  • enterpriseIdstringRequired
    Your enterprise id.
    Example: 59cd72485007a239fb00282ed480da1f
    Pattern: ^[0-9a-f]{32}$
    Min length: >= 1 characters
  • accountIdstringRequired
    The source Link account id.
    Example: aba3a693-4f28-4523-8e53-85a3df22a608

Request Body

externalId string required
Client-supplied idempotency key, scoped to the source `accountId`. Two requests with the same `externalId` and identical hard fields (amount, asset, network, destination, …) resolve to the same `LinkTransfer` — the second call is reconciled against the first and the venue is **not** charged twice. A retry that disagrees on any hard field returns 409 `TransferIdempotencyConflict`. Required. Callers should generate a stable identifier (e.g. UUIDv4) per logical transfer and reuse it across retries.
Min length: >= 1 characters
amount string required
Amount to withdraw in Big Units (always positive — direction is implied).
genericAsset string required
Generic asset symbol (chain-agnostic, e.g. `usdc`). Paired with `network` the service resolves a venue-specific raw asset. Using a generic-asset + network pair (rather than a BitGo concrete symbol) lets the endpoint support assets BitGo doesn't yet carry a concrete symbol for.
Min length: >= 1 characters
network string required
Network identifier (e.g. `ethereum`, `bitcoin`).
Min length: >= 1 characters
accountSubType string
Optional venue sub-account / bucket (e.g. `SPOT` vs `MARGIN`). Required for venues that hold balances across multiple sub-types where the caller needs to disambiguate which bucket to debit. When omitted, the venue's default sub-account is used.
Min length: >= 1 characters
destinationOne ofrequired
On-chain address destination — withdraws to an arbitrary blockchain address. `memo` is optional and used by chains that require an extra routing tag (XRP destination tag, XLM memo, BNB memo, etc.).
kind string required
Allowed value: address
toAddress string required
Min length: >= 1 characters
memo string
Min length: >= 1 characters

201 Response

id string required
accountId string required
status string required
Allowed values: pending_policy_evaluation processing pending_approval pending completed failed failed_retriable canceled rejected
amount string required
Min length: >= 1 characters
genericAsset string
Min length: >= 1 characters
rawAsset string required
Min length: >= 1 characters
displayAsset string required
Min length: >= 1 characters
rawNetwork string
Min length: >= 1 characters
fromAsset string
Min length: >= 1 characters
fromNetwork string
Min length: >= 1 characters
fromId string
Min length: >= 1 characters
fromType string
Allowed values: address bitgo_wallet link_account venue_account
toAsset string
Min length: >= 1 characters
toNetwork string
Min length: >= 1 characters
toId string
Min length: >= 1 characters
toType string
Allowed values: address bitgo_wallet link_account venue_account
initiatedBy string
Min length: >= 1 characters
fromName string
Min length: >= 1 characters
toName string
Min length: >= 1 characters
fromVenueId string
Min length: >= 1 characters
toVenueId string
Min length: >= 1 characters
accountSubType string
Normalized sub-account-type for the transfer's owning Link account. Read from the Link DB column populated by the normalized-transfers Kafka consumer. Absent when the upstream message omitted a sub-type. For pass-through values (no matching venue-config entry), this carries the raw venue label and `rawAccountSubType` / `accountSubTypeLabel` are absent.
Min length: >= 1 characters
rawAccountSubType string
Venue-raw sub-type label, projected from venue config. Absent for pass-through values.
Min length: >= 1 characters
accountSubTypeLabel string
Human-readable sub-type display label, projected from venue config. Absent for single-sub-type venues or pass-through values.
Min length: >= 1 characters
fromAccountSubType string
Source-leg normalized sub-account-type. Only set for `link_account` legs that ingested with a sub-type.
Min length: >= 1 characters
fromRawAccountSubType string
Min length: >= 1 characters
fromAccountSubTypeLabel string
Min length: >= 1 characters
toAccountSubType string
Destination-leg normalized sub-account-type. Only set for `link_account` legs that ingested with a sub-type.
Min length: >= 1 characters
toRawAccountSubType string
Min length: >= 1 characters
toAccountSubTypeLabel string
Min length: >= 1 characters
cryptoDetail object
Crypto detail response for a transfer
confirmations number
createdAt string <date-time>required
feeAmount string
Min length: >= 1 characters
feeAsset string
Min length: >= 1 characters
feeNetwork string
Min length: >= 1 characters
feeRawAsset string
Min length: >= 1 characters
feeRawNetwork string
Min length: >= 1 characters
fromAddress string
Min length: >= 1 characters
hash string required
Min length: >= 1 characters
id string required
linkTransferId string required
status string required
Allowed values: unconfirmed confirmed failed canceled unknown
toAddress string
Min length: >= 1 characters
updatedAt string <date-time>required
bitgoDetail object
BitGo detail response for a transfer
createdAt string <date-time>required
evaluationId string
Min length: >= 1 characters
id string required
linkTransferId string required
pendingApprovalId string
Min length: >= 1 characters
transactionRequestId string
Min length: >= 1 characters
transferId string
Min length: >= 1 characters
updatedAt string <date-time>required
walletId string
Min length: >= 1 characters
venueDetail object
Venue detail response for a transfer
createdAt string <date-time>required
id string required
linkTransferId string required
updatedAt string <date-time>required
venueCreatedDate string <date-time>required
venueModifiedDate string <date-time>required
venueTransactionId string
Min length: >= 1 characters
venueTransferId string
Min length: >= 1 characters
reason object
Normalized failure context. Set when `status` is `failed` (terminal) or `failed_retriable` (the venue rejected this attempt but the same transfer can be retried under the same `externalId` once external state changes). `code` is a stable string the caller can branch on; `message` is a human-readable description from the venue.
code string required
Min length: >= 1 characters
message string required
Min length: >= 1 characters
sortTimestamp string <date-time>
createdAt string <date-time>required
updatedAt string <date-time>required

400 Response

401 Response

errorName string required
error string required

403 Response

errorName string required
error string required

404 Response

errorName string required
error string required

409 Response

errorName string required
error string required

422 Response

errorName string required
error string required

500 Response

errorName string required
error string required