Definition
NIP-15 defines a decentralized marketplace built directly on Nostr, letting a merchant run a storefront with nothing but a keypair and relays. There is no central platform taking a cut or holding the listings; the merchant's catalog and the customer's orders are ordinary Nostr events and encrypted messages. This makes commerce as censorship-resistant and portable as the rest of the protocol.
Stalls and products
A merchant publishes a stall with kind 30017 (set_stall), which holds a unique identifier, name, currency, and shipping zones with region-specific costs. Individual items are published with kind 30018 (set_product), referencing their parent stall and carrying price, quantity (which may be null for digital goods), images, and key-value specifications. Optional kinds extend the model: 30019 customizes the storefront UI and 30020 supports auction-style listings. These are addressable events, so the merchant can edit a listing in place.
Checkout flow
Ordering happens over encrypted direct messages in three steps: the customer sends an order with selected items and a shipping zone, the merchant replies with payment options such as a Lightning invoice, on-chain Bitcoin, or a payment URL, and finally the merchant confirms payment and shipping status. The internal stall and product identifiers chosen by the merchant must be echoed back in the customer's selection so orders map cleanly to inventory.
For a sovereign seller, this is e-commerce with no intermediary platform and native Bitcoin settlement. It complements compute commerce in the Data Vending Machine (DVM) and relies on the addressable kinds described in Nostr Event Kind.
In Simple Terms
NIP-15 defines a decentralized marketplace built directly on Nostr, letting a merchant run a storefront with nothing but a keypair and relays. There is no…
