12<html lang="en">3<head>4<meta charset="utf-8">5<meta name="viewport" content="width=device-width, initial-scale=1">6<title>NIP-A3 - payto: Payment Targets — Nostr Instruction Manual</title>7<meta name="description" content="NIP-A3: payto payment targets. How a user declares payment addresses for any network with payto tags in a kind 10133 event. Complete manual page.">8<link rel="preload" href="../assets/fonts/michroma-400-latin.woff2" as="font" type="font/woff2" crossorigin>9<link rel="preload" href="../assets/fonts/exo2-var-latin.woff2" as="font" type="font/woff2" crossorigin>10<link rel="preload" href="../assets/fonts/sairacondensed-600-latin.woff2" as="font" type="font/woff2" crossorigin>11<link rel="preload" href="../assets/fonts/sairacondensed-700-latin.woff2" as="font" type="font/woff2" crossorigin>12<link rel="preload" href="../assets/fonts/sairacondensed-500-latin.woff2" as="font" type="font/woff2" crossorigin>13<link rel="preload" href="../assets/fonts/sharetechmono-400-latin.woff2" as="font" type="font/woff2" crossorigin>14<link rel="preload" href="../assets/fonts/exo2-400i-latin.woff2" as="font" type="font/woff2" crossorigin>15<link rel="icon" href="../assets/favicon.svg" type="image/svg+xml">16<link rel="stylesheet" href="../assets/manual.css">17</head>18<body>1920<svg width="0" height="0" style="position:absolute">21 <defs>22 <marker id="arr" markerWidth="9" markerHeight="9" refX="7" refY="4.5" orient="auto">23 <path d="M1,1 L8,4.5 L1,8 Z" fill="#f26a00"/>24 </marker>25 <marker id="arrb" markerWidth="9" markerHeight="9" refX="7" refY="4.5" orient="auto">26 <path d="M1,1 L8,4.5 L1,8 Z" fill="#2e5f9e"/>27 </marker>28 </defs>29</svg>3031<div class="page">32 <span class="staple s1"></span><span class="staple s2"></span>3334 <header class="band">35 <a class="logo" href="../index.html">NOSTR<b>▸</b>PROTOCOL MANUAL</a>36 <span class="booklet-note">Chapter A3 - Payments</span>37 </header>38 <nav class="tabs">39 <a href="../index.html">Contents</a>40 <a href="#overview" class="on">Overview</a>41 <a href="#spec">Spec</a>42 <a href="#examples">Examples</a>43 <a href="#history">History</a>44 </nav>4546 <div class="chapter">47 <div class="nipno" data-n="A3">A3</div>48 <div class="titles">49 <div class="kicker">Nostr Implementation Possibility - Hex № A3</div>50 <h1>payto: Payment Targets</h1>51 <p class="sub">One tag format that declares a user's payment addresses on any network or platform, from Bitcoin to Venmo.</p>52 </div>53 </div>5455 <main class="spread">56 <div class="main">5758 <h2 class="bar" id="overview"><span class="num">1</span> Overview</h2>59 <p>People accept payments in many places. One user has a Bitcoin address, a Lightning address, and a PayPal account. Before this NIP, each network needed its own ad-hoc field or kind. This NIP standardizes how payment addresses are declared across any network or platform.</p>60 <p>The mechanism is one tag: <code>payto</code>. Each <code>payto</code> tag names a payment <strong>type</strong> and an <strong>address</strong> on that type. A user lists these tags in a kind <code>10133</code> event. A client reads the tags and renders each address as a button or link.</p>61 <p>The tag maps directly to the <code>payto</code> URI scheme of <a href="https://www.rfc-editor.org/rfc/rfc8905.html">RFC-8905</a>. A client that does not recognize a type can still render a generic <code>payto://</code> link. Unknown types degrade, they do not break.</p>6263 <div class="box hint">64 <span class="tag">Hint!</span>65 <p>Looking for native Nostr zaps over Lightning? That is a different chapter: <a href="57.html">NIP-57</a>. This NIP is the address book. NIP-57 is the cash register.</p>66 </div>6768 <h2 class="bar" id="spec"><span class="num">2</span> The payto Tag</h2>69 <p>A payment target is one <code>payto</code> tag with exactly this structure:</p>7071 <div class="crt">72 <div class="titlebar">Wire format - payto tag</div>73<pre>[<span class="s">"payto"</span>, <span class="c"><type></span>, <span class="c"><address></span>]</pre>74 </div>7576 <div class="tscroll"><table class="ref">77 <caption>Tag element reference</caption>78 <tr><th>Position</th><th>Element</th><th>Rule</th></tr>79 <tr><td class="btn">1</td><td>name</td><td>Always the literal string <code>"payto"</code>.</td></tr>80 <tr><td class="btn">2</td><td>type</td><td>The payment type, for example <code>"bitcoin"</code> or <code>"lightning"</code>. Always lowercase.</td></tr>81 <tr><td class="btn">3</td><td>address</td><td>The address on that type. It can be an on-chain address, a username, or any platform identifier.</td></tr>82 </table></div>8384 <p>The NIP itself does not validate addresses. Clients may perform additional network- or platform-specific validation for recognized types. For example, a client may check a <code>bitcoin</code> address checksum before it renders a link.</p>8586 <h2 class="bar" id="kind"><span class="num">3</span> The Payment List Event - Kind 10133</h2>87 <p>A user publishes the <code>payto</code> tags in an event of kind <code>10133</code>. The <code>content</code> is empty. Each tag declares one payment target. One event can hold many targets on many networks.</p>88 <p>Kind <code>10133</code> sits in the replaceable range of <a href="01.html">NIP-01</a> (10000-19999). A relay keeps only the latest payment list per pubkey. Publish a new event to update the whole list.</p>8990 <div class="box tech">91 <span class="tag">Tech Note</span>92 <p>The source text never defines kind <code>10133</code> in a dedicated section. The kind appears only inside the example event and in one rendering sentence. The replaceable behavior above is implied by the <a href="01.html">NIP-01</a> kind range, not stated in this NIP. Also, the type list below is titled "Commonly Used Tags" in the source, but it lists <em>types</em>, not tag names.</p>93 </div>9495 <h2 class="bar" id="render"><span class="num">4</span> Rendering Payment Links</h2>96 <p>For each <code>payto</code> tag in kind <code>10133</code> events, clients can render the payment address as a button or link. Build the link URI in two steps:</p>97 <ol>98 <li>If a specific URI scheme exists for the type, clients may use it. Examples: <code>bitcoin:<address></code> or <code>ethereum:<address></code>.</li>99 <li>Otherwise, fall back to the <code>payto</code> URI scheme defined by <a href="https://www.rfc-editor.org/rfc/rfc8905.html">RFC-8905</a>: <code>payto://<type>/<address></code>.</li>100 </ol>101102 <figure class="diagram">103 <div class="frame">104 <svg viewBox="0 0 560 200" role="img" aria-label="A payto tag flows into a scheme check; known types produce a native URI, all other types produce a payto URI">105 <rect class="d-actor" x="10" y="75" width="130" height="50" rx="8"/>106 <text class="d-actor-label" x="75" y="97" text-anchor="middle">payto tag</text>107 <text class="d-note" x="75" y="114" text-anchor="middle">[type, address]</text>108 <rect class="d-actor" x="215" y="75" width="130" height="50" rx="8"/>109 <text class="d-actor-label" x="280" y="97" text-anchor="middle">Client check</text>110 <text class="d-note" x="280" y="114" text-anchor="middle">scheme for type?</text>111 <rect class="d-actor" x="420" y="20" width="130" height="50" rx="8"/>112 <text class="d-actor-label" x="485" y="42" text-anchor="middle">Native URI</text>113 <text class="d-note" x="485" y="59" text-anchor="middle">bitcoin:addr</text>114 <rect class="d-actor" x="420" y="130" width="130" height="50" rx="8"/>115 <text class="d-actor-label" x="485" y="152" text-anchor="middle">payto URI</text>116 <text class="d-note" x="485" y="169" text-anchor="middle">payto://type/addr</text>117 <path class="d-msg d-flow" d="M142,100 L212,100"/>118 <path class="d-msg d-flow" d="M347,88 C380,75 385,58 417,48"/>119 <path class="d-msg blue d-flow" d="M347,112 C380,125 385,142 417,152"/>120 <text class="d-label" x="382" y="42" text-anchor="middle">known</text>121 <text class="d-label" x="382" y="178" text-anchor="middle">fallback</text>122 <circle r="4" fill="#f26a00">123 <animateMotion dur="2.6s" repeatCount="indefinite" path="M142,100 L212,100"/>124 </circle>125 </svg>126 </div>127 <figcaption>Fig. A3-1 — <b>Link builder.</b> Known types get a native scheme. Every other type gets the RFC-8905 fallback.</figcaption>128 </figure>129130 <h2 class="bar" id="types"><span class="num">5</span> Registered Payment Types</h2>131 <p>These types are in common use today. New widely deployed formats can be added to this list later. Remember: every type string is lowercase.</p>132133 <div class="tscroll"><table class="ref">134 <caption>Commonly used types</caption>135 <tr><th>Type</th><th>Payment target</th></tr>136 <tr><td class="btn">bip352</td><td>Bitcoin silent payments.</td></tr>137 <tr><td class="btn">bip353</td><td>Bitcoin DNS addresses.</td></tr>138 <tr><td class="btn">bitcoin</td><td>Bitcoin on-chain address.</td></tr>139 <tr><td class="btn">cashme</td><td>Cash App <code>$</code>-prefixed cashtag.</td></tr>140 <tr><td class="btn">ethereum</td><td>Ethereum address.</td></tr>141 <tr><td class="btn">lightning</td><td>Lightning address.</td></tr>142 <tr><td class="btn">litecoin</td><td>Litecoin address.</td></tr>143 <tr><td class="btn">monero</td><td>Monero address.</td></tr>144 <tr><td class="btn">nano</td><td>Nano address.</td></tr>145 <tr><td class="btn">paypal</td><td>PayPal account.</td></tr>146 <tr><td class="btn">revolut</td><td>Revolut account.</td></tr>147 <tr><td class="btn">solana</td><td>Solana address.</td></tr>148 <tr><td class="btn">venmo</td><td>Venmo account.</td></tr>149 <tr><td class="btn">zcash</td><td>Zcash address.</td></tr>150 </table></div>151152 <div class="box warn">153 <span class="tag">Warning!</span>154 <p>Do not drop tags with unknown types. A type outside this list is still valid. Render it with the <code>payto://</code> fallback so the user can still copy or open it.</p>155 </div>156157 <h2 class="bar" id="examples"><span class="num">6</span> Worked Example</h2>158 <p>The event below declares three payment targets: a known type with a native scheme, a known type without one, and an unknown type. The <code>content</code> stays empty.</p>159160 <div class="crt">161 <div class="titlebar">Payment list - kind 10133</div>162<pre>{163 <span class="k">"pubkey"</span>: <span class="s">"afc93622eb4d79c0fb75e56e0c14553f7214b0a466abeba14cb38968c6755e6a"</span>,164 <span class="k">"kind"</span>: 10133,165 <span class="k">"content"</span>: <span class="s">""</span>,166 <span class="k">"tags"</span>: [167 [<span class="s">"payto"</span>, <span class="s">"bitcoin"</span>, <span class="s">"bc1qxq66e0t8d7ugdecwnmv58e90tpry23nc84pg9k"</span>],168 [<span class="s">"payto"</span>, <span class="s">"nano"</span>, <span class="s">"nano_1dctqbmqxfppo9pswbm6kg9d4s4mbraqn8i4m7ob9gnzz91aurmuho48jx3c"</span>],169 [<span class="s">"payto"</span>, <span class="s">"unknowntype"</span>, <span class="s">"l7tbta5b9xze6ckkfc99uohzxd009b0r"</span>]170 ],171 <span class="c">...</span>172}</pre>173 </div>174175 <p>A client turns those three tags into three links. The <code>bitcoin</code> type has its own URI scheme. The other two use the RFC-8905 fallback:</p>176177 <div class="crt">178 <div class="titlebar">Rendered URIs</div>179<pre><span class="c">-- native scheme --</span>180bitcoin:bc1qxq66e0t8d7ugdecwnmv58e90tpry23nc84pg9k181<span class="c">-- RFC-8905 fallback --</span>182payto://nano/nano_1dctqbmqxfppo9pswbm6kg9d4s4mbraqn8i4m7ob9gnzz91aurmuho48jx3c183payto://unknowntype/l7tbta5b9xze6ckkfc99uohzxd009b0r</pre>184 </div>185186 <h2 class="bar" id="history"><span class="num">7</span> Version History</h2>187 <p>This NIP is young. It landed in one PR and got a full rewrite one day later:</p>188 <ul class="patchnotes">189 <li><span class="ver">2026</span><span class="when">2026-08-27</span>fiatjaf rewrote the whole NIP. The spec was condensed to the single <code>payto</code> tag format, the kind <code>10133</code> example, and the RFC-8905 rendering rule.</li>190 <li><span class="ver">Origin</span><span class="when">2026-08-26</span>ATXMJ opened the original proposal: "payto: Payment Targets (RFC-8905)" (<a href="https://github.com/nostr-protocol/nips/pull/2119">PR #2119</a>).</li>191 </ul>192193 <div class="credits">194 <h3 class="cardhead">Original Proposal - Credits</h3>195 <table>196 <tr><td>Author</td><td>ATXMJ</td></tr>197 <tr><td>First commit</td><td>2026-08-26 — “NIP-A3 payto: Payment Targets (RFC-8905)” (<a href="https://github.com/nostr-protocol/nips/pull/2119">PR #2119</a>)</td></tr>198 <tr><td>Status</td><td><span class="chip draft">draft</span> <span class="chip">optional</span></td></tr>199 <tr><td>Source</td><td><a href="https://github.com/nostr-protocol/nips/blob/master/A3.md">A3.md on GitHub</a> - <a href="https://github.com/nostr-protocol/nips/commits/master/A3.md">full change history</a></td></tr>200 </table>201 </div>202203 <h2 class="bar"><span class="num">8</span> See Also</h2>204 <ul>205 <li><a href="01.html">NIP-01</a> — the event and tag model, and the replaceable kind range that covers <code>10133</code>.</li>206 <li><a href="57.html">NIP-57</a> — Lightning zaps: actually sending sats inside Nostr, not just listing addresses.</li>207 <li><a href="05.html">NIP-05</a> — DNS-based identifiers; a sibling idea of the <code>bip353</code> DNS payment type.</li>208 <li><a href="https://www.rfc-editor.org/rfc/rfc8905.html">RFC-8905</a> — the <code>payto</code> URI scheme this NIP falls back to.</li>209 </ul>210 </div>211212 <aside>213 <div class="cartridge">214 <div class="inner">215 <h3 class="cardhead">Spec Card</h3>216 <div class="lights"><span class="led on"></span><span class="led warn"></span><span class="led warn"></span></div>217 <dl>218 <dt>Status</dt><dd><span class="chip draft">draft</span><span class="chip">optional</span></dd>219 <dt>Defines</dt><dd>payto tag - payment type list</dd>220 <dt>Kind(s)</dt><dd>10133 (replaceable payment list)</dd>221 <dt>Requires</dt><dd><a href="01.html">NIP-01</a></dd>222 <dt>URI scheme</dt><dd>payto:// per RFC-8905 - native schemes when known</dd>223 <dt>First commit</dt><dd>2026-08-26</dd>224 <dt>Last updated</dt><dd>2026-08-27</dd>225 </dl>226 </div>227 </div>228 </aside>229 </main>230231 <nav class="navbtns">232 <a href="a0.html">◀ NIP-A0: Voice Messages</a>233 <a href="a4.html">NIP-A4: Public Messages ▶</a>234 </nav>235236 <footer class="pagefoot">237 <a href="../index.html">Nostr Protocol Manual</a>238 <span class="pageno">NIP A3 / F4</span>239 </footer>240</div>241242<script src="../assets/webmcp.js" defer></script>243</body>244</html>