> ## Documentation Index
> Fetch the complete documentation index at: https://docs.digitalasset.com/llms.txt
> Use this file to discover all available pages before exploring further.

# xReserve Workflows

> Operational workflows for onboarding, deposits, withdrawals, pre-approval, and settings in the xReserve UI.

This page walks through the main xReserve user workflows for moving USDC between an L1 chain and the Canton Network.

<CardGroup cols={2}>
  <Card title="Onboarding" href="#xreserve-onboarding" icon="user-plus">
    One-time setup that authorizes a specific Party ID to use xReserve.
  </Card>

  <Card title="Offboarding" href="#xreserve-offboarding" icon="user-minus">
    Reverse onboarding and deactivate the Party ID for future xReserve activity.
  </Card>

  <Card title="Mint / Deposit" href="#xreserve-mint" icon="plus">
    Send USDC on an L1 chain and mint the equivalent amount on the Canton Network.
  </Card>

  <Card title="Burn / Withdrawal" href="#xreserve-burn" icon="minus">
    Burn USDC on the Canton Network and release the equivalent amount on the destination L1 chain.
  </Card>

  <Card title="Pre-approval" href="#xreserve-pre-approval" icon="check-circle">
    Allow xReserve to auto-mint incoming deposits for a Party ID.
  </Card>

  <Card title="Settings" href="#xreserve-settings" icon="gear">
    Manage offboarding, pre-approval, connectivity, local state, and transaction-history preferences.
  </Card>
</CardGroup>

<a id="xreserve-onboarding" />

# 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.

<Tip>
  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.
</Tip>

<Steps>
  <Step title="Log in to the xReserve UI">
    The exact login process depends on your organization's authentication policies.
  </Step>

  <Step title="Open the onboarding flow">
    After login, the user lands on an empty state page and can start onboarding by clicking the yellow **Onboard** button.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Onboarding_1.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=91243613e62644fdfb677047527d0684" alt="Onboarding landing page with Onboard button" width="1000" data-path="usdc-xreserve/pictures/Onboarding_1.png" />
    </Frame>
  </Step>

  <Step title="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.

    <Tabs>
      <Tab title="Pre-approval enabled">
        All future deposits for this Party ID are minted automatically, based on the delegated authority given to xReserve.

        <Frame>
          <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Onboarding_2_Popup_PreApproval.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=4b0372e132d6f36d7dd70e7ea386e124" alt="Onboarding confirmation popup with pre-approval enabled" width="400" data-path="usdc-xreserve/pictures/Onboarding_2_Popup_PreApproval.png" />
        </Frame>
      </Tab>

      <Tab title="Pre-approval disabled">
        The user must manually click **Mint** for each new deposit attestation before USDC is created on the Canton Network.

        <Frame>
          <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Onboarding_2_Popup_NoPreApproval.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=3d91ab38b4dfd2e78bdfc76a7dc27be1" alt="Onboarding confirmation popup with pre-approval disabled" width="400" data-path="usdc-xreserve/pictures/Onboarding_2_Popup_NoPreApproval.png" />
        </Frame>
      </Tab>
    </Tabs>
  </Step>

  <Step title="Submit the request and wait for approval">
    After the user clicks **Confirm Onboard**, a success popup appears in the lower-left corner.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Onboarding_3_Successful.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=bdbdac4cc2967170a02b2c2ad4691b98" alt="Successful onboarding request banner" width="300" data-path="usdc-xreserve/pictures/Onboarding_3_Successful.png" />
    </Frame>

    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.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Onboarding_4_After_Success.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=c2b4caf9de8007236bc1c7e172ac21a5" alt="Landing page after onboarding completes" width="1000" data-path="usdc-xreserve/pictures/Onboarding_4_After_Success.png" />
    </Frame>
  </Step>
</Steps>

<a id="xreserve-offboarding" />

# Offboarding Workflow

Offboarding removes a Party ID from xReserve so it can no longer be used for the app's workflows.

