NIP-15: Nostr Marketplace
NIP-15 defines a protocol for decentralized marketplaces on Nostr, enabling merchants to list products and buyers to make purchases using Bitcoin and Lightning.
How It Works
Merchant Stalls (Kind 30017)
Merchants create stalls as addressable events:
{
"kind": 30017,
"tags": [
["d", "my-stall"],
["name", "Bob's Electronics"],
["description", "Quality used electronics"],
["currency", "sat"],
["shipping", "{...shipping options...}"]
]
}
Products (Kind 30018)
Products are listed within stalls:
{
"kind": 30018,
"tags": [
["d", "product-123"],
["stall_id", "my-stall"],
["name", "Raspberry Pi 4"],
["price", "50000"],
["quantity", "5"],
["images", "https://..."]
]
}
Purchase Flow
- Buyer browses products across multiple stalls
- Buyer sends encrypted order message to merchant
- Merchant responds with Lightning invoice
- Buyer pays invoice
- Merchant ships product
Why It Matters
- Decentralized: No central marketplace operator
- Interoperable: Any NIP-15 client can browse any merchant
- Private: Orders are encrypted between buyer and seller
- Bitcoin-native: Lightning payments built-in
The practical gain is portability. A merchant can publish catalog data once and let multiple clients render it, instead of being locked into one marketplace front end.
Tradeoffs
NIP-15 standardizes listings, not trust. Buyers still need to decide whether a merchant is legitimate, whether inventory is real, and how disputes get handled. The protocol gives common data structures and message flow, but reputation and fulfillment remain application-level problems.
Payments and shipping are also only partly standardized. A client can understand stalls and products and still need custom logic for invoices, order state, or delivery tracking.
Implementation Status
- Plebeian Market - Full-featured NIP-15 marketplace
- Shopstr - Permissionless Bitcoin commerce
- Amethyst - Integrated product listings in social feed
Primary sources:
Mentioned in:
See also: