Community

Wallets

Nostr Pay

Nostr Pay is a compact Flutter client for NWC: paste a wallet connection URI, read the remote balance, create invoices and pay BOLT11 invoices from a mobile interface.

Nostr Pay icon
Wallets Money paths Wallets, NWC, zaps, mints, Lightning addresses and payment tooling.
Back to Nostr
Wallets

Wallets shelf

Wallet pages collect zaps, Lightning accounts, Nostr Wallet Connect, ecash, payment interfaces and the security tradeoffs around moving money through Nostr.

Apps All Apps pages 520 pages in this routeApp pages, App categories, Product pages and 3 more shelves Browse pagesClose shelf

App orientation

App categories

App profiles

0xchatadvanced-nostr-searchAegisAlbyAlby GoAlby HubAlby HubAlby SDKAmberAmberAmethystAmethystApp and product researchApplication-specific dataBlossomBlossom spec NIP-B7BookstrBorisBouquetCalendar by FormstrChachiNostr Apps DirectoryCoracleCoracleCorny ChatCreatrDamusDamusDeveloper stack researchDittoDittodiVineDocstrDTANEmojitoFlotillaFlycatFormstrFountainFreeFromFundstrfutrGIF BuddyGittrgo-nostrGossipGossipGrimoireGroups NIP-29HablaHablaHello Nostr — ResourcesHighlighterHiveTalkhomebrew-nostrHORNET StorageHugo2NostrHyperNoteIrisIrisJumblekanbanstrKeys BandListrLNBits NostrmarketLumeLumilumiLUMINAMapstrMarmot Protocolmatrix-nostr-bridgeMeetstrMemestrMindsmonstrmostardMostronaknak — Nostr Army KnifeNalgorithmNarrnashboardNDKNegentropyngitNofluxNosNos Socialnos2xnosbinnosclNostorg Feature MatrixNostr App ManagerNostr Apps Directory GuideNostr clients feature listNostr Compass — ProjectsNostr Developer GuideNostr Development KitNostr Events MonitorNostr MCP ServerNostr NestsNostr PlaygroundNostr Service ProvidersNostr Writernostr-post-checkernostr-protocol/nostrnostr-rubynostr-sdknostr-sdk-ffinostr-sdk-flutternostr-to-rssnostr-toolsNostr.bandnostr.buildnostr.co.uk ClientsNostr.how — Clientsnostr.hsNostrabilityNostrAppsNostrApps category — AudioNostrApps category — CareerNostrApps category — CommunityNostrApps category — CurationNostrApps category — Direct MessageNostrApps category — DiscoveryNostrApps category — File SharingNostrApps category — Group ChatNostrApps category — MeatspaceNostrApps category — OnboardingNostrApps category — SignersNostrApps category — Toolsnostrchecknostrdbnostrdb-rsNostreeNostreonNostriaNostridNostrium / read.nostr.comNostrmoNostrubenoStrudelnoStrudelNostterNosturNosturNotedeckNpub.proNpub.worldnsec.appnsiteNsiteNstart.meObsidian Nostr WriterOlasOpenvibeOracoloOstrich WorkOwn Your PostsP2P BandPazPeridotPhoenixPlebeian MarketPostizPostr / write.nostr.comPrimalPrimalPrimal Article Editor / Reads authoringPrimal Studiopynostrpython-nostrRecommended Application HandlersRelay Toolsrsslayrust-nostrrust-nostr docsSatelliteSatellite EarthSatlantisSatShootShakespeareShopstrSlidestrSnortSnortStemstrswift-nostr-clientTreasuresWavlakeWavlakeWikifreediaWikistrYakiHonneYakiHonneYakiHonne mobile/web app directoryYondar

App pages

Deep dives

Field guides

Awesome Nostr branches

NIP explainer pages

Research and library

Source inventory

