Skip to Content

Transfers

Outgoing transactions are called transfers in the Client API. A transfer created via the API goes through the same policy evaluation, approval, and MPC signing pipeline as one initiated from the dashboard — an API key cannot bypass whitelists, limits, quorums, or the mobile-signer approval step.

Create a transfer

POST /v1/profiles/{profile_id}/transfers

Requires an Idempotency_key header (UUID).

{ "wallet_id": "770e8400-e29b-41d4-a716-446655440000", "destination_address": "0x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b", "asset_id": "9c1d2e30-5f6a-4b7c-8d9e-0f1a2b3c4d5e", "amount": "1500.00", "external_id": "INV-2026-0042" }
FieldTypeRequiredDescription
wallet_idUUIDYesSource wallet
destination_addressstringYesDestination — must pass the wallet’s whitelist policy
asset_idUUIDYesAsset to send (see the asset directory)
amountstringYesDecimal string in asset units
external_idstringNoYour reference (order ID, invoice number) — returned in responses and webhooks

List transfers

GET /v1/profiles/{profile_id}/transfers

Paginated via page/page_size; filterable by wallet and status.

Transfer statuses

StatusMeaning
PENDINGCreated; policy evaluation in progress
PENDING_APPROVALAwaiting the required approvals
PENDING_SIGNATUREApprovals collected; MPC signing in progress
READY_TO_SENDSigned; ready to broadcast
SENTBroadcast to the network — terminal success
REJECTEDRejected by an approver or signer, or cancelled by a user
REJECTED_BY_POLICYBlocked by a policy rule
NO_POLICY_FOUNDNo matching policy (default-deny)
EXPIREDApproval window expired
FAILEDSigning or broadcast failed

A sub_status field carries the detailed reason on terminal states (e.g. REJECTED_BY_APPROVER, CANCELLED_BY_USER, BROADCAST_FAILED).

Track status changes via webhooks (TRANSFER_CREATED, TRANSFER_UPDATED, TRANSFER_DELIVERED, TRANSFER_FAILED) instead of polling.

Fee estimation

POST /v1/profiles/{profile_id}/fee-estimate

Requires an Idempotency_key header. Same body as transfer creation plus an optional priority:

{ "wallet_id": "770e8400-e29b-41d4-a716-446655440000", "destination_address": "0x1a2b...", "asset_id": "9c1d2e30-...", "amount": "1.5", "priority": "STANDARD" }

priority is SLOW, STANDARD (default), or FAST. The response contains fee_value (in the native fee currency), fee_value_usd, fee_currency, and chain-specific metadata.

Cancelling and fee bumping

Cancelling a pending transfer and bumping the fee of a stuck transaction are performed in the dashboard, which enforces the role and approval rules for those actions — they are not part of the public API. See Transaction Lifecycle.