This page walks through the main xReserve user workflows for moving USDC between an L1 chain and the Canton Network.
Onboarding
One-time setup that authorizes a specific Party ID to use xReserve.
Offboarding
Reverse onboarding and deactivate the Party ID for future xReserve activity.
Mint / Deposit
Send USDC on an L1 chain and mint the equivalent amount on the Canton Network.
Burn / Withdrawal
Burn USDC on the Canton Network and release the equivalent amount on the destination L1 chain.
Pre-approval
Allow xReserve to auto-mint incoming deposits for a Party ID.
Settings
Manage offboarding, pre-approval, connectivity, local state, and transaction-history preferences.
Onboarding Workflow
Once technical setup is complete and the user has access to the xReserve UI, onboarding is the one-time process that enables a specific Party ID to deposit (mint) and withdraw (burn) USDC through xReserve.
Once onboarding is complete, the user can deposit and mint USDC only for the Party ID that was onboarded. The Party ID currently in use is shown in the top-right area of the xReserve UI.
Log in to the xReserve UI
The exact login process depends on your organization’s authentication policies.
Open the onboarding flow
After login, the user lands on an empty state page and can start onboarding by clicking the yellow Onboard button. Choose whether to enable pre-approval
The confirmation popup includes a checkbox to enable Pre-approval for the Party ID. Pre-approval authorizes the xReserve system to mint all incoming deposits for the user’s Party ID automatically.
This choice is not permanent and can be changed in the future. Pre-approval enabled
Pre-approval disabled
All future deposits for this Party ID are minted automatically, based on the delegated authority given to xReserve. The user must manually click Mint for each new deposit attestation before USDC is created on the Canton Network. Submit the request and wait for approval
After the user clicks Confirm Onboard, a success popup appears in the lower-left corner.The application operator typically approves the request within about one minute. Once approved, the landing page shows balances and transactions for the onboarded Party ID.
Offboarding Workflow
Offboarding removes a Party ID from xReserve so it can no longer be used for the app’s workflows.
Open the Settings page
Click the profile icon in the top-right corner and select Settings. The first option is Remove account (offboard). Confirm offboarding
Click the red Offboard button, then confirm the action in the popup.After confirmation, the Party ID is offboarded and can no longer use xReserve until it is onboarded again.
Users can re-onboard in the future by repeating the onboarding flow.
Mint / Deposit Workflow
This workflow has two parts: sending USDC on the source L1 chain, and then minting the corresponding USDC on the Canton Network.
Send funds on an L1 chain
On an L1 chain such as Ethereum, USDC is sent to Circle’s xReserve contract together with metadata identifying the Canton recipient Party ID.
Fees may apply here depending on the L1 chain used. For example, on Ethereum gas fees will apply.
Digital Asset provides an open-source script for sending deposits: xreserve-deposits.
Deposit using the open-source UI
Select the target environment
By default, the UI opens in Mainnet. To switch to Testnet, use the settings gear in the top-right corner. Connect a wallet
Click on Connect Wallet and connect a wallet that supports WalletConnect, such as MetaMask.
Enter deposit details
Provide the following information:
- Amount (USDC): the amount to send to Circle’s xReserve contract.
- Canton recipient Party ID: the Party ID that will receive the minted USDC on the Canton Network.
The Party ID entered here should match the Party ID that was onboarded.
Review and confirm the deposit
Click Deposit, review the confirmation popup carefully, and approve the transactions in the connected wallet.Two wallet transactions must be approved after confirming the popup. Wait for L1 finality
After submission, wait for the source-chain transaction to finalize. On Ethereum, this is typically 13 to 15 minutes, or about two epochs.Once finality is reached, Circle confirms the deposit and the xReserve operator creates the corresponding deposit attestation on the Canton Network.
Receive funds on the Canton Network
After the deposit attestation has been created on the Canton Network, the recipient user can mint the corresponding USDC.
Wait for the deposit attestation to appear
Circle provides the deposit attestation after L1 finality, and the xReserve operator writes it to the Canton Network as a contract the user can action.
Process the attestation
What happens next depends on whether pre-approval is enabled for the Party ID. Pre-approval enabled
Pre-approval disabled
The deposit attestation is actioned automatically and the USDC is minted without manual user interaction.
The user must manually click Mint to mint the pending deposits as USDC on the Canton Network.Clicking Mint processes all pending deposit attestations in one action. Verify updated holdings
Once minting completes, the user’s holdings update on the xReserve UI. View the holding in the DA Registry UI
The new USDC holding amount is also visible in the DA Registry UI under Registry -> Holdings.
After minting, the USDC holdings can be utilized through CIP-0056 compliant workflows.
Burn / Withdrawal Workflow
This workflow burns USDC on the Canton Network and releases the equivalent amount, minus fees, on the destination L1 chain.
Withdraw funds on the Canton Network
Start the withdrawal request
On the landing page, click Withdraw next to the user’s USDC holdings. Populate the withdrawal form
The first popup asks for the destination network, recipient address, and amount.
- Network: the destination L1 network.
- Recipient: the recipient address on the destination network.
- Amount: the USDC amount to withdraw.
- Fee checkbox: whether Circle’s flat withdrawal fee is included in the entered amount or added on top.
The amount supports up to 6 decimal places and cannot exceed the user’s available USDC holding.
Review the withdrawal details
Click Review to open the confirmation popup and validate the withdrawal before submission. Confirm the withdrawal
Click Confirm Withdraw. The specified amount is burned on the Canton Network and the user sees a success banner. Track processing status
While the request is being processed, it appears in the xReserve transaction history.
Receive funds on the destination L1 chain
After the withdrawal request is submitted, the xReserve operator and Circle validate it. Once confirmed, Circle releases the equivalent amount of USDC, minus the applicable xReserve withdrawal fees, to the destination address on the selected L1 chain.
When complete, the transaction history entry on the xReserve landing page moves to Finalized.
Pre-approval Setting
Pre-approval authorizes xReserve to mint all incoming deposits automatically for the user’s Party ID.
Turn pre-approval on or off from the landing page
Use the pre-approval toggle on the landing page. Confirm the change
A confirmation popup appears. After confirmation, a success banner is shown. Verify the updated state
The landing page reflects the new pre-approval setting after the update is applied.
This setting can also be changed from the settings page.
Settings
The settings screen centralizes account, connectivity, and local UI preferences.
To open it, click the profile icon in the top-right corner and select Settings.
Available settings
Remove account (offboard)
Offboards the current account and archives the associated smart contract. See Offboarding.
Lets the user delegate minting authority so deposits can be minted directly to the Party ID. See Pre-approval.
Enables or disables WebSocket connections for real-time contract updates. When disabled, the UI falls back to HTTP polling.
Enables or disables periodic polling for contract updates. When disabled, the UI relies on WebSocket connections only.
Clears locally accumulated active contracts in the xReserve UI.
Enables or disables the display of executed deposits in the transaction history.