Coinbase Prime supports onchain transfers of digital assets between Prime portfolios under the same entity. This functionality is useful for moving funds from a trading balance to a vault wallet or consolidating assets across multiple portfolios. For those unfamiliar with portfolios or entities, review the Account Structure page first.
Creating a transfer
Instead of using a public address, the Create Transfer endpoint operates with Wallet IDs. For a refresher on Wallet IDs, consult the Wallets page.
When creating a transfer, specify the source wallet ID (and its associated portfolio) as well as the destination wallet ID. To perform a transfer between two portfolios, an entity or organization-level API key is necessary to keep all wallets in scope.
Transfers are subject to Prime’s consensus approval process, which can be configured in the Prime UI. Below is an example showing how to create a transfer.
TransactionsService transactionsService = PrimeServiceFactory.createTransactionsService(client);
CreateTransferRequest request = new CreateTransferRequest.Builder()
.portfolioId("PORTFOLIO_ID_HERE")
.walletId("WALLET_ID_HERE")
.amount("0.001")
.destination("DESTINATION_WALLET_UUID")
.idempotencyKey(UUID.randomUUID().toString())
.currencySymbol("ETH")
.build();
CreateTransferResponse response = transactionsService.createTransfer(request);
To learn more about this SDK, please visit the Prime Java SDK.
TransactionsService transactionsService = PrimeServiceFactory.createTransactionsService(client);
CreateTransferRequest request = new CreateTransferRequest.Builder()
.portfolioId("PORTFOLIO_ID_HERE")
.walletId("WALLET_ID_HERE")
.amount("0.001")
.destination("DESTINATION_WALLET_UUID")
.idempotencyKey(UUID.randomUUID().toString())
.currencySymbol("ETH")
.build();
CreateTransferResponse response = transactionsService.createTransfer(request);
To learn more about this SDK, please visit the Prime Java SDK.
var transactionsService = new TransactionsService(client);
var request = new CreateTransferRequest("PORTFOLIO_ID_HERE", "WALLET_ID_HERE")
{
Amount = "0.001",
Destination = "DESTINATION_WALLET_UUID",
IdempotencyKey = Guid.NewGuid().ToString(),
CurrencySymbol = "ETH",
};
var response = transactionsService.CreateTransfer(request);
To learn more about this SDK, please visit the Prime .NET SDK.
transactionsService := transactions.NewTransactionsService(client)
request := &transactions.CreateWalletTransferRequest{
PortfolioId: "PORTFOLIO_ID_HERE",
WalletId: "WALLET_ID_HERE",
Amount: "0.001",
Destination: "DESTINATION_WALLET_UUID",
IdempotencyKey: uuid.New().String(),
CurrencySymbol: "ETH",
}
response, err := transactionsService.CreateWalletTransfer(context.Background(), request)
To learn more about this SDK, please visit the Prime Go SDK.
prime_client = PrimeClient(credentials)
request = CreateTransferRequest(
portfolio_id="PORTFOLIO_ID_HERE",
wallet_id="WALLET_ID_HERE",
amount = '0.001',
destination = 'DESTINATION_WALLET_UUID',
idempotency_key = str(uuid.uuid4()),
currency_symbol = 'ETH',
)
response = prime_client.create_transfer(request)
To learn more about this SDK, please visit the Prime Python SDK.
const transactionsService = new TransactionsService(client);
transactionsService.createTransfer({
portfolioId: 'PORTFOLIO_ID_HERE',
walletId: 'WALLET_ID_HERE',
amount: "0.001",
destination: "DESTINATION_WALLET_UUID",
idempotencyKey: uuidv4(),
currencySymbol: "ETH",
}).then(async (response) => {
console.log('Transfer: ', response);
})
To learn more about this SDK, please visit the Prime TS SDK.
primectl create-transfer --help
Tracking Transfer Status
Use the Transaction ID returned by the Create Transfer endpoint to track the transaction’s status:
Please note: All requests discussed above require proper authentication. For more information, visit REST API Authentication.