The Digital Asset Accounts API base URL is
https://api-sandbox.circle.com for
sandbox and https://api.circle.com for production. Set your API key in the
Authorization header using the format Bearer YOUR_API_KEY. See
Sandbox environment and
Going to production
for environment details.Prerequisites
Before you begin, ensure that you’ve:- Obtained an API key for Digital Asset Accounts from your Circle representative.
- Onboarded a business end user and recorded its
clientEntityIdand activeaccountId. See Onboard customers. - Run a device check for the end user and kept the
deviceIdit returned. The link-bank-account request in Step 2 requires thedeviceIdinriskSignals. See Collect device risk signals. - (Recommended) Configured a webhook subscription for tracking asynchronous events.
- Checked whether Strong Customer Authentication (SCA) applies to your end users. Circle requires SCA for end users in the European Economic Area (EEA). See Implement SCA.
- Set up mutual TLS (mTLS) for your entity’s API traffic before going to production, if your entity operates in the EEA under the Markets in Crypto-Assets (MiCA) regulation.
Step 1: Check your account balance
Confirm the account exists and check the starting balance:ACCOUNT_ID with your account ID and YOUR_API_KEY with your Bearer
token.
Step 2: Link a bank account
Link the end user’s bank account. Circle uses it to match incoming wires and as the destination for withdrawals.id: it’s
the WIRE_ID you use in the next step. For end users in the EEA, this request
also needs SCA headers, and you can link an IBAN instead. See
Wire deposits and withdrawals.
Step 3: Get wire instructions
Retrieve the wire instructions for the linked bank account. Wire instructions are the bank routing details your customer uses to send a wire transfer.trackingRef that must be included in the wire
transfer:
Step 4: Simulate a wire deposit
In sandbox, simulate a wire deposit using the mock payments endpoint. In production, your customer sends a real wire transfer using the instructions from step 3.pending status (see
Transaction states) and
settles instantly in sandbox: