The simple way to add bitcoin payments to your app
Support fast, low-cost payments across Ark, Lightning, and on-chain through a single integration. No channel management and fully self-custodial.
import { Wallet, generateMnemonic } from "@secondts/bark-react-native"
const wallet = await Wallet.create(generateMnemonic(), config, dataDir, false)
// ⚡ Pay a Lightning invoice. No channels, no liquidity to manage.
await wallet.payLightningInvoice("lnbc1pvjluez...", undefined, true)
// Pay an Ark address. Instant and off-chain.
await wallet.sendArkoorPayment("ark1qqn8zq...", 25_000n)
const { spendableSats } = await wallet.balance()import init, { Wallet, generateMnemonic } from "@secondts/bark/web"
await init()
const wallet = await Wallet.create({ mnemonic, config, dbName: "bark", forceRescan: false })
// ⚡ Pay a Lightning invoice. No channels, no liquidity to manage.
await wallet.payLightningInvoice({ invoice: "lnbc1pvjluez...", wait: true })
// Pay an Ark address. Instant and off-chain.
await wallet.sendArkoorPayment("ark1qqn8zq...", 25_000)
const { spendableSats } = await wallet.balance()import Bark
let wallet = try await Wallet.create(mnemonic: mnemonic, config: config, datadir: dataDir, forceRescan: false)
// ⚡ Pay a Lightning invoice. No channels, no liquidity to manage.
try await wallet.payLightningInvoice(invoice: "lnbc1pvjluez...", amountSats: nil, wait: true)
// Pay an Ark address. Instant and off-chain.
try await wallet.sendArkoorPayment(arkAddress: "ark1qqn8zq...", amountSats: 25_000)
let balance = try await wallet.balance()import uniffi.bark.*
val wallet = Wallet.create(mnemonic, config, dataDir, false)
// ⚡ Pay a Lightning invoice. No channels, no liquidity to manage.
wallet.payLightningInvoice("lnbc1pvjluez...", null, true)
// Pay an Ark address. Instant and off-chain.
wallet.sendArkoorPayment("ark1qqn8zq...", 25_000uL)
val balance = wallet.balance()import 'package:bark_bitcoin/bark_bitcoin.dart';
final wallet = await Wallet.create(mnemonic: mnemonic, config: config, datadir: dataDir, forceRescan: false);
// ⚡ Pay a Lightning invoice. No channels, no liquidity to manage.
await wallet.payLightningInvoice(invoice: "lnbc1pvjluez...", amountSats: null, wait: true);
// Pay an Ark address. Instant and off-chain.
await wallet.sendArkoorPayment(arkAddress: "ark1qqn8zq...", amountSats: 25000);
final balance = await wallet.balance();import "gitlab.com/ark-bitcoin/bark-ffi-bindings/golang/bark"
wallet, _ := bark.WalletCreate(mnemonic, config, dataDir, false)
defer wallet.Destroy()
// ⚡ Pay a Lightning invoice. No channels, no liquidity to manage.
wallet.PayLightningInvoice("lnbc1pvjluez...", nil, true)
// Pay an Ark address. Instant and off-chain.
wallet.SendArkoorPayment("ark1qqn8zq...", 25_000)
balance, _ := wallet.Balance()use bark::Wallet;
let wallet = Wallet::create(/* mnemonic, config, db, ... */).await?;
// ⚡ Pay a Lightning invoice. No channels, no liquidity to manage.
wallet.pay_lightning_invoice(invoice, None, true).await?;
// Pay an Ark address. Instant and off-chain.
wallet.send_arkoor_payment(&address, Amount::from_sat(25_000)).await?;
let balance = wallet.balance().await?;One Rust core. Native bindings for every platform.
Available in
Enable Ark and Lightning with one integration
A new approach to bitcoin scaling
Ark lets users share UTXOs and transact them off-chain, so payments are instant and cheap. Plus, it even simplifies sending payments over Lightning!

Easy onboarding
No fees or channel opening. Ark users can start receiving self-custodial bitcoin payments immediately after setting up their wallet.
More about onboarding
Fast, low-cost transactions
Settle payments almost instantly with minimal fees, giving users a seamless experience without the delays and costs of on-chain transactions.
More about transactions
Familiar bitcoin-like model
Bitcoin-like addresses and a familiar interface that make for an effortless transition to layer two for developers and users alike.
More about Ark UXEnable Lightning payments, painlessly
Lightning is awesome. But if you’ve ever built a Lightning integration, you’ll know how brutal it can be. With Second, you can do Lightning without “doing Lightning”.
Source on GitLab
Get familiar with bark, Second’s Ark wallet implementation. Woof!
View bark on GitLab
Never have to worry about channel management again
Second helps you skip the stress of channel management and payment routing. You only need to take care of the Ark integration and your users will get access to the Lightning Network. No Lightning expertise required.
Seamless onboarding: No fees, no friction
With Ark, onboarding is as smooth as it gets. Your users can start sending Lightning payments instantly without the need to open a channel first. It’s the fastest way to get started, delivering a user experience that’s intuitive and hassle-free.

Answering your questions about the Ark protocol
Ark is the latest bitcoin tech, so it's normal to have some questions! If we've missed anything, let us know in the Second community.
How Second’s Ark implementation works
Transact with virtual transactions off-chain, with cryptographic assurances that you can broadcast your transaction on-chain even if your Ark isn’t available.

Client-server structure
Instead of relying on a network of nodes, Ark users connect to an Ark server, where they can transact with other users of the Ark quickly and at low cost. Liquidity management is taken care of by the Ark, leaving you and your users to focus on more important things.

Virtual UTXOs
VTXOs are off-chain UTXOs that can be broadcast on the bitcoin blockchain at any time.

Round-based anchors
Shared UTXOs are written to the bitcoin blockchain periodically. Verify your Ark balance on-chain.

Offboarding to on-chain
To move bitcoin back on-chain, make a payment to any on-chain address, and it’ll be broadcast in the Ark’s next round.

Ark-to-Lightning gateway
Pay Lightning invoices directly from an Ark balance, no channels, liquidity, or LSPs required. Handled atomically.
We’re building the Ark protocol
All our contributions are open-source. If you’d like to run, test, or contribute to Second’s implementation of the Ark protocol, head to our code repository.
Stay ahead of the Ark
Be the first to hear about Second and Ark updates.