<Steps>
  <Step title="Open the Settings page">
    Click the profile icon in the top-right corner and select **Settings**. The first option is **Remove account (offboard)**.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Offboarding_1.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=162f4619a7ac9b997dcb5cf347384211" alt="Settings page with offboarding option" width="700" data-path="usdc-xreserve/pictures/Offboarding_1.png" />
    </Frame>
  </Step>

  <Step title="Confirm offboarding">
    Click the red **Offboard** button, then confirm the action in the popup.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Offboarding_2.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=2b8f58f352097e678e067afa7d124aea" alt="Offboarding confirmation popup" width="400" data-path="usdc-xreserve/pictures/Offboarding_2.png" />
    </Frame>

    After confirmation, the Party ID is offboarded and can no longer use xReserve until it is onboarded again.
  </Step>
</Steps>

<Tip>
  Users can re-onboard in the future by repeating the onboarding flow.
</Tip>

<a id="xreserve-mint" />

# 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.

<Frame>
  <img src="https://mintcdn.com/digitalasset-374e862b/4w8LLqj9mjMqgYFX/usdc-xreserve/pictures/mint_workflow.png?fit=max&auto=format&n=4w8LLqj9mjMqgYFX&q=85&s=d4c95d4af0bfe39152bfe301c96741fe" alt="Mint workflow overview" width="1000" data-path="usdc-xreserve/pictures/mint_workflow.png" />
</Frame>

## 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.

<Info>
  Fees may apply here depending on the L1 chain used. For example, on Ethereum gas fees will apply.
</Info>

