Use this file to discover all available pages before exploring further.
This guide outlines initiating a currency transfer from a previously created
user-controlled wallet. If you have not yet created a user-controlled wallet, go
to
this guide.
If you do not have any tokens in your wallet, go to the
inbound transfer guide.Note that if you’re building with the Signing API, you
must manage the transaction broadcasting and indexing with your blockchain
infrastructure.The following steps utilize Circle’s sample applications in combination with API
requests that can be done via Circle’s API references or cURL requests. cURL
request will be provided inline, while API references will be linked from the
API endpoint code text. You can find instructions on using it in the
testing via the reference pages guide.
You will start by making a request to
POST /users/token
using a previously created user ID. The userToken is a 60-minute session token
to initiate requests requiring a user challenge (PIN code entry). After 60
minutes, the session expires, and a new userToken must be generated via the
same endpoint.From this response, you will acquire the encryptionKey and userToken which
you should provide in the respective sample app fields. Additionally, you will
use the userToken in Step 3.
3. Check the Wallet Balance and Acquire the Token ID
Before making an outbound transfer, you must gather the token’s ID and ensure
you are holding a token balance. To do this, make a request to
GET /wallets
passing in the wallets userToken to get the walletId.
Next, you will make a request to
GET /wallet/{id}/balances
to check the balance of tokens and acquire the tokenId you intend to transfer.
The token ID will be used in the following steps.
Make a request to
POST /user/transactions/transfer
to initiate a blockchain transfer from a specifiedwalletId to a blockchain
addressdestinationAddress. This call returns a challengeId, used within the
sample app, that prompts users to enter their PIN code to authorize the
transfer.
If you do not have a wallet to use as a destination for the transfer, you can
create another User-Controlled Wallet by stepping through create your first
wallet or
send funds to any other blockchain wallet such as
Metamask.
Using the sample application, enter the userToken and secretKey returned
from Step 2. Also, enter the challengeId returned from Step 5.At this point, you should be ready to execute your first transfer through the
sample app. Click Execute in the sample app to continue.
The sample application takes you through the authentication process, which
includes the user entering their PIN code to authorize the transfer.
As the transfer state changes and ultimately completes, Circle sends
notifications to a subscribed endpoint. You
can find a list of all possible states in the
Asynchronous States and Statuses guide.
The Webhook notification will be similar to the one below.