← All NIPs

NIP-75

Zap Goals

DraftEvents

A fundraising goal as a kind 9041 event: a target amount and the relays where zaps are counted. Zap the goal to contribute and watch the progress bar fill.

At a glance

Status
In use and still allowed to change.
Kinds
Tags
  • amount
  • closed_at
  • goal
  • image
  • relays
  • summary
Last changed
Jun 13, 2026

Try it

Edit the form or the JSON: both stay in sync, the badge says whether the result is valid, and tapping any field explains it.

What to build

How the parts connect: Raising money

Examples
Valid 1 note

Not signed yet · Demo keys only. These personas' secret keys are public on purpose.

Form
Jan 1, 2025, 12:00 AM UTC

Content

What the money is for, in words.

Tags

  1. relays Required

    Relays where zaps to this goal are sent and counted.

  2. amount Required

    The target.

Add tag

How this NIP works

Step 1 of 5

Set a target

A kind 9041 event says what you're raising money for (content) and how much (amount, in millisats).

In the course

No course chapter covers this NIP yet. The editor above is the quickest way in.

Builds on

See also

Specification

Specification text is quoted in English from the nostr-protocol/nips repository. Our explanations and the interface are translated. Source on GitHub at commit 0046368

Read the spec333 words, quoted from the repository at commit 0046368.

This NIP defines an event for creating fundraising goals. Users can contribute funds towards the goal by zapping the goal event.

Nostr Event

A kind:9041 event is used.

The .content contains a human-readable description of the goal.

The following tags are defined as REQUIRED.

  • amount - target amount in milisats.
  • relays - a list of relays the zaps to this goal will be sent to and tallied from.

Example event:

{
  "kind": 9041,
  "tags": [
    ["relays", "wss://alicerelay.example.com", "wss://bobrelay.example.com", /*...*/],
    ["amount", "210000"],
  ],
  "content": "Nostrasia travel expenses",
  // other fields...
}

The following tags are OPTIONAL.

  • closed_at - timestamp for determining which zaps are included in the tally. Zap receipts published after the closed_at timestamp SHOULD NOT count towards the goal progress.
  • image - an image for the goal
  • summary - a brief description
{
  "kind": 9041,
  "tags": [
    ["relays", "wss://alicerelay.example.com", "wss://bobrelay.example.com", /*...*/],
    ["amount", "210000"],
    ["closed_at", "<unix timestamp in seconds>"],
    ["image", "<image URL>"],
    ["summary", "<description of the goal>"],
  ],
  "content": "Nostrasia travel expenses",
  // other fields...
}

The goal MAY include an r or a tag linking to a URL or addressable event.

The goal MAY include multiple beneficiary pubkeys by specifying zap tags.

Addressable events can link to a goal by using a goal tag specifying the event id and an optional relay hint.

{
  "kind": 3xxxx,
  "tags": [
    ["goal", "<event id>", "<Relay URL (optional)>"],
    // rest of tags...
  ],
  // other fields...
}

Client behavior

Clients MAY display funding goals on user profiles.

When zapping a goal event, clients MUST include the relays in the relays tag of the goal event in the zap request relays tag.

When zapping an addressable event with a goal tag, clients SHOULD tag the goal event id in the e tag of the zap request.

Use cases

  • Fundraising clients
  • Adding funding goals to events such as long form posts, badges or live streams