Deep Research: Clients, apps and product surfacesDeep Research: Developer stack and toolingResearch Map: nostrapps.comResearch Source: 0xchatResearch Source: 0xchat — NostrApps pageResearch Source: advanced-nostr-searchResearch Source: Aegis — NostrApps pageResearch Source: AlbyResearch Source: Alby — NostrApps pageResearch Source: Alby GoResearch Source: Alby HubResearch Source: Alby Hub GitHubResearch Source: Alby SDKResearch Source: AmberResearch Source: Amber — NostrApps pageResearch Source: AmethystResearch Source: Amethyst GitHubResearch Source: Awesome Nostr ResourcesResearch Source: BookstrResearch Source: BorisResearch Source: Boris — NostrApps pageResearch Source: BouquetResearch Source: Bouquet — NostrApps pageResearch Source: Calendar by FormstrResearch Source: ChachiResearch Source: Chachi — NostrApps pageResearch Source: CoracleResearch Source: Coracle — NostrApps pageResearch Source: Corny ChatResearch Source: DamusResearch Source: Damus — NostrApps pageResearch Source: DittoResearch Source: Ditto — NostrApps pageResearch Source: DocstrResearch Source: DTANResearch Source: DTAN — NostrApps pageResearch Source: EmojitoResearch Source: Emojito — NostrApps pageResearch Source: Flotilla — NostrApps pageResearch Source: FlycatResearch Source: FormstrResearch Source: Formstr — NostrApps pageResearch Source: FountainResearch Source: FreeFromResearch Source: FreeFrom — NostrApps pageResearch Source: FundstrResearch Source: futrResearch Source: futr — NostrApps pageResearch Source: GIF BuddyResearch Source: GIF Buddy — NostrApps pageResearch Source: GittrResearch Source: go-nostr GitHubResearch Source: GossipResearch Source: Gossip — NostrApps pageResearch Source: GrimoireResearch Source: Grimoire — NostrApps pageResearch Source: HablaResearch Source: Habla — NostrApps pageResearch Source: Hello Nostr — ResourcesResearch Source: HighlighterResearch Source: HiveTalkResearch Source: HORNET Storage — NostrCompassResearch Source: IrisResearch Source: Iris — NostrApps pageResearch Source: JumbleResearch Source: Jumble — NostrApps pageResearch Source: Keys BandResearch Source: Keys Band — NostrApps pageResearch Source: ListrResearch Source: LNBits NostrmarketResearch Source: LumeResearch Source: LumilumiResearch Source: LUMINAResearch Source: MapstrResearch Source: Marmot ProtocolResearch Source: MeetstrResearch Source: MemestrResearch Source: MindsResearch Source: monstr GitHubResearch Source: mostardResearch Source: MostroResearch Source: my.nostr.comResearch Source: nak — Nostr Army KnifeResearch Source: nak GitHubResearch Source: NalgorithmResearch Source: Narr — NostrApps pageResearch Source: nashboardResearch Source: NDK GitHubResearch Source: NDK NPMResearch Source: NegentropyResearch Source: Noflux — NostrApps pageResearch Source: Nos SocialResearch Source: Nos Social — NostrApps pageResearch Source: nos2xResearch Source: nos2x — NostrApps pageResearch Source: nosbinResearch Source: noscl GitHubResearch Source: Nostorg Feature MatrixResearch Source: Nostr App ManagerResearch Source: Nostr Book — KindsResearch Source: Nostr DesignResearch Source: Nostr Developer GuideResearch Source: Nostr NestsResearch Source: Nostr Nests — NostrApps pageResearch Source: Nostr PlaygroundResearch Source: nostr-post-checkerResearch Source: nostr-protocol/nostr GitHubResearch Source: nostr-sdk crates.ioResearch Source: nostr-sdk-ffi GitHubResearch Source: nostr-tools GitHubResearch Source: nostr-tools NPMResearch Source: Nostr.BandResearch Source: nostr.buildResearch Source: nostr.co.uk ClientsResearch Source: Nostr.howResearch Source: Nostr.how — ClientsResearch Source: Nostr.how — ProtocolResearch Source: Nostr.how — What is Nostr?Research Source: Nostr.orgResearch Source: NostrabilityResearch Source: NostrAppsResearch Source: NostrApps category — AudioResearch Source: NostrApps category — CareerResearch Source: NostrApps category — CommunityResearch Source: NostrApps category — CurationResearch Source: NostrApps category — Direct MessageResearch Source: NostrApps category — DiscoveryResearch Source: NostrApps category — File SharingResearch Source: NostrApps category — Group ChatResearch Source: NostrApps category — MeatspaceResearch Source: NostrApps category — OnboardingResearch Source: NostrApps category — SignersResearch Source: NostrApps category — ToolsResearch Source: nostrcheckResearch Source: nostrdb GitHubResearch Source: NostreeResearch Source: Nostree — NostrApps pageResearch Source: NostriaResearch Source: Nostria — NostrApps pageResearch Source: NostridResearch Source: Nostrmo — NostrApps pageResearch Source: Nostrmo GitHubResearch Source: NostrubeResearch Source: noStrudelResearch Source: noStrudel — NostrApps pageResearch Source: NostterResearch Source: NosturResearch Source: Nostur — NostrApps pageResearch Source: NotedeckResearch Source: Npub.proResearch Source: Npub.worldResearch Source: nsec.appResearch Source: NsiteResearch Source: Nstart.meResearch Source: Nstart.me — NostrApps pageResearch Source: Obsidian Nostr Writer — NostrApps pageResearch Source: OlasResearch Source: Olas — NostrApps pageResearch Source: OpenvibeResearch Source: OracoloResearch Source: Oracolo — NostrApps pageResearch Source: Ostrich WorkResearch Source: P2P BandResearch Source: PazResearch Source: PeridotResearch Source: Peridot — NostrApps pageResearch Source: PhoenixResearch Source: Phoenix — NostrApps pageResearch Source: Plebeian MarketResearch Source: Plebeian Market — NostrApps pageResearch Source: PrimalResearch Source: Primal — NostrApps pageResearch Source: Primal Article Editor / Reads authoringResearch Source: Primal StudioResearch Source: pynostr GitHubResearch Source: python-nostr GitHubResearch Source: Registry of KindsResearch Source: Relay Tools — NostrApps pageResearch Source: rsslayResearch Source: rust-nostr docsResearch Source: rust-nostr GitHubResearch Source: SatelliteResearch Source: SatShootResearch Source: ShakespeareResearch Source: Shakespeare — NostrApps pageResearch Source: ShopstrResearch Source: Shopstr — NostrApps pageResearch Source: SlidestrResearch Source: SnortResearch Source: start.nostr.netResearch Source: StemstrResearch Source: TreasuresResearch Source: WavlakeResearch Source: WikifreediaResearch Source: Wikifreedia — NostrApps pageResearch Source: WikistrResearch Source: Wikistr — NostrApps pageResearch Source: YakiHonne mobile/web app directoryResearch Source: YondarResearch Source: Yondar — NostrApps page
Wallets24 min readAndroid NWC wallet interface, Flutter app, remote Lightning wallet control, invoice creation and invoice payment

Nostr Pay

Nostr Pay is a compact Flutter client for NWC: paste a wallet connection URI, read the remote balance, create invoices and pay BOLT11 invoices from a mobile interface.

The quick readNostr Pay is not a wallet backend and not a maintained consumer wallet recommendation. It is an early Flutter mobile client for Nostr Wallet Connect. The user creates an app connection in a remote Lightning wallet, pastes the `nostr+walletconnect://` URI into Nostr Pay, and the app uses the Dart `nwc` package to talk to the wallet service through Nostr relays. The code stores the NWC secret with `flutter_secure_storage`, hydrates non-secret state, subscribes to kind 23195 response events, sends kind 23194 request events, reads balance with `get_balance`, creates invoices with `make_invoice`, pays BOLT11 invoices with `pay_invoice`, and polls invoice settlement with `lookup_invoice`. The public release is a v0.1.0 debug APK from June 2024, and Awesome NWC marks the project as not maintained. Treat it as a useful open-source NWC/Flutter reference and a small test wallet interface, not as hardened payment software for serious balances.

A mobile client for remote wallets

Nostr Pay is a mobile application client for Nostr Wallet Connect. Its README describes the basic job directly: connect to remote Lightning wallets through NWC. The user does not create a balance inside Nostr Pay. The balance lives in the wallet service behind the NWC connection.

That makes Nostr Pay closer to Brick Wallet, Alby Go or bullishNWC than to a Lightning node. It is a front end that sends wallet requests and renders wallet responses. The app gives the user a mobile surface for balance, receive and send actions, while the remote wallet still decides custody, permissions, limits, relays and uptime.

The most useful way to read Nostr Pay is as an early Flutter proof of a simple question: what would a minimal NWC wallet interface look like on a phone? The answer is not a large financial app. It is a connection screen, a balance screen, a receive flow, a pay-invoice flow and a small amount of wallet metadata.

The repository moved names

The project is commonly linked as `aniketambore/nostr_pay`, and that URL still resolves through GitHub. The current API response points to `anipy1/nostr_pay`. That redirect is worth noting because ecosystem lists and older articles may still use the earlier username.

GitHub describes the repository as a Dart project with the description `Nostr Pay is a mobile application client that enables users to connect to remote Lightning wallets using the Nostr Wallet Connect (NWC) protocol.` The repository was created on June 23, 2024 and had a single main commit in the shallow clone checked for this article.

