nips/88.md
2023-11-05 13:14:43 +02:00

2.7 KiB

NIP-88

Recurring Subscriptions

draft optional author:pablof7z

This NIP defines a way for a pubkey to create recurring subscription payments to another pubkey.

Tier Event

A pubkey can create "tiers". These tiers might provide certain benefits to the supporters who subscribe to these.

{
    "kind": 7002,
    "content": "<description of the tier>",
    "tags": [
        [ "title", "..." ],
        [ "amount", "<amount-in-base-unit>", "currency", "<cadence>" ]
    ]
}

This event is generated by a pubkey who wants to allow users to support with different tiers.

.content SHOULD be a description of what users who subscribe can expect. Tag title is an optional title for the tier. Tag amount MUST specify the payment required for this tier and its cadence. * The first argument should be the stringified amount and the second argument the currency * The third argument SHOULD be one of daily, monthly, yearly One or more amount tags MUST exist.

Examples

  • [ "amount", "100", "usd", "daily" ], $1.00 a day.
  • [ "amount", "1000000", "btc", "daily" ], 1000000 millisats a day.

Subscribe Event

{
    "kind": 7001,
    "content": "<optional-message>",
    "tags": [
        [ "p", "<recipient-pubkey>" ],
        [ "e", "<supporting-tier-id>" ],
        [ "amount", "<amount-in-base-unit>", "currency", "<cadence>" ]
    ]
}

When a user wants to subscribe to subscribe to support a user they create a kind:7001 event.

  • .content is an optional message the supporter can write.
  • The p tag MUST tag the pubkey being supported.
  • The e tag is optional, and should point to a kind:7001 support tier event. There MUST be exactly 0 or 1 e tags.
  • The amount tag specifies what the supporters is committing to pay to the supported pubkey and the candence.

The kind:7001 event can be created without an e tag so that users can create recurring support events without the pubkey receiving the support having explicitly created a support tier.

Paying

The supporting user should create a zap p-tagging the receiver and e-tagging the kind:7001. There MUST be a single p and a single e tag in the zap request.

{
    "kind": 9734,
    "content": "",
    "tags": [
        [ "p", "<recipient-pubkey>" ],
        [ "e", "<kind-7001-event-id>" ]
    ]

Clients supporting this NIP can check for zaps e-tagging the kind:7001 event to find the pubkeys that have a valid, paid subscriptions at each different period.

The same kind:7001 is re-zapped on a regular basis per the cadence specified in the event.

Stopping a subscription

A user who wants to stop a subscription by publishing a kind:5 deletion request of the kind:7001 event.