Native client for BTCPay Server. Manage terminal sales, invoices, wallets, payouts, and admin settings. Supports on-chain and Lightning transactions with alerts for payments and server status.
An unofficial, native Android client for BTCPay Server, built with Jetpack Compose on the Greenfield API. It is a community project. The BTCPay Server Foundation and the BTCPay Server contributors do not make, endorse or support it.
- Terminal: keypad point of sale, tips, live checkout QR.
- Invoices: search, filters, refunds, payment requests, crowdfunds.
- Wallets: on-chain and Lightning, one Send screen for both.
- Payouts: pull payments, approvals, payout processors.
- Admin: stores, users, webhooks, email, server status.
- Alerts: payments, payouts and server notifications, checked by the phone.
Summary generated by Zapstore from source.
Original description, as the developer published it.
Stacked in
Latest release
Uses the camera to scan QR codes for payments and invoices.
Permissions
- Camera CAMERA Take photos and record video To scan QR codes.
- Notifications POST_NOTIFICATIONS Send you notifications
Release notes
This release fixes the problems that a full review of the app found: security hardening, safer payments, alerts that do not stop, and clearer screens. It is a full release.
Requires Android 15 (API 35) or later, on an arm64-v8a phone. From this release, the APK has native code for arm64-v8a only.
Install it over 0.2.7. The signing key is the same. Accounts you already added keep working.
Changed
- The APK is about 180 KB smaller (estimate). It has no native libraries for x86, x86_64 or armeabi-v7a.
- Settings shows a row when Android blocks the app's notifications. The row opens Android Settings.
- Refund shows "Bitcoin", "Lightning" or "LNURL" on the "Paid with" chips, and the chips go onto a second line when necessary.
- The recovery phrase of a new wallet shows numbered words.
- Apps of plugin types open in the browser. Before, they opened in the point of sale editor.
- The app shows Create, Archive, Refund, store settings links and the transaction label editor only when the API key can do the action.
Fixed
- An invoice that the server could not return stopped the alerts of its store. Now the other invoices are still checked.
- Home scan: a scan before the payment methods loaded opened Send with no wallet. Now Send waits for them.
- Wallet Receive: with an amount that is not valid, the QR code showed only the address. Now no code shows until you correct the amount. An older response can no longer replace a new address.
- Pull payments: the list now reloads when you come back, so a new or archived pull payment shows.
- Invoice details: a refused "Mark as" or archive now keeps its error on screen.
- Invoice list: a filter or search change now shows progress.
- Checkout: the "paid" vibration plays one time only. The QR code goes away at the expiry time, also when the polls fail.
- Terminal: the keypad does not change the amount while a charge is in progress.
- New invoice and Refund ask before you discard a filled form.
- Send: a bitcoin: URI that you type stays in the field, and the review reads its amount.
- Lightning: a node address with no host is refused before the confirmation. A very large flat fee limit or receive expiry is refused.
- Accounts: "Revoke and remove" works for a key that is already revoked, and a back press cannot stop it halfway. A rename does not reload the session.
- Notifications: "Mark all as seen" marks all of them, not only the first 50.
- Payout processors: the interval field accepts a decimal point.
- Store users: the role is also sent under the key that BTCPay Server 2.4.4 uses.
- A pasted API key with hidden characters failed with "Could not reach the server". Now these characters are removed. For an .onion server, the app tells you to open the approval page in Tor Browser.
- TalkBack speaks error banners.
Privacy and security
- Other apps cannot draw overlays over the app (protection against tapjacking).
- Secret fields tell the keyboard not to learn what you type.
- The app does not send an extended private key (xprv, zprv and others) to the server from the derivation scheme field.
- An empty or truncated encrypted file is put in quarantine and the app lock stays on. Before, an empty settings file turned the app lock off.
- The StrongBox fallback also works on phones that give a general key error.
- With no screen lock on the phone, the lock screen tells you to set one. It does not say "try again".
- An on-chain fee rate above 500 sat/vB shows a warning when no fee estimate is available.
- You cannot remove the active account while a payment is in progress.
- No background job runs when the app has no account.
- A JSON decode error shows a fixed text, not the server's data.
Files
| File | Use |
|---|---|
btcpayapp-0.2.8.apk |
Release build, signed. Android 15 or later, arm64-v8a. |
btcpayapp-0.2.8.apk.sha256 |
The SHA-256 of the APK, for shasum -c. |
Verify the download
- APK SHA-256:
04fc8a84c604ac20694b8ce8df207f76b056d0f1cfca0a17e82c4d15bdf6ec62 - Signing certificate SHA-256:
67ac728e39bb4866e613c8f676ab4cbd2baaa6a0d2728c53dcf9913f993727ba
shasum -a 256 -c btcpayapp-0.2.8.apk.sha256
apksigner verify --print-certs btcpayapp-0.2.8.apk
Do not install an APK with a different certificate.
Comments
Loading comments…
More bitcoin apps
See more-
Z
Zap of Nakamoto by Zap of Nakamoto Just zap it
-
P
Peach Bitcoin by peachbitcoin Buy and sell bitcoin peer-to-peer, without KYC.
-
H
Hopp by Nodesignal Podcast 🎙 - Deine Bitcoin-Frequenz Honest open podcast player — Podcasting 2.0 with value for value over Lightning
-
F
Fedimint A federated ecash mint on your phone with QR-based setup, guardian management, and easy backups.
-
A
AnyPay by Juraj🏴💛🌘 Pay any crypto payment code with Lightning
-
C
Chama by Bitcrazy🏄🏾♂️ Trade Bitcoin and local money with people in your community.
Get BtcPayServer the private way
Updates checked on your device, and every release verified before it installs.