The public repository is MIT licensed, not archived, and had nine stars, one fork and no open issues when checked. Those numbers should not be overread. They show a small public experiment, not a mature wallet company.

The release is explicitly early

The only public GitHub release checked for this article is `v0.1.0-debug`, published on June 24, 2024. It is marked as a pre-release and ships an `app-release.apk` asset of roughly 54 MB. The release body calls it an early debug version.

That release lists four user-facing capabilities: connect to remote Lightning wallets, view wallet balance, create invoices and pay invoices. That matches the repository code. There is no evidence in the checked repository of a polished app-store distribution, a signed production release train or a long changelog after the first public build.

A reader should treat the APK accordingly. Sideloading a debug or early Android package is different from installing a maintained Play Store wallet. If someone wants to learn from Nostr Pay, the source code is more important than the binary. If someone wants to use it with money, the first balance should be tiny.

Awesome NWC marks it as not maintained

The `getAlby/awesome-nwc` list includes Nostr Pay in the Wallet Interfaces section and describes it as a simple Android wallet connecting to a NWC wallet. The same line marks it as not maintained.

That maintenance note changes how the article should be read. Nostr Pay is still useful as a historical and technical reference. It shows a complete Flutter NWC flow using the Dart package, secure storage, BLoC state and mobile screens. It should not be presented like a current, actively supported daily wallet.

This is especially important because NWC has continued to evolve. Current NIP-47 guidance prefers NIP-44 encryption where supported, while Nostr Pay's checked code uses the Dart package's NIP-04 encrypt and decrypt path. That does not erase the project's value, but it makes maintenance status a real security and compatibility question.

The app has its own icon

Nostr Pay ships a real project logo at `assets/images/nostr_pay_logo.png`, plus web icons, Android launcher icons and iOS AppIcon assets. The large logo is a black orbit-like mark around a yellow payment card and plug shape, with a purple accent.

That logo is the right visual identity for a hub card because it comes from the project repository itself. The web favicon is only 16 by 16 pixels, while the source logo is 3464 by 3464 pixels. A scaled local copy keeps the icon sharp without loading an oversized asset.

The existence of proper app icons also confirms that Nostr Pay was more than a bare code snippet. It had a mobile UI, a brand mark, release screenshots and launcher assets, even if the public release remained early.

Flutter is the product frame

Nostr Pay is a Flutter project. The `pubspec.yaml` name is `nostr_pay`, the app version is `0.1.0`, and the Dart SDK constraint starts at 3.4.1. The dependency list is practical rather than huge: `nwc`, `flutter_bloc`, `flutter_secure_storage`, `hydrated_bloc`, `connectivity_plus`, `rxdart`, `flutter_fgbg`, `qr_flutter`, `share_plus`, `bolt11_decoder`, `auto_size_text` and `lottie` are the core pieces.

Those dependencies map cleanly to the app. BLoC and hydrated state hold the wallet UI together. Secure storage keeps the secret. Connectivity and foreground-background listeners help refresh after network or app-state changes. QR and share packages support invoice screens. BOLT11 decoding lets the pay flow validate an invoice before sending it.

The web folder exists because Flutter scaffolds web output, but the public distribution story is Android. The Android manifest names the app `Nostr Pay`, requests internet permission and uses launcher icons. The build file sets the Android application ID to `com.nwc.nostr_pay`.

Connection starts with a NWC URI

The first screen asks for a connection string with a `nostr+walletconnect://` hint. The validator rejects an empty value, rejects a URI that does not start with the NWC scheme, requires query parameters and checks that `relay=` and `secret=` are present. A Lightning Address value in the URI is optional.

That is an important user-safety detail. The app does not ask for a raw Nostr private key. It expects a wallet app connection URI created by a remote Lightning wallet such as Alby, Mutiny or another NWC-capable service. The remote service decides what that connection can do.

The connect method then parses the URI through `_nwc.nip47.parseNostrConnectUri`, derives the app public key from the secret, stores the secret and puts the wallet pubkey, app pubkey, relay and optional Lightning Address into state.

The secret is stored separately

Nostr Pay uses a `NWCCredentialsManager` and a small `KeyChain` wrapper around `flutter_secure_storage`. The key name is `account_secret`, and the app stores only the parsed NWC secret through that path.

The BLoC state is hydrated separately. The serialized state includes type, balance, max allowed to pay, wallet pubkey, app pubkey, relay, optional Lightning Address and connection status. It does not include the secret in the JSON state object.