<AccordionGroup>
  <Accordion title="Option 1: Script" defaultOpen>
    Digital Asset provides an open-source script for sending deposits: [xreserve-deposits](https://github.com/digital-asset/xreserve-deposits).
  </Accordion>

  <Accordion title="Option 2: Open-source UI">
    Digital Asset also provides a lightweight UI that supports `WalletConnect` and can be used on both `Mainnet` and `Testnet`.

    URL: [https://digital-asset.github.io/xreserve-deposits/](https://digital-asset.github.io/xreserve-deposits/)
  </Accordion>
</AccordionGroup>

### Deposit using the open-source UI

<Steps>
  <Step title="Select the target environment">
    By default, the UI opens in `Mainnet`. To switch to `Testnet`, use the settings gear in the top-right corner.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/4w8LLqj9mjMqgYFX/usdc-xreserve/pictures/deposit_1.png?fit=max&auto=format&n=4w8LLqj9mjMqgYFX&q=85&s=c4b8b9bcf5b87beed74b35cbb18f0848" alt="Deposit UI showing environment selector" width="600" data-path="usdc-xreserve/pictures/deposit_1.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Deposit_2.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=7a42666852e8ae8bd95c5858fa2210dd" alt="Deposit environment selection popup" width="400" data-path="usdc-xreserve/pictures/Deposit_2.png" />
    </Frame>
  </Step>

  <Step title="Connect a wallet">
    Click on **Connect Wallet** and connect a wallet that supports `WalletConnect`, such as MetaMask.
  </Step>

  <Step title="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.

    <Warning>
      The Party ID entered here should match the Party ID that was onboarded.
    </Warning>

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Deposit_3.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=08ad3fd0cec6aed469a128a5ba04adcf" alt="Deposit form with amount and recipient fields" width="600" data-path="usdc-xreserve/pictures/Deposit_3.png" />
    </Frame>
  </Step>

  <Step title="Review and confirm the deposit">
    Click **Deposit**, review the confirmation popup carefully, and approve the transactions in the connected wallet.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Deposit_4_Confirm_Popup.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=af5943d9bdc0030e5bd60abcb5c2795c" alt="Deposit confirmation popup" width="400" data-path="usdc-xreserve/pictures/Deposit_4_Confirm_Popup.png" />
    </Frame>

    Two wallet transactions must be approved after confirming the popup.
  </Step>

  <Step title="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.
  </Step>
</Steps>

## 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.

<Steps>
  <Step title="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.
  </Step>

  <Step title="Process the attestation">
    What happens next depends on whether pre-approval is enabled for the Party ID.

    <Tabs>
      <Tab title="Pre-approval enabled">
        The deposit attestation is actioned automatically and the USDC is minted without manual user interaction.
      </Tab>

      <Tab title="Pre-approval disabled">
        The user must manually click **Mint** to mint the pending deposits as USDC on the Canton Network.

        <Frame>
          <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Deposit_5_Mint_CN.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=ea907468e8df72a4af2b6d1e0954bc29" alt="Landing page showing pending deposits ready to mint" width="1000" data-path="usdc-xreserve/pictures/Deposit_5_Mint_CN.png" />
        </Frame>

        Clicking **Mint** processes all pending deposit attestations in one action.

        <Frame>
          <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Deposit_5_Mint_Success.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=6d7ad660955c7c3c28f5af8056c92f10" alt="Mint success banner" width="300" data-path="usdc-xreserve/pictures/Deposit_5_Mint_Success.png" />
        </Frame>
      </Tab>
    </Tabs>
  </Step>

  <Step title="Verify updated holdings">
    Once minting completes, the user's holdings update on the xReserve UI.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Deposit_6_Success_SC.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=12ab2ea012c6d071b6526578a809be27" alt="Updated holdings after successful mint" width="1000" data-path="usdc-xreserve/pictures/Deposit_6_Success_SC.png" />
    </Frame>
  </Step>

  <Step title="View the holding in the DA Registry UI">
    The new USDC holding amount is also visible in the DA Registry UI under **Registry** -> **Holdings**.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Deposit_7.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=254a4757824b3f5430f87fbb94717e54" alt="Holdings view showing minted USDC in DA Apps" width="800" data-path="usdc-xreserve/pictures/Deposit_7.png" />
    </Frame>
  </Step>
</Steps>

<Tip>
  After minting, the USDC holdings can be utilized through CIP-56 compliant workflows.
</Tip>

<a id="xreserve-burn" />

# Burn / Withdrawal Workflow

This workflow burns USDC on the Canton Network and releases the equivalent amount, minus fees, on the destination L1 chain.

<Frame>
  <img src="https://mintcdn.com/digitalasset-374e862b/4w8LLqj9mjMqgYFX/usdc-xreserve/pictures/burn_workflow.png?fit=max&auto=format&n=4w8LLqj9mjMqgYFX&q=85&s=a481c1b1566febe6a2e110efdc979d4b" alt="Burn workflow overview" width="1000" data-path="usdc-xreserve/pictures/burn_workflow.png" />
</Frame>

## Withdraw funds on the Canton Network

<Steps>
  <Step title="Start the withdrawal request">
    On the landing page, click **Withdraw** next to the user's USDC holdings.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Withdrawal_1.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=b2943ab305d31fc61f726dac3d6057e7" alt="Landing page with withdraw button" width="1000" data-path="usdc-xreserve/pictures/Withdrawal_1.png" />
    </Frame>
  </Step>

  <Step title="Populate the withdrawal form">
    The first popup asks for the destination network, recipient address, and amount.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Withdrawal_2_Popup_1_Ex_Fees.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=ef11775a91ef835537bbfa30f280801e" alt="Withdrawal popup with editable fields" width="300" data-path="usdc-xreserve/pictures/Withdrawal_2_Popup_1_Ex_Fees.png" />
    </Frame>

    * **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.

    <Info>
      The amount supports up to 6 decimal places and cannot exceed the user's available USDC holding.
    </Info>
  </Step>

  <Step title="Review the withdrawal details">
    Click **Review** to open the confirmation popup and validate the withdrawal before submission.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Withdrawal_2_Popup_2_Ex_Fees.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=7dcfb679522e06fceab54e4556b61558" alt="Withdrawal review popup" width="300" data-path="usdc-xreserve/pictures/Withdrawal_2_Popup_2_Ex_Fees.png" />
    </Frame>
  </Step>

  <Step title="Confirm the withdrawal">
    Click **Confirm Withdraw**. The specified amount is burned on the Canton Network and the user sees a success banner.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Withdrawal_3_Success_Popup.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=646c894befd954995a4d683b3d3dce85" alt="Withdrawal success popup" width="300" data-path="usdc-xreserve/pictures/Withdrawal_3_Success_Popup.png" />
    </Frame>
  </Step>

  <Step title="Track processing status">
    While the request is being processed, it appears in the xReserve transaction history.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Withdrawal_4_Blotter_Pending.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=7fbe9c47ace4763111a1df1284cd81cc" alt="Pending withdrawal in transaction history" width="1000" data-path="usdc-xreserve/pictures/Withdrawal_4_Blotter_Pending.png" />
    </Frame>
  </Step>
</Steps>

## 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](https://developers.circle.com/xreserve/references/fees), to the destination address on the selected L1 chain.

When complete, the transaction history entry on the xReserve landing page moves to **Finalized**.

<Frame>
  <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Withdrawal_5_Blotter_Finalized.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=8fb98c2f2882d4f10c838f304e26e5d5" alt="Finalized withdrawal in transaction history" width="1000" data-path="usdc-xreserve/pictures/Withdrawal_5_Blotter_Finalized.png" />
</Frame>

<a id="xreserve-pre-approval" />

# Pre-approval Setting

Pre-approval authorizes xReserve to mint all incoming deposits automatically for the user's Party ID.

<Steps>
  <Step title="Turn pre-approval on or off from the landing page">
    Use the pre-approval toggle on the landing page.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Pre-Approval_Off.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=e8183c971a53b3a467b92cd649c81fde" alt="Pre-approval toggle turned off" width="1000" data-path="usdc-xreserve/pictures/Pre-Approval_Off.png" />
    </Frame>
  </Step>

  <Step title="Confirm the change">
    A confirmation popup appears. After confirmation, a success banner is shown.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Pre-Approval_Popup.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=5c76a14ae2c17b26be78f51d63baf929" alt="Pre-approval confirmation popup" width="400" data-path="usdc-xreserve/pictures/Pre-Approval_Popup.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Pre-Approval_Success.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=c0c129796c1a1e325de0e1c62ed3d1d8" alt="Pre-approval success banner" width="300" data-path="usdc-xreserve/pictures/Pre-Approval_Success.png" />
    </Frame>
  </Step>

  <Step title="Verify the updated state">
    The landing page reflects the new pre-approval setting after the update is applied.

    <Frame>
      <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Pre-Approval_On.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=a1185621c396055ef68877b038586d16" alt="Pre-approval toggle turned on" width="1000" data-path="usdc-xreserve/pictures/Pre-Approval_On.png" />
    </Frame>
  </Step>
</Steps>

<Tip>
  This setting can also be changed from the settings page.
</Tip>

<a id="xreserve-settings" />

# 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**.

<Frame>
  <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Settings_1.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=eb22af28734b21fa9c185b8b8e16c232" alt="Entry point to settings page" width="1000" data-path="usdc-xreserve/pictures/Settings_1.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Settings_2.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=99c39ef70a7575209931fa27f1b69d5d" alt="Settings menu dropdown" width="300" data-path="usdc-xreserve/pictures/Settings_2.png" />
</Frame>

## Available settings

<Frame>
  <img src="https://mintcdn.com/digitalasset-374e862b/p9AZQ2uBSRi6msaX/usdc-xreserve/pictures/Settings_3.png?fit=max&auto=format&n=p9AZQ2uBSRi6msaX&q=85&s=c957c8f2a9402e355e65a1d1b62cb54c" alt="Settings screen overview" width="700" data-path="usdc-xreserve/pictures/Settings_3.png" />
</Frame>

<AccordionGroup>
  <Accordion title="Remove account (offboard)" defaultOpen>
    Offboards the current account and archives the associated smart contract. See [Offboarding](#xreserve-offboarding).
  </Accordion>

  <Accordion title="Pre-approval">
    Lets the user delegate minting authority so deposits can be minted directly to the Party ID. See [Pre-approval](#xreserve-pre-approval).
  </Accordion>

  <Accordion title="WebSocket">
    Enables or disables WebSocket connections for real-time contract updates. When disabled, the UI falls back to HTTP polling.
  </Accordion>

  <Accordion title="Network polling">
    Enables or disables periodic polling for contract updates. When disabled, the UI relies on WebSocket connections only.
  </Accordion>

  <Accordion title="Active contract storage">
    Clears locally accumulated active contracts in the xReserve UI.
  </Accordion>

  <Accordion title="Transaction history">
    Enables or disables the display of executed deposits in the transaction history.
  </Accordion>
</AccordionGroup>
