Overview
New to USDC Gateway? See the USDC Gateway Overview for a product introduction to the Circle Gateway integration and a console overview, before following this API guide. USDC Gateway connects your Fireblocks vault accounts to Circle Gateway, a cross-chain liquidity layer for USDC. Each vault account can have one Gateway wallet that holds a unified USDC balance across supported chains. You deposit USDC from a vault asset wallet into Gateway, then withdraw to any supported chain without managing per-chain inventory yourself. Deposits can also be put on a recurring schedule instead of submitted manually — see Automate deposits. This guide covers the full API flow: activate a Gateway wallet, deposit USDC, check balance, withdraw USDC, and deactivate the wallet. Deposits and withdrawals use the standard Create a new transaction endpoint withsubType: VIRTUAL_ACCOUNT on the source or destination.
Beta feature: USDC Gateway is currently in beta and available through the Fireblocks API and Console. Behavior, endpoints, and limits may change. To request access, contact your Customer Success Manager, or enable it yourself from Labs in the Fireblocks Console (Settings → Labs).
Requirements
Fireblocks workspace
API user
Create a Fireblocks API user in the Console, download the.pem private key, and note the API key UUID. Every request must be signed as a JWT using RS256. See Authenticate: Signing a Request for the full JWT structure.
API flow
The integration follows this order: Activate → Deposit → Check balance → Withdraw. Deactivation is optional and does not move funds.Step 1: Activate the Gateway wallet
Activation creates the Gateway wallet bound to the vault account. No funds move. See Activate a Circle Gateway wallet. Request bodyStep 2: Deposit USDC into Gateway
Submit a deposit using the Create a new transaction endpoint. SetsubType: VIRTUAL_ACCOUNT on the destination to route funds into the Gateway wallet instead of a standard asset wallet.
POST /v1/transactions
Request body
assetId: the USDC asset ID for the source chain. For the current list of Gateway-supported chains, see the Fireblocks Help Center.source.idanddestination.id: the same vault account ID that hosts the Gateway wallet.destination.subType: must beVIRTUAL_ACCOUNTfor Gateway deposits.
COMPLETED once your workspace’s transaction confirmation policy is satisfied — either a policy you’ve defined, or the Fireblocks default if you haven’t set one. Track status via the Transactions API or transaction webhooks.
Because completion is driven by your confirmation policy rather than by Circle Gateway’s own balance-credit confirmation, a deposit can occasionally show as
COMPLETED slightly before on-chain finality and the Gateway balance update are fully reflected.APPROVE transaction for Gateway smart contract approval. If your workspace Policies do not already cover this, add an APPROVE rule before initiating your first deposit on each chain. Once approved, subsequent deposits on the same chain proceed without an additional approval step.
Step 3: Check Gateway balance
Retrieve your total balance and per-chain breakdown. See Get Circle Gateway wallet info. Response fieldsGateway balance may be delayed depending on Circle’s required block confirmations per chain. See Circle’s supported blockchain reference for details.
Step 4: Withdraw USDC from Gateway
Submit a withdrawal using the Create a new transaction endpoint. SetsubType: VIRTUAL_ACCOUNT on the source to draw from the Gateway wallet instead of a standard asset wallet.
POST /v1/transactions
Request body (one-time address destination)
assetId: the USDC asset ID for the destination chain.source.subType: must beVIRTUAL_ACCOUNTfor Gateway withdrawals.destination: another Fireblocks vault account or a one-time address.
COMPLETED when destination-chain delivery is confirmed. Track status via the Transactions API or webhooks.
Step 5: Deactivate the Gateway wallet (optional)
Deactivation stops using Gateway on a vault account. It does not move funds. Any USDC already held in Circle Gateway remains and is accessible again by re-activating. See Deactivate a Circle Gateway wallet.Automate deposits (optional)
Instead of submitting each deposit manually (Step 2), you can configure a deposit automation that sweeps USDC from a vault account’s asset wallets into its Gateway wallet on a recurring schedule, once the balance clears a threshold you set.Beta feature: Deposit automation is currently in beta and may be subject to change.
Set up a deposit automation
POST /vault/accounts/{vaultAccountId}/virtual_asset_wallet/usdc_gateway/deposit_automation
See Set up a USDC Gateway deposit automation for a vault account. Returns an error if an automation already exists for this vault account and asset — use PATCH to change an existing one instead.
Request body
automationType: must beUSDC_GATEWAY_DEPOSIT.assetId: optional. Scopes the automation to a single Fireblocks asset ID; omit to cover all supported USDC Gateway assets.timeBased.intervalValue/timeBased.intervalUnit: how often the automation runs.intervalUnitis one ofMINUTES,HOURS, orDAYS.timeBased.balanceThreshold: minimum USDC balance required before a deposit runs. Set to"0"to sweep the full available balance every time, with no minimum.
Read configured automations
GET /vault/accounts/{vaultAccountId}/virtual_asset_wallet/usdc_gateway/deposit_automation
See Read the USDC Gateway deposit automations for a vault account.
Response
Change an automation
PATCH /vault/accounts/{vaultAccountId}/virtual_asset_wallet/usdc_gateway/deposit_automation/{automationId}
See Change a USDC Gateway deposit automation. Only the schedule (timeBased) can be changed; automationType and assetId are fixed for the lifetime of the automation.
Request body
Stop an automation’s schedule
DELETE /vault/accounts/{vaultAccountId}/virtual_asset_wallet/usdc_gateway/deposit_automation/{automationId}
See Stop a USDC Gateway deposit automation’s schedule. This stops the schedule without deleting the automation’s configuration — turn it back on later with PATCH, without setting it up again from scratch.
Supported chains
For the current list of chains supported by USDC Gateway, refer to the Fireblocks Help Center.Limits and fees
Limits
No minimum or maximum deposit or withdrawal amount is enforced at the Fireblocks layer. Standard Fireblocks API rate limits apply. If Circle Gateway rate-limits an operation on its side, the transaction fails with the error surfaced from Circle.Fees
Withdrawals incur the following fees, charged in USDC against your Gateway balance:
Deposits incur only the standard source-chain gas fee. This is paid from the vault account’s native gas balance, unless Gas Station or Universal Gasless is enabled. There is no Fireblocks-side or Circle-side fee for deposits.
Fees are set by Circle Gateway and may change. For the current fee schedule, refer to Circle’s documentation.
Errors
All errors are also reflected as transaction sub-statuses on the corresponding transaction record, visible via the Transactions API or webhooks.Related
- Create vault wallets — create USDC asset wallets before activating Gateway.
- Set transaction authorization policy — configure
TRANSFERandAPPROVErules. - Work with Gas Station — automate native gas for deposit transactions.
- Monitoring transaction statuses — track deposit and withdrawal progress via webhooks.