That split is good architecture for a mobile wallet interface. It does not make the app a vault, and it does not make a broad NWC connection low-risk. But it is materially better than putting the NWC secret in plain hydrated state or a normal preferences object.

The protocol flow is easy to see

`NWCAccountCubit` is the core file. It creates an `NWC` instance in `main.dart`, initializes the relay service with the relay from the connection URI, subscribes to events from the wallet service and reacts to result types. The subscription filter listens for kind 23195 events authored by the wallet pubkey.

When a response event arrives, the app decrypts the event content with `_nwc.nip04.decrypt`, parses the result through `_nwc.nip47.parseResponseResult`, and then branches on `get_balance`, `make_invoice`, `pay_invoice`, `lookup_invoice` or error.

When the app wants to ask the wallet for something, `_sentToRelay` encrypts a JSON message with `_nwc.nip04.encrypt`, creates a kind 23194 event tagged to the wallet service pubkey and sends it to the relay. That is NIP-47 in a readable Flutter shape.

The NIP-04 detail matters

The checked Nostr Pay code uses `nip04` helpers for request and response encryption. That matched earlier NWC implementations, and the `nwc` Dart package page also discusses NIP-04. Current NIP-47 text, however, describes NIP-44 as the preferred encryption mode and treats NIP-04 as legacy compatibility.

This is not a reason to dismiss the app as useless. It is a reason to be precise. Nostr Pay is a 2024 early client. It can teach the shape of NWC, but a modern production client should check encryption negotiation, wallet-service info events and current NIP-47 requirements.

For a reader, the practical question is simple: will the wallet service they want to use still support the encryption path the app uses? If the backend has moved to NIP-44-only behavior, an old NIP-04 client may not work. If it does work, the user still needs to decide whether legacy encryption is acceptable for the funds involved.

Balance is read as millisats, shown as sats

The app refreshes by sending a `get_balance` request. When a balance response arrives, `assembleNWCAccountState` converts the returned balance and max amount from millisatoshis into sats with integer division by 1000.

The home screen displays that balance as formatted sats. The wallet details dialog shows balance, relay, maximum allowed to pay, wallet pubkey and optional Lightning Address. That is a useful surface because NWC connections can carry limits and identity clues that should not be hidden from the user.

The screen does not show a full accounting history. Nostr Pay's checked code is about current balance and immediate payment actions. Users who need transaction history, export or reconciliation need another interface or the underlying wallet service.

Receive creates a BOLT11 invoice

The receive screen asks the user for a sat amount and an optional description. It validates that the amount is present and positive, limits the description to 90 characters, and calls `makeInvoice` on the account cubit.

The account cubit sends a `make_invoice` request with the amount multiplied by 1000 so the wallet service receives millisatoshis. If no description is provided, the default description is `Nostr Pay`.

When the `make_invoice` response arrives, the app opens an invoice QR page. That page displays a QR code, offers Copy Invoice and Share Invoice buttons, shares a `lightning:` URI and starts polling `lookup_invoice` every two seconds to notice settlement.

Send is intentionally narrow

The send page asks the user to paste a BOLT11 invoice. It decodes the invoice with `bolt11_decoder`, rejects empty input, rejects invalid invoice text and rejects zero-sat invoices. If the invoice is valid, it opens a confirmation dialog before payment.

The actual payment request is small: method `pay_invoice` with the invoice in params. When the response arrives with result type `pay_invoice`, the payment result handler shows a success page.

This is a narrower send flow than Brick Wallet. Nostr Pay does not expose LNURL pay, LNURL withdraw, Lightning Address translation or QR scanning in the checked source. The value of the app is the clean BOLT11/NWC path, not broad Lightning UX coverage.

Settlement feedback is split by direction

Outgoing payments are handled through a payment result stream. When the cubit sees a `pay_invoice` result, it pushes a `NWCPaymentResult` into a stream, and `PaymentResultHandler` opens a success page with the title `Payment Successful!`.

Incoming invoice settlement is handled on the invoice QR page. The page polls `lookup_invoice`; when the lookup result has a settlement timestamp, it navigates back toward the home route and opens a success page saying the payment was received successfully.

That split is easy to understand as a mobile app pattern. Send confirmation and receive confirmation have different screens and different timing. The shared backend mechanism is still NWC response events.

Connectivity and foreground refresh are modest

Nostr Pay tries to reconnect or refresh in a few simple ways. If initialization leaves the connection disconnected, it watches connectivity changes. Once connected, it refreshes balance and listens for foreground events; if the app has been away for more than the configured sync interval, it syncs again.

