Devpost

Inspiration

Tando is already a free public utility in Kenya: anyone can spend Bitcoin at any M-PESA till, paybill, or phone number, with no Tando fee and no signup. But two costs remain hidden in the plumbing:

  1. The operator manages a Lightning node, opening channels, buying inbound liquidity, and rebalancing just to receive payments.
  2. Users still pay Lightning routing fees to get their sats to Tando's node.

Ark solves both. Tando abstracts all of its Lightning and liquidity management to an Ark server's Lightning gateway. For anyone on the same Ark, payments became instant and effectively free.

What it does

"Tando's Ark" equips Tando with Bark, the Ark implementation by Second (https://second.tech), swapping the operator's Lightning node for a barkd client on the Tando server.

  • For the operator: no more channels or liquidity to manage. Inbound capacity comes from the Ark server's Lightning gateway as VTXOs.
  • For existing users: nothing changes. Tando still issues a unified invoice that any Lightning wallet can pay fully backwards compatible.
  • For Ark-native users: payments arrive as arkoor transfers (off-chain, wallet-to-wallet on the same Ark server). Instant, no routing fees, no Tando fee. They can pay any M-PESA recipient in Kenya straight from their Bitcoin balance.

How we built it

We replaced the Lightning node infrastructure on the Tando server with barkd.

  • Wallet bootstrap: barkd starts wallet-less and exposes a create endpoint; the app connects the treasury wallet on first run, which boots the daemon.
  • Receiving: Tando creates a unified invoice (POST /receives/invoice) that works for both Lightning and Ark payers.
  • Settlement: instead of phoenixd's webhook, we subscribe to barkd's WebSocket movement stream and settle a transaction when a lightning_receive or arkoor movement completes, then fire the existing M-PESA payout, untouched.

Challenges we ran into

  • No drop-in webhook. phoenixd POSTs a payment_received webhook; barkd instead emits a real-time WalletNotification stream over WebSocket. We re-modeled settlement around movement events (bark.lightning_receive / bark.arkoor).

Accomplishments that we're proud of

  1. A backwards-compatible swap: every existing Tando user keeps working, on the same QR, with zero app-side disruption.
  2. A dual-rail unified invoice: Lightning for the world, arkoor for Ark-native wallets, with no extra "pay with Ark" button.
  3. A path to the first 0-fee, Ark-native Bitcoin→M-PESA payments reaching 52 million M-PESA users across Kenya.

What we learned

  1. Ark economics: payments between wallets on the same Ark server are instant and effectively free, because they never touch Lightning or on-chain.
  2. Liquidity as a service: pointing barkd at an Ark server's Lightning gateway lets an operator shed all channel and inbound-liquidity management.
  3. The network effect is the product: the value isn't one cheaper payment. It's that every new wallet on the same Ark makes the whole circle cheaper.

What's next for Tando's Ark

Now that Tando's Ark receives both Lightning and Ark payments, any user paying from an Ark-enabled wallet, such as the Noah Wallet (https://beta.noahwallet.io), also powered by Second), can pay into M-PESA from their Bitcoin balance with 0% fees, as long as they share Tando's Ark server.

This creates a network effect: everyone who joins the same Ark transacts with each other at 0% fees.

Read the original on devpost.com ↗