Send payouts and disbursements from a custodial account to onchain addresses, email recipients, or bank accounts via fiat rails.
Transfers require a business account. If you’re interested in using this product, get in touch and our team will follow up to discuss fit.
Transfers represent both the request and execution of a fund movement from a source to a target. They provide upfront fee quotes and track the complete lifecycle from initiation through completion or failure.
When a transfer fails, the failureReason field contains a human-readable description of what went wrong.A transfer can reach failed status in two ways:
Execution error — the transfer was executing and encountered an error (e.g., insufficient balance, network failure).
Quote expiration — the transfer was in quoted status and the fee quote expired before /execute was called. Create a new transfer to get a fresh quote.
{ "status": "failed", "failureReason": "Insufficient balance to complete this transfer."}
For transfers requiring travel rule compliance, include the travelRule object with originator and beneficiary details.
Field
Description
isSelf
Whether the receiving wallet belongs to the sender
isIntermediary
Whether Coinbase is acting as an intermediary VASP
originator
Information about the sender (name, address, VASP details)
beneficiary
Information about the receiver (name, address, wallet type)
Set isIntermediary: true when your organization is a VASP using Coinbase to send crypto on behalf of your end customer. You must then provide the originator object with the sender’s details and your VASP information.
Subscribe to payment.transfer.* events to receive real-time status updates as transfers move through their lifecycle. See Webhooks for setup instructions.