That is helpful for a mobile interface, but it should not be mistaken for a full wallet daemon. The app is not maintaining channels, routing payments or indexing all wallet activity in the background. It is refreshing a NWC connection enough to keep a small UI useful.

The design is honest for a first version. The balance and payment actions should update when the user returns to the app, and error responses can become toasts. Anything more advanced belongs in later maintenance work.

The Android build is not a polished store build

The Android manifest requests internet access and defines a normal launcher activity. The Gradle file sets the app ID and minimum SDK, but the release build type uses the debug signing config. There is also a TODO comment about adding a real signing config for release builds.

That matches the public release label. The artifact is an early debug APK, not a store-vetted production wallet. A user who sideloads it should understand Android unknown-source installation risk and should not paste a high-authority wallet connection into an unreviewed build.

For developers, the build state is more useful than troubling. It shows exactly where the app would need work before being presented as a production wallet: signing, release pipeline, current NIP-47 encryption, testing, permission language, distribution and long-term maintenance.

The tutorial gives useful author context

Aniket Ambore published a DEV tutorial on building a Nostr Wallet Connect mobile app with Flutter and the `nwc` Dart package on June 23, 2024, the same day as the repository's initial commit. The article walks through the same architectural pieces visible in the repository: NWC initialization, connection URI parsing, relay subscription, event decryption, balance handling, invoice creation and payment.

That tutorial matters because it frames Nostr Pay as both an app and a teaching project. It is not only a wallet binary dropped without explanation. It is a concrete example for Flutter developers who want to understand how a NWC client can be assembled.

For readers who build, the tutorial and repository should be read together. The article explains the intended shape; the source shows what actually landed in the app.

What users should check first

First, check maintenance status. The public ecosystem list marks Nostr Pay as not maintained, the latest checked release is from June 2024, and the release is a debug pre-release. That is enough reason to avoid using it as a primary wallet interface.

Second, check the permissions of the NWC connection. A connection that can pay invoices with a high limit is a hot payment credential. If the wallet service supports spending caps or revocation, configure those before testing.

Third, check compatibility with the wallet service. Because the checked code uses NIP-04 helpers, a backend that expects current NIP-44 negotiation may behave differently. Test with a disposable wallet connection before trusting the app with meaningful funds.

What developers can still learn

Nostr Pay remains valuable for builders because the code is small enough to follow. It shows how to parse a NWC URI, keep the secret out of hydrated state, derive the app pubkey, initialize a relay, subscribe to response events, decode NIP-47 results and send wallet commands.

It also shows a mobile product shape. The app has a proper onboarding screen, balance card, wallet details dialog, receive screen, invoice QR screen, pay-invoice screen, payment confirmation dialog and success pages. That is more concrete than a protocol snippet.

A modern fork would need updates, but it would not start from zero. The app already sketches the useful parts: secure secret storage, BLoC state, NWC methods, invoice screens and user confirmation.

The honest read

Nostr Pay is best understood as a 2024 Flutter NWC client and teaching artifact. It makes the remote-wallet idea tangible on Android: paste a connection URI, see a balance, receive a BOLT11 invoice and pay a BOLT11 invoice.

It should not be treated as a current hardened wallet. The public build is a debug pre-release, Awesome NWC marks it as not maintained, the Android release uses debug signing config in the checked project, and the NWC encryption path reflects an earlier NIP-47 era.

Used carefully, Nostr Pay is still worth documenting. It captures an important moment in the NWC ecosystem: developers were proving that a small mobile app could operate a Lightning wallet through Nostr without becoming the wallet itself.

Sources worth opening

Start with the GitHub repository, README, release page and `pubspec.yaml`, then inspect `NWCAccountCubit`, the secure-storage wrapper, the connect screen, invoice screens, Android manifest and release metadata. Compare those files with NIP-47, the Dart `nwc` package, nwc.dev and the Awesome NWC maintenance note.

Back to the Crays Nostr page
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

How to use this page

Find the product surface first.

Search clients, signers, product categories or developer tools when you need a specific app, source file or comparison clue.

AppsThe full Apps route stays open520 pages in this routeProducts, categories, builder notes and signer context.Browse pages
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

Bring something back

Ask, suggest, submit or nominate.

Ask a question, send a source, suggest a fix, submit a project or nominate a public Nostr account. The page stays stable; your contribution gets reviewed beside it.