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 becomeserverfunded, then claim the Arkade VHTLC to receive
your VTXOs:
- WebSocket (recommended)
- Polling
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 reachesserverfunded when the invoice is paid, then serverredeemed once
Satora claims your VTXOs to complete the swap. There is no claim step on your side.
- WebSocket (recommended)
- Polling
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.Full example: Lightning → Arkade
Full example: Lightning → Arkade
Full example: Arkade → Lightning
Full example: Arkade → Lightning