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

# USDCx Bridging

## Overview

USDCx bridging allows you to **move USDC issued by Circle between Ethereum and Canton** seamlessly. This functionality leverages **Circle's XReserve**, enabling fast, secure, and compliant movement of USDCx across chains while maintaining token integrity.

## Supported Bridging Actions

HIFI currently supports the following USDCx bridging functionalities:

* **Mint USDCx from Ethereum to Canton** – Lock USDC on Ethereum and mint USDCx in Canton.
* **Burn USDCx from Canton to Ethereum** – Burn USDCx in Canton and release USDC on Ethereum.

## How USDCx Bridging Works

<Steps>
  <Step title="Create Bridging Request">
    The user initiates a bridging request from either Ethereum or Canton, specifying the amount and destination chain. A bridging quote is returned for review.
  </Step>

  <Step title="Accept Bridging Quote">
    The user accepts the bridging quote to confirm the operation and proceed with the bridge.
  </Step>

  <Step title="Bridge Processing">
    HIFI processes the bridging operation, validating the source transaction and preparing the destination chain transfer.
  </Step>

  <Step title="Mint or Release Tokens">
    Tokens are either minted on the destination chain (Canton) or released back on Ethereum, depending on the bridging direction.
  </Step>

  <Step title="Accept Transfer Offer on Canton">
    For bridges minting USDCx on Canton to an external wallet, a corresponding transfer offer is created. The recipient must accept the offer to receive USDCx in their Canton wallet.
  </Step>

  <Step title="Completion">
    The user’s wallet balance is updated, and a bridging transaction hash is recorded for auditing and reference.
  </Step>
</Steps>

## Mint USDCx to Canton

