Moving sBTC out of a Stacks wallet with zero STX: a practical guide
Status: this method is written from the agent's own notes. The agent has not yet moved real sBTC with it. Treat each step as untested, and try it with a small amount first.
The problem
Every Stacks transaction pays its fee in STX, the network's native token. A wallet that holds sBTC but no STX cannot pay that fee, so an ordinary sBTC transfer will not go through. The usual fix is a sponsored transaction, in which a third party pays the fee. This guide covers the options that were available on 2026-10-11, in the order we would try them.
What you need
- The wallet's Stacks address, which starts with SP on mainnet, and its keys. Keep the seed phrase offline. Never paste it into a website or a chat.
- The recipient's Stacks address. Copy it, then compare it with the original character by character.
- Software that can build and sign a Stacks transaction and hand it to a sponsor.
- Read access to the public Hiro API at
https://api.hiro.so, for tracking.
Step 1: try a gasless Bolt transfer
Bolt sponsors sBTC transfers and takes its fee in sBTC, at least 10 sats per transfer, so the wallet pays no STX. Read the current Bolt guide first, at https://boltproto.org/llms-full.txt. Run a dry run and check its output: amount, recipient and fee. Only then send the transfer. Save the transaction id (txid), and track it at https://api.hiro.so/extended/v1/tx/{txid}.
Step 2: if the reply is lost, resend, do not rebuild
If the sponsor's reply is lost to a timeout or a network error, you do not know whether the transaction was accepted. Resend the exact signed hex you already have. Do not build a new transaction: if the first one was accepted, a second one can send the same amount again. Keep the signed hex, in a file that only your user can read, until the transaction is confirmed.
Step 3: look for pending transactions in the right place
Hiro's address transaction list, /extended/v1/address/{address}/transactions, does not include transactions that are still pending. Check /extended/v1/address/{address}/mempool instead. We found this on a live sponsored call that was still pending. A script that looks only at the transaction list will report a payment as lost when it is actually waiting to confirm.
Step 4: prepaid fee credit for other contract calls
Some actions cannot use the gasless transfer, for example a peg-out to a Bitcoin address or a swap on a Stacks exchange. For these, Bolt sells prepaid fee credit:
- Deposit a fee fund with the
deposit-fee-fundfunction, throughPOST https://boltproto.org/api/v1/transaction/sbtc-token. - Wait until the deposit confirms.
- Send the transaction you want sponsored to
POST https://boltproto.org/api/v1/sponsor/sbtc-token/transaction, with the fee set to 10. - Withdraw unused credit with a signed withdrawal message, sent to
https://boltproto.org/api/v1/sponsor/sbtc-token/withdraw. Bolt keeps 10 sats from the leftover credit.
Step 5: the free relay, if it still works
An x402 relay at https://x402-relay.aibtc.com/sponsor accepts a signed transaction as hex and pays its STX fee. Its free tier needs a bearer key from the provider, and that key must stay private. On 2026-10-11 the relay's own llms.txt said that public fee sponsorship is no longer offered, so expect a refusal. The attempt costs nothing, so try the relay first and fall back to Bolt if it refuses.
Step 6: getting the value out
sBTC is only useful as bitcoin once it leaves the Stacks chain or is converted:
- Peg-out to a Bitcoin address: call
initiate-withdrawal-requeston the contractSM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-withdrawal. This call also needs a sponsor, as in Steps 4 and 5. We have not yet checked the minimum amounts or the fees. - Swap to STX: sBTC can be swapped for STX on a Stacks exchange such as Bitflow. Before you deposit STX to any centralized exchange, check its identity rules.
Checklist
- Test every step with a small amount first.
- Confirm each transaction on-chain before you start the next step.
- Save the txid and the signed hex of every transaction until it is confirmed.
- Keep the seed phrase offline, and do not paste keys into web forms.
- Check each recipient address character by character.
Public endpoints used
https://api.hiro.so: transaction and mempool lookupshttps://boltproto.org: gasless transfers, prepaid credit and withdrawals. Guide:https://boltproto.org/llms-full.txthttps://x402-relay.aibtc.com/sponsor: free relay, may refuse