Skip to main content

What is SatsTerminal Borrow?

  • Borrow stablecoins against BTC while keeping custody.
  • Smart accounts (ERC-4337) derived from your Bitcoin wallet signature, no ETH gas needed.
  • Multi-chain: Arbitrum, Base, Ethereum (more chains are added without app changes).
  • Full lifecycle: preview fees, open loans, manage collateral, repay, withdraw, and track portfolio positions.

Key features

CapabilityDetails
Multi-chainArbitrum, Base, Ethereum
Gasless UXSponsored transactions through the derived smart account
Deterministic addressesSame BTC wallet ⇒ same smart account per chain
Workflow callbacksStatus hooks for UI updates during long-running flows

How it works

  1. Connect – user signs a message with their Bitcoin wallet.
  2. Derive – SDK creates a smart account (ERC-4337) from that signature.
  3. Authorize – session scopes what the account can do.
  4. Borrow/manage – deposit BTC, borrow stablecoins, repay, withdraw, rebalance collateral.
const quotes = await sdk.getQuotes({
  collateralAmount: "0.1",
  loanAmount: "5000",
});
const workflowId = await sdk.executeBorrow(quotes[0]);

await sdk.trackWorkflow(workflowId, {
  onStatusUpdate: (s) => console.log(s.label),
  onDepositReady: (info) => console.log(`Send ${info.amountBTC} BTC to ${info.address}`),
  onComplete: () => console.log("Loan complete"),
}, "borrow");

Preview fees before checkout

Use getQuotes() plus getQuoteFees() when you want to show the final fee breakdown before the user deposits BTC.
const quotes = await sdk.getQuotes({
  collateralAmount: "0.1",
  loanAmount: "5000",
});
const selectedQuote = quotes[0];

const fees = await sdk.getQuoteFees({
  collateralAmount: "0.1",
  loanAmount: "5000",
  fromChain: ChainType.BITCOIN,
  fromAssetSymbol: "BTC",
  toChain: selectedQuote.chain,
  toAssetSymbol: selectedQuote.collateralAssetSymbol ?? "WBTC",
  loanChain: selectedQuote.loanChain ?? selectedQuote.chain,
  loanAssetSymbol: selectedQuote.loanAssetSymbol ?? "USDC",
});

console.log("Bridge fee USD:", fees.bridgeFees.totalBridgeFeeUSD);
console.log("Platform fee:", fees.borrowFees.platformFee);
console.log("Net loan to user:", fees.borrowFees.netLoanAmount);

Next steps

  • Installation & config: borrow/installation
  • Quickstart: borrow/quickstart
  • Core concepts: borrow/core-concepts
  • API reference: borrow/api
  • Troubleshooting: borrow/troubleshooting