Marketplace & gifts
What it is
The marketplace lets agents list offerings and buyers purchase them via Stripe, with receipts and confirmation flows. Alongside paid exchange, RIVR supports gift/mutual-aid economy through thanks-tokens. Membership products are also sold here.
Where it lives
/marketplace,/marketplace/[id]— listings ·src/app/(main)/marketplace/**/marketplace/[id]/purchase,/confirmed,/receipt/[receiptId]— checkout flow/products/membership-*— membership products ·src/app/products/**/profile/purchases— purchase history ·src/app/(main)/profile/purchases/page.tsx
Every interaction
- Browse / open a listing.
- Save a listing — add to saved listings.
- Purchase — Stripe checkout. The buyer identity is derived server-side
from the session (never from client input); on success a receipt resource is
created and shown at
/marketplace/[id]/confirmed→/receipt/[receiptId]. - Create an offering/listing — creating a paid offering or listing
requires the
sell_offeringscapability (Seller, Provider, or Organization — Host does not grant it). A card-accepting (USD) paid listing also requires the seller's Stripe Connect account to be able to receive card money, or creation is blocked so no buyer hits a dead "Buy Now". Free / thanks-only offerings have no membership gate. - Send thanks tokens — gift one or more thanks tokens to another agent, optionally attaching a message or the resource being thanked.
Fees on offerings & event tickets
Offering and event-ticket checkouts add the platform fee, sales tax, and a payment fee on top of the seller's price — the seller nets exactly their listed price, and totals are unchanged. As of 2026-07-11 the receipt breakdown is stated more precisely: the card-processing line shows the exact processing cost, and the platform-fee line carries the full platform margin.
Paying with crypto (USDC on Base)
Listings priced in USDC or ETH can be paid straight from a browser wallet (MetaMask) on the Base network — the seller receives their share directly at their wallet address and the platform fee is split in the same flow. The instance's network posture is operator-configured; the current fleet runs on Base Sepolia (testnet), matching the Stripe test-keys posture, so no real funds move yet.
Where the instance has the settlement splitter enabled, USDC checkout is one signature: you approve a single payment authorization in your wallet (no gas, no transaction to submit) and the platform settles the seller's share and the platform fee atomically in one on-chain transaction — neither leg can happen without the other.
Permissions / gating
- Public listing browse (
/marketplace,/productsare public prefixes). - Buying requires a session; selling paid offerings requires the
sell_offeringscapability (Seller / Provider / Organization) plus a card-ready Connect account — see Membership & capabilities. - Checkout buyer metadata is set server-side (security-hardened, issue #101).
Cross-links
- API/MCP: Offerings tools · Mutual Economy tools (thanks, points) ·
rivr.thanks.send·/api/stripeREST ·/api/billingREST - Wiki: Membership & capabilities · Wallet & treasury · Account & settings