Breaking the node barrier with Spark
When your phone goes offline, traditional routing and channel updates cannot happen. This limit made early mobile payment tools hard to use for freelancers who needed stable payment addresses. Without a web connection, your wallet could not do the complex steps to keep channels open. This tech barrier meant users had to choose between staying online or letting others hold their money.
The Breez Spark SDK solves this problem with a nodeless design for decentralized payments [1]. Instead of running a full node on your phone, the system utilizes a native layer two protocol [1]. This setup lets a Self-custodial Lightning wallet talk to the network without running a local node [1]. The design ensures that your mobile client remains lightweight and fast, preventing third parties from holding your funds while making the network much easier to use [1].
This complete integration brings client-side signing directly to your mobile device [1]. The Breez SDK is free for developers and provides bindings to popular programming languages [1]. Users can also send stablecoins like USDC and USDT on networks like Base and Ethereum [1]. It also allows you to keep your balance stable in USD [1]. This integration simplifies payments by removing the heavy infrastructure requirements of traditional nodes, letting apps offer fast payments to a global audience without losing security [1].
Ownership of private keys and operator limitations
Under this modern decentralized design, you might wonder who actually controls the money. In our wallet, the seed phrase and private keys are made and stored only on your device. The SpendTheBits backend only stores public data like addresses and transaction hashes. This helps run payments and protects your true control. We never see your seed or private key under any circumstances. You must sign every transaction on your local device before it goes to the network.
Because our architecture is fully non-custodial, the cryptographic keys are only held by users [1]. The system operators cannot move your funds, freeze your balance, or reverse any transactions you sign on your phone. This means that even if our servers are completely down, your funds remain secure on your device. The operators simply lack the cryptographic authority to touch your balance. You retain absolute control over your financial assets at all times.
This split of power makes sure you keep full control of your assets with no third party risk. To learn more, read our introductory guide to self-custody. It shows why keeping your keys is vital for financial freedom. This non-custodial security model is fully live on both iOS and Android platforms. One seed phrase makes all your addresses on many networks. It is self-custodial, so the system never holds your funds.
Receiving payments while your phone is offline
Historically, if a client sent you a payment while your phone was off, the transaction would simply fail. This made getting paid hard for remote workers who travel and do not have a steady web connection. It forced many people to use custodial services just to ensure they did not miss inbound payments. The lack of offline support was a major roadblock for the global use of small, fast payments.
The Spark SDK solves this offline problem by using a smart payment delivery system to help you maintain a secure Self-custodial Lightning wallet [3]. This client-side signing process ensures you maintain custody throughout the entire transaction cycle. This ensures you never miss a transaction even if you are offline for days at a time. To make things run even smoother, our app supports simple Lightning addresses like handle@pay.spendthebits.com. These addresses look like standard email addresses and are served by a hosted server [4].
You can read our guide to Lightning addresses to see how this works. This setup means you can share your address and receive Bitcoin safely even when your phone is turned off. When you need to get paid immediately, you can generate a standard invoice [3]. This request specifies the amount the other party must send to your wallet [3]. Generating this payment request only requires your public key, keeping your private keys secure [3]. This off-chain payment goes over the Lightning Network. Still, the app does not support BOLT12 offers.

The unilateral exit safety net
A true self-custody system must let you get your funds out if the provider stops working. Spark gives you this high safety through a tool called a unilateral exit [2]. This setup lets you move your whole balance to the main Bitcoin blockchain [2]. You do not need the operator to sign off on the transaction [2]. It acts as a final safeguard for your funds if the operators stop helping you with normal withdrawals [2].
The unilateral exit is a key safety net for your funds if the operators stop helping you [2]. But it is a last resort. It takes many on-chain steps and can take days due to timelocks [2]. It also requires you to have your own separate Bitcoin to pay for the necessary mining fees [2]. These fee-bump transactions use a child-pays-for-parent mechanism to ensure they get confirmed by miners [2]. You must supply this funding from a native SegWit address to make sure the transactions are valid [2].
Your balance is held in a tree of pre-signed transactions, where each leaf represents a portion of your funds [2]. To recover them, you must broadcast these transactions to the network yourself in order [2]. Read our comparison of Lightning versus on-chain payments to see how they compare. This help document explains how transaction fees differ between these two payment methods. By keeping this exit data synced on your device, you do not need any third party server [2].
Understanding leaf optimization and exit costs
When you use a Self-custodial Lightning wallet, how the system builds your balance matters. The SDK splits your total balance into various transaction leaves to facilitate daily payments [2]. This split uses leaf optimization to balance your daily payment experience against your exit costs [2]. More leaves allow for smoother payments without constant adjustments, while fewer leaves cost less to exit [2]. The default settings are optimized to suit most everyday wallets [2].
If your balance is spread across many small leaves, a unilateral exit needs more transactions [2]. This means more of your funds go to on-chain mining fees during an emergency recovery [2]. Because of this, some low-value leaves might be left behind during an emergency exit [2]. You must check these fees carefully before you start a unilateral recovery process. The SDK lets you quote these fees beforehand so you know exactly what to expect [2].
To avoid high fees, use the standard cooperative exit path when the operator is online [2]. Cooperative paths are cheaper and faster, and they do not need to post the whole transaction tree on-chain [2]. Also, SpendTheBits charges no fee on Lightning payments. You only pay standard network routing fees. If you want to learn more about how to secure your setup, read our guide to self-custody for extra tips.
How static identifiers and LNURL-Pay function
Lightning addresses use LNURL-Pay to make Bitcoin payments as simple as sending an email [4]. You do not need to make a new invoice for every payment. You can share one static identifier with clients [5]. The system requests a new invoice behind the scenes when a sender enters your address [4]. This removes the friction of coordinating payment details manually. It makes getting paid for your work incredibly convenient.
This rule is set by LUD-16 [5]. It shows how static web identifiers turn into payment requests [5]. When a wallet finds a static address, it asks the service domain to resolve the destination [5]. This process allows for frictionless tipping and freelance payments across different platforms [5]. The protocol requires adding metadata to the JSON array to identify the payment link [5]. The system also ensures that only the receiver's public key is required to create these invoices [3].
By integrating this standard, we make it easy for remote workers to get paid globally. You can register your custom handle directly within our application and share it with clients. Your handle will then be linked to your public identity key securely [4]. This process does not require sharing your private keys at any point [3]. If you want to bridge other assets, we charge a small fee, under one percent, shown before you confirm.
In the app · 3 steps
Receive Bitcoin on Lightning in SpendTheBits
The wallet runs the Lightning side on your phone, so you keep the keys. Here is where each step lives.
Open Receive and pick Lightning
Receive has a Lightning tab next to the on-chain address, so you choose the rail before you share anything.

Enter an amount if you want one
Ask for a specific amount or leave it open. The code the app shows follows what you typed.

Share the invoice
Copy it, show the QR, or share it as an image. The keys that sign never leave the phone.

Hold your own keys, keep the yield, skip the middleman.
SpendTheBits is a fully non-custodial wallet for 13 chains, free on iOS and Android.

