Skip to main content

Overview

Lightning and Arkade are both off-chain Bitcoin layers, so swapping between them is fast and cheap. There are no on-chain confirmations to wait for. Satora bridges the two using HTLCs that share a single secret hash, so neither side can cheat:
  • Lightning → Arkade: you pay a BOLT11 invoice and receive Arkade VTXOs.
  • Arkade → Lightning: you fund an Arkade VHTLC with VTXOs and Satora pays a BOLT11 invoice you provide.
Both directions settle off-chain in seconds. The same secret hash locks the Lightning side and the Arkade VHTLC, so the atomic swap either completes on both legs or refunds.

Lightning → Arkade

You pay a Lightning invoice, the server funds an Arkade VHTLC, and you claim it to receive VTXOs.

Create the swap

Pay the invoice

Pay the BOLT11 invoice returned in the response with any Lightning wallet (e.g. Phoenix, Wallet of Satoshi). The SDK generates the secret and shares only its hash, so the server can settle the swap only after you reveal the secret by claiming.

Monitor status & claim

Wait for the status to become serverfunded, then claim the Arkade VHTLC to receive your VTXOs:

Arkade → Lightning

You provide a Lightning invoice, fund an Arkade VHTLC with your VTXOs, and Satora pays the invoice automatically.

Create the swap

Pass a BOLT11 invoice as the target. You can also pass an LNURL or Lightning address together with an amount, and Satora fetches an invoice for you.
The invoice amount must match what the swap pays out after fees. Use client.getArkadeToLightningQuote(sourceAmountSats) to compute the correct invoice amount up front, or pass an LNURL/Lightning address so the amount is negotiated automatically.

Fund the VHTLC

Send the source amount in VTXOs from your Arkade wallet to the VHTLC address returned in the response:

Monitor status

Once your VTXOs land in the VHTLC, Satora settles the Lightning invoice automatically. The swap reaches serverfunded when the invoice is paid, then serverredeemed once Satora claims your VTXOs to complete the swap. There is no claim step on your side.
If the invoice can’t be paid (status serverwontfund or clientinvalidfunded), your VTXOs stay locked in the VHTLC. Retry with a fresh invoice using client.retryArkadeToLightningSwap(swapId, { lightningAddress }), which collaboratively moves your funds into a new swap with no locktime wait. See Refund an on-chain HTLC for recovery details.

Build with AI

We have generated a llms-full.txt file that converts all our documentation into a single markdown document following the llmstxt.org standard. Feed it to any AI coding agent (Claude, Cursor, Copilot, etc.) and it will have everything it needs to integrate the Satora Swaps SDK into your project.