How to Swap Bitcoin for USDC Without Custody: A Step-by-Step Guide Using Boltz
Overview
The Bitcoin ecosystem has long lacked a direct, trustless bridge to regulated digital dollars. Centralized exchanges require accounts, identity verification, and custody of funds—introducing friction and counterparty risk. Boltz, a leading non-custodial swap provider, now offers USDC Swaps, enabling instant, permissionless conversion between Bitcoin and USDC (the regulated stablecoin issued by Circle). This guide walks you through the process, from understanding the concept to executing a secure swap.

USDC Swaps operate trustlessly: funds remain under your control until the moment USDC arrives in your wallet. No account, no sign-up, no KYC. Swaps are supported across all major Bitcoin layers, including the Lightning Network. This bridge connects Bitcoin’s open, censorship-resistant layer with Circle’s audited, compliant dollar—used by Stripe, Coinbase, Visa, BlackRock, and many others.
Prerequisites
Before you begin, ensure you have the following:
- A Bitcoin Lightning wallet (e.g., Phoenix, Breez, or Wallet of Satoshi) for receiving/sending Bitcoin via Lightning. Alternatively, a standard on-chain Bitcoin wallet works if you choose the on-chain option.
- A USDC-compatible wallet on a supported blockchain (e.g., Ethereum, Polygon, or Arbitrum). Most likely you want an Ethereum wallet like MetaMask, or a multi-chain wallet such as Trust Wallet.
- Sufficient funds in your Bitcoin wallet (if swapping BTC → USDC) or USDC wallet (if swapping USDC → BTC).
- Basic understanding of how cryptocurrency transactions work—particularly the difference between on-chain and Lightning payments.
Step-by-Step Guide
Step 1: Access Boltz Exchange
Open your web browser and navigate to boltz.exchange. The interface is minimalist and does not require registration. You will see two swap directions: Bitcoin → USDC and USDC → Bitcoin.
Step 2: Select Swap Direction and Amount
Choose the direction you need. For this example, we’ll swap Bitcoin (Lightning) to USDC (Ethereum). Enter the amount of Bitcoin you want to exchange. The system will show the estimated USDC amount you’ll receive, including any network fees. Boltz shows reverse swap and swap options—for BTC → USDC you’ll use a reverse swap (receiving USDC via a contract).
Step 3: Provide Destination Address
Enter your Ethereum wallet address where you want to receive USDC. Ensure it is correct—sending to the wrong address results in permanent loss. Boltz supports multiple USDC-chains; select the correct one (e.g., Ethereum ERC-20). For Lightning to USDC, you will also need to fund the swap from your Lightning wallet.
Step 4: Initiate the Swap
Click “Swap Now” or similar. Boltz will generate a Lightning invoice (if you are sending Bitcoin) or a USDC invoice (if sending USDC). For BTC → USDC, you’ll receive a Lightning invoice to pay. Use your Lightning wallet to scan the invoice and make payment. The swap is non-custodial: Boltz never holds your keys; the swap executes via smart contracts and atomic swaps.
Step 5: Wait for Confirmation
After payment, Boltz will broadcast the USDC transaction to your chosen blockchain. Depending on network congestion, this may take a few seconds to a few minutes. You can track the status on the swap page provided by Boltz. Once the USDC transaction is confirmed in your wallet, you’re done.
Advanced: Using the Boltz API (for Developers)
Boltz also offers a public API for programmatic swaps. Here’s a simplified Python example using the requests library to create a swap (for illustration only—actual implementation requires proper signing and error handling):
import requests
url = "https://api.boltz.exchange/v2/swap"
payload = {
"type": "reverse",
"pair": "L-BTC/USDC",
"orderSide": "sell",
"invoiceAmount": 100000, # satoshis
"refundAddress": "bc1q...",
"claimAddress": "0x..." # USDC destination
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
Common Mistakes
- Wrong network selection: Always double-check that your USDC wallet is set to the same network as the one Boltz shows (e.g., Ethereum ERC-20). Sending to a different chain can cause permanent loss.
- Insufficient funds or fees: Ensure you have enough Bitcoin (plus Lightning fees) or USDC (plus gas) to cover the swap. Low balances lead to failed transactions.
- Expired invoices: Lightning invoices have a time limit (usually 1 hour). Pay promptly after generating the invoice. If expired, create a new swap.
- Using custodial wallets: The whole point is non-custodial. Avoid using wallets where you don’t control the private keys (e.g., some exchange wallets).
- Ignoring swap limits: Boltz has minimum and maximum amounts. Check these before initiating to avoid rejections.
Summary
Boltz’s USDC Swaps provide the first truly non-custodial bridge between Bitcoin and Circle’s regulated dollar. This guide covered the overview, prerequisites, step-by-step instructions (including an API example for developers), and common pitfalls. By following these steps, you can move between Bitcoin and USDC without accounts, KYC, or custody—retaining full control over your funds at all times. The result is a permissionless connection between the open Bitcoin ecosystem and the institutional stablecoin world.