To mint USDCx on Canton, we will first use the [Create Bridge](https://docs.hifi.com/api-reference/bridge/create-a-bridge) endpoint to initiate a cross-chain transfer.

### Create Bridging Request

**Request:**

```bash theme={null}
curl -X POST "https://sandbox.hifibridge.com/v2/wallets/bridges" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "requestId": "1d860428-1d0b-47c5-9e65-98961ff59215",
    "amount": 10,
    "source": {
      "userId": "usr_abc123",
      "chain": "ETHEREUM",
      "currency": "usdc"
    },
    "destination": {
      "userId": "usr_abc123",
      "chain": "CANTON",
      "currency": "usdcx"
    }
  }'
```

<Accordion title="Response">
  ```json theme={null}
  {
    "transferType": "WALLET.BRIDGE",
    "transferDetails": {
      "id": "brg_abc123",
      "requestId": "1d860428-1d0b-47c5-9e65-98961ff59215",
      "createdAt": "2025-02-24T17:44:54.781519+00:00",
      "updatedAt": "2025-02-24T17:44:54.781519+00:00",
      "amount": 10,
      "status": "OPEN_QUOTE",
      "source": {
        "userId": "usr_abc123",
        "walletAddress": "0xE9cfBf1D690565579D823264170eE357f80e9A34",
        "walletId": "wallet_abc123",
        "chain": "ETHEREUM",
        "currency": "usdc"
      },
      "destination": {
        "userId": "usr_abc123",
        "walletAddress": "HIFI-validator-1::1220e636b510224be2c15b4436c0eb72558fdd6a93268b3605fad7f27f58192910e6",
        "walletId": "wallet_abc456",
        "chain": "CANTON",
        "currency": "usdcx"
      },
      "receipt": {
        "transactionHash": null,
        "operations": {
          "mint": null,
          "burn": null,
          "approve": null
        }
      },
      "quoteInformation": {
        "sendGross": {
          "amount": "10.00",
          "currency": "usdc"
        },
        "sendNet": {
          "amount": "10.00",
          "currency": "usdc"
        },
        "receiveGross": {
          "amount": "10.00",
          "currency": "usdcx"
        },
        "receiveNet": {
          "amount": "10.00",
          "currency": "usdcx"
        },
        "rate": "1",
        "railFee": {
          "amount": "0",
          "currency": "usdc"
        }
      }
    }
  }
  ```
</Accordion>

### Accept Bridging Request

Accept the quote to kick off the bridging process

**Request:**

```bash theme={null}
curl -X POST "https://sandbox.hifibridge.com/v2/wallets/bridges/:transactionId/accept" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
```

<Accordion title="Response">
  ```json theme={null}
  {
    "transferType": "WALLET.BRIDGE",
    "transferDetails": {
      "id": "brg_abc123",
      "requestId": "1d860428-1d0b-47c5-9e65-98961ff59215",
      "createdAt": "2025-02-24T17:44:54.781519+00:00",
      "updatedAt": "2025-02-24T17:44:54.781519+00:00",
      "amount": 10,
      "status": "SOURCE_INITIATED",
      "source": {
        "userId": "usr_abc123",
        "walletAddress": "0xE9cfBf1D690565579D823264170eE357f80e9A34",
  	  "walletId": "wallet_abc123",
        "chain": "ETHEREUM",
        "currency": "usdc"
      },
      "destination": {
        "userId": "usr_abc123",
        "walletAddress": "HIFI-validator-1::1220e636b510224be2c15b4436c0eb72558fdd6a93268b3605fad7f27f58192910e6",
        "walletId": "wallet_abc456",
        "chain": "CANTON",
        "currency": "usdcx"
      },
      "receipt": {
        "transactionHash": null,
        "operations": {
          "mint": null,
          "burn": null,
          "approve": null
        }
      },
      "quoteInformation": {
        "sendGross": {
          "amount": "10.00",
          "currency": "usdc"
        },
        "sendNet": {
          "amount": "10.00",
          "currency": "usdc"
        },
        "receiveGross": {
          "amount": "10.00",
          "currency": "usdcx"
        },
        "receiveNet": {
          "amount": "10.00",
          "currency": "usdcx"
        },
        "rate": "1",
        "railFee": {
          "amount": "0",
          "currency": "usdc"
        }
      }
    }
  }
  ```
</Accordion>

### Accept Transfer Offer

If the destination wallet is external to HIFI’s system, the recipient must explicitly accept the transfer offer created by HIFI’s operational wallet.

<Warning>
  The associated transfer offer will have an expirtation date for 30 days from offer creation, please make sure to accept the offer before the expiration time.
</Warning>

## Burn USDCx on Canton and Receive on Ethereum

To release USDC back on Ethereum, simply use the [Create Bridge](https://docs.hifi.com/api-reference/bridge/create-a-bridge) endpoint to initiate a cross-chain transfer from Canton to Ethereum.

This request will burn USDCx on Canton and, once completed, release the corresponding USDC on Ethereum and deposit directly to the recipient's wallet.

<Note>
  Currently, a **flat 4.75 USDC fee** is charged at the protocol level by **Circle’s XReserve** for each burn transaction.
</Note>

### Create Bridging Request

**Request:**

```bash theme={null}
curl -X POST "https://sandbox.hifibridge.com/v2/wallets/bridges" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "requestId": "1d860428-1d0b-47c5-9e65-98961ff59215",
    "amount": 10,
    "source": {
      "userId": "usr_abc123",
      "chain": "CANTON",
      "currency": "usdcx"
    },
    "destination": {
      "userId": "usr_abc123",
      "chain": "ETHEREUM",
      "currency": "usdc"
    }
  }'
```

<Accordion title="Response">
  ```json theme={null}
  {
    "transferType": "WALLET.BRIDGE",
    "transferDetails": {
      "id": "brg_abc123",
      "requestId": "1d860428-1d0b-47c5-9e65-98961ff59215",
      "createdAt": "2025-02-24T17:44:54.781519+00:00",
      "updatedAt": "2025-02-24T17:44:54.781519+00:00",
      "amount": 10,
      "status": "OPEN_QUOTE",
      "source": {
        "userId": "usr_abc123",
        "walletAddress": "HIFI-validator-1::1220e636b510224be2c15b4436c0eb72558fdd6a93268b3605fad7f27f58192910e6",
        "walletId": "wallet_abc456",
        "chain": "CANTON",
        "currency": "usdcx"
      },
      "destination": {
        "userId": "usr_abc123",
        "walletAddress": "0xE9cfBf1D690565579D823264170eE357f80e9A34",
        "walletId": "wallet_abc123",
        "chain": "ETHEREUM",
        "currency": "usdc"
      },
      "receipt": {
        "transactionHash": null,
        "operations": {
          "mint": null,
          "burn": null,
          "approve": null
        }
      },
      "quoteInformation": {
        "sendGross": {
          "amount": "10.00",
          "currency": "usdcx"
        },
        "sendNet": {
          "amount": "10.00",
          "currency": "usdcx"
        },
        "receiveGross": {
          "amount": "5.25",
          "currency": "usdc"
        },
        "receiveNet": {
          "amount": "5.25",
          "currency": "usdc"
        },
        "rate": "1",
        "railFee": {
          "amount": "4.75",
          "currency": "usdc"
        }
      }
    }
  }
  ```
</Accordion>

### Accept Bridging Request

Accept the quote to kick off the bridging process

**Request:**

```bash theme={null}
curl -X POST "https://sandbox.hifibridge.com/v2/wallets/bridges/:transactionId/accept" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
```

<Accordion title="Response">
  ```json theme={null}
  {
    "transferType": "WALLET.BRIDGE",
    "transferDetails": {
      "id": "brg_abc123",
      "requestId": "1d860428-1d0b-47c5-9e65-98961ff59215",
      "createdAt": "2025-02-24T17:44:54.781519+00:00",
      "updatedAt": "2025-02-24T17:44:54.781519+00:00",
      "amount": 10,
      "status": "SOURCE_INITIATED",
      "source": {
        "userId": "usr_abc123",
        "walletAddress": "0xE9cfBf1D690565579D823264170eE357f80e9A34",
  	  "walletId": "wallet_abc123",
        "chain": "ETHEREUM",
        "currency": "usdc"
      },
      "destination": {
        "userId": "usr_abc123",
        "walletAddress": "HIFI-validator-1::1220e636b510224be2c15b4436c0eb72558fdd6a93268b3605fad7f27f58192910e6",
        "walletId": "wallet_abc456",
        "chain": "CANTON",
        "currency": "usdcx"
      },
      "receipt": {
        "transactionHash": null,
        "operations": {
          "mint": null,
          "burn": null,
          "approve": null
        }
      },
      "quoteInformation": {
        "sendGross": {
          "amount": "10.00",
          "currency": "usdc"
        },
        "sendNet": {
          "amount": "10.00",
          "currency": "usdc"
        },
        "receiveGross": {
          "amount": "10.00",
          "currency": "usdcx"
        },
        "receiveNet": {
          "amount": "10.00",
          "currency": "usdcx"
        },
        "rate": "1",
        "railFee": {
          "amount": "0",
          "currency": "usdc"
        }
      }
    }
  }
  ```
</Accordion>

## Getting Help

* 📧 **Email:** [support@hifi.com](mailto:support@hifi.com)
* 💬 **Slack:** Message us in our shared Slack channel

## Related Resources

* [Wallet Transfers](/transactions/transfers) - Single wallet transfers
* [Bridging](/transactions/bridging) - Cross-chain transfers
* [Transfer Offers](/docs/features/canton/transfer-offer) - Canton Transfer Offers
* [Webhooks](/webhooks) - Real-time approval notifications
* [API Reference](https://docs.hifi.com/api/authentication) - Complete endpoint documentation
