<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 4.0.5) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3339 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml">
<!ENTITY RFC3629 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3629.xml">
<!ENTITY RFC4648 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml">
<!ENTITY RFC5234 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml">
<!ENTITY RFC5246 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5246.xml">
<!ENTITY RFC8126 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8259 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
<!ENTITY RFC8446 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC8785 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8785.xml">
<!ENTITY RFC9110 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml">
<!ENTITY RFC9111 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9111.xml">
<!ENTITY RFC9457 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9457.xml">
<!ENTITY RFC9530 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9530.xml">
]>


<rfc ipr="trust200902" docName="draft-httpauth-payment-00" category="std" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="Payment Auth Scheme">The "Payment" HTTP Authentication Scheme</title>

    <author initials="B." surname="Ryan" fullname="Brendan Ryan">
      <organization>Tempo Labs</organization>
      <address>
        <email>brendan@tempo.xyz</email>
      </address>
    </author>
    <author initials="J." surname="Moxey" fullname="Jake Moxey">
      <organization>Tempo Labs</organization>
      <address>
        <email>jake@tempo.xyz</email>
      </address>
    </author>
    <author initials="T." surname="Meagher" fullname="Tom Meagher">
      <organization>Tempo Labs</organization>
      <address>
        <email>tom@tempo.xyz</email>
      </address>
    </author>
    <author initials="J." surname="Weinstein" fullname="Jeff Weinstein">
      <organization>Stripe</organization>
      <address>
        <email>jweinstein@stripe.com</email>
      </address>
    </author>
    <author initials="S." surname="Kaliski" fullname="Steve Kaliski">
      <organization>Stripe</organization>
      <address>
        <email>stevekaliski@stripe.com</email>
      </address>
    </author>

    <date year="2026" month="June" day="19"/>

    
    
    

    <abstract>


<?line 63?>

<t>This document defines the "Payment" HTTP authentication scheme, enabling
HTTP resources to require a payment challenge to be fulfilled before access.
The scheme extends HTTP Authentication, using the HTTP 402 "Payment Required"
status code.</t>

<t>The protocol is payment-method agnostic, supporting any payment network
or currency through registered payment method identifiers. Specific
payment methods are defined in separate payment method specifications.</t>



    </abstract>



  </front>

  <middle>


<?line 74?>

<section anchor="introduction"><name>Introduction</name>

<t>HTTP 402 "Payment Required" was reserved in HTTP/one-point-one <xref target="RFC9110"/> but never
standardized for common use. This specification defines the "Payment"
authentication scheme that gives 402 its semantics, enabling resources to
require a payment challenge to be fulfilled before access.</t>

<section anchor="relationship-to-payment-method-specifications"><name>Relationship to Payment Method Specifications</name>

<t>This specification defines the abstract protocol framework. Concrete
payment methods are defined in payment method specifications that:</t>

<t><list style="symbols">
  <t>Register a payment method identifier</t>
  <t>Define the <spanx style="verb">request</spanx> schema for that method</t>
  <t>Define the <spanx style="verb">payload</spanx> schema for that method</t>
  <t>Specify verification and settlement procedures</t>
</list></t>

</section>
</section>
<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>Payment Challenge</dt>
  <dd>
    <t>A <spanx style="verb">WWW-Authenticate</spanx> header with scheme "Payment" indicating the
payment requirements for accessing a resource.</t>
  </dd>
  <dt>Payment Credential</dt>
  <dd>
    <t>An <spanx style="verb">Authorization</spanx> header with scheme "Payment" containing payment
authorization data.</t>
  </dd>
  <dt>Payment Method</dt>
  <dd>
    <t>A mechanism for transferring value, identified by a registered
identifier.</t>
  </dd>
  <dt>Payment Intent</dt>
  <dd>
    <t>The type of payment request, identified by a registered value in the
IANA "HTTP Payment Intents" registry. Intents are defined by separate
intent specifications.</t>
  </dd>
  <dt>Request</dt>
  <dd>
    <t>Method-specific data in the challenge enabling payment completion.
Encoded as base64url JSON in the <spanx style="verb">request</spanx> parameter.</t>
  </dd>
  <dt>Payload</dt>
  <dd>
    <t>Method-specific data in the credential proving payment.</t>
  </dd>
</dl>

</section>
<section anchor="protocol-overview"><name>Protocol Overview</name>

<section anchor="request-flow"><name>Request Flow</name>

<figure><artwork><![CDATA[
   Client                                            Server
      │                                                 │
      │  (1) GET /resource                              │
      ├────────────────────────────────────────────────>│
      │                                                 │
      │  (2) 402 Payment Required                       │
      │      WWW-Authenticate: Payment id="..",         │
      │        method="..", intent="..", request=".."   │
      │<────────────────────────────────────────────────┤
      │                                                 │
      │  (3) Client fulfills payment challenge          │
      │      (signs transaction, pays invoice, etc.)    │
      │                                                 │
      │  (4) GET /resource                              │
      │      Authorization: Payment <credential>        │
      ├────────────────────────────────────────────────>│
      │                                                 │
      │  (5) Server verifies and settles                │
      │                                                 │
      │  (6) 200 OK                                     │
      │      Payment-Receipt: <receipt>                 │
      │<────────────────────────────────────────────────┤
      │                                                 │
]]></artwork></figure>

</section>
<section anchor="response-status-codes"><name>Status Codes</name>

<t>The following table defines how servers <bcp14>MUST</bcp14> respond to payment-related
conditions.</t>

<texttable>
      <ttcol align='left'>Condition</ttcol>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Response</ttcol>
      <c>Resource requires payment, no credential provided</c>
      <c>402</c>
      <c>Fresh challenge in <spanx style="verb">WWW-Authenticate</spanx></c>
      <c>Malformed credential (invalid base64url, bad JSON)</c>
      <c>402</c>
      <c>Fresh challenge + <spanx style="verb">malformed-credential</spanx> problem</c>
      <c>Unknown, expired, or already-used challenge <spanx style="verb">id</spanx></c>
      <c>402</c>
      <c>Fresh challenge + <spanx style="verb">invalid-challenge</spanx> problem</c>
      <c>Payment proof invalid or verification failed</c>
      <c>402</c>
      <c>Fresh challenge + <spanx style="verb">verification-failed</spanx> problem</c>
      <c>Payment verified, access granted</c>
      <c>200</c>
      <c>Resource + optional <spanx style="verb">Payment-Receipt</spanx></c>
      <c>Payment verified, but policy denies access</c>
      <c>403</c>
      <c>No challenge (payment was valid)</c>
</texttable>

<t>Servers <bcp14>MUST</bcp14> return 402 with a <spanx style="verb">WWW-Authenticate: Payment</spanx> header when
payment is required or when a payment credential fails validation
(see <xref target="usage-of-402"/> for details).</t>

<t>Error details are provided in the response body using Problem Details
<xref target="RFC9457"/> rather than in the <spanx style="verb">WWW-Authenticate</spanx> header parameters.</t>

</section>
<section anchor="relationship-to-401-unauthorized"><name>Relationship to 401 Unauthorized</name>

<t>This specification uses 402 (Payment Required) consistently for all
payment-related challenges, including failed credential validation.
This diverges from the traditional 401 pattern used by other HTTP
authentication schemes. The distinction is intentional:</t>

<t><list style="symbols">
  <t><strong>402</strong> indicates a payment barrier (initial challenge or retry needed)</t>
  <t><strong>401</strong> is reserved for authentication failures unrelated to payment</t>
  <t><strong>403</strong> indicates the payment succeeded but access is denied by policy</t>
</list></t>

<t>This design ensures clients can distinguish payment requirements from
other authentication schemes that use 401.</t>

</section>
<section anchor="usage-of-402"><name>Usage of 402 Payment Required</name>

<section anchor="when-to-return-402"><name>When to Return 402</name>

<t>Servers <bcp14>SHOULD</bcp14> return 402 when:</t>

<t><list style="symbols">
  <t>The resource requires payment as a precondition for access</t>
  <t>The server can provide a Payment challenge that the client may fulfill</t>
  <t>Payment is the primary barrier to access (not authentication or authorization)</t>
</list></t>

<t>Servers <bcp14>MAY</bcp14> return 402 when:</t>

<t><list style="symbols">
  <t>Offering optional paid features or premium content</t>
  <t>Indicating that a previously-paid resource requires additional payment</t>
  <t>The payment requirement applies to a subset of request methods</t>
</list></t>

</section>
<section anchor="when-not-to-return-402"><name>When NOT to Return 402</name>

<t>Servers <bcp14>SHOULD NOT</bcp14> return 402 when:</t>

<t><list style="symbols">
  <t>The client lacks authentication credentials (use 401)</t>
  <t>The client is authenticated but lacks authorization (use 403)</t>
  <t>The resource does not exist (use 404)</t>
  <t>No Payment challenge can be constructed for the request</t>
</list></t>

<t>Servers <bcp14>MUST NOT</bcp14> return 402 without including a <spanx style="verb">WWW-Authenticate</spanx> header
containing at least one Payment challenge.</t>

</section>
<section anchor="interaction-with-other-authentication-schemes"><name>Interaction with Other Authentication Schemes</name>

<t>When a resource requires both authentication and payment, servers <bcp14>SHOULD</bcp14>:</t>

<t><list style="numbers" type="1">
  <t>First verify authentication credentials</t>
  <t>Return 401 if authentication fails</t>
  <t>Return 402 with a Payment challenge only after successful authentication</t>
</list></t>

<t>This ordering prevents information leakage about payment requirements to
unauthenticated clients.</t>

</section>
</section>
</section>
<section anchor="the-payment-authentication-scheme"><name>The Payment Authentication Scheme</name>

<section anchor="challenge-www-authenticate"><name>Challenge (WWW-Authenticate)</name>

<t>The Payment challenge is sent in the <spanx style="verb">WWW-Authenticate</spanx> header per
<xref target="RFC9110"/>. The challenge uses the auth-param syntax defined in Section 11
of <xref target="RFC9110"/>:</t>

<figure><sourcecode type="abnf"><![CDATA[
challenge       = "Payment" [ 1*SP auth-params ]
auth-params     = auth-param *( OWS "," OWS auth-param )
auth-param      = token BWS "=" BWS ( token / quoted-string )
]]></sourcecode></figure>

<section anchor="required-parameters"><name>Required Parameters</name>

<t><strong><spanx style="verb">id</spanx></strong>: Unique challenge identifier. This parameter is <bcp14>REQUIRED</bcp14> and its
  value <bcp14>MUST</bcp14> be non-empty after <spanx style="verb">auth-param</spanx> parsing and <spanx style="verb">quoted-string</spanx>
  unescaping. Servers <bcp14>MUST NOT</bcp14> emit a Payment challenge with a missing or
  empty <spanx style="verb">id</spanx>; clients and parsers <bcp14>MUST</bcp14> reject challenges whose <spanx style="verb">id</spanx> is
  missing or empty. Servers <bcp14>MUST</bcp14> bind this value to the challenge parameters
  (Section 5.1.3) to enable verification. Clients <bcp14>MUST</bcp14> include this value
  unchanged in the credential.</t>

<t><strong><spanx style="verb">realm</spanx></strong>: Protection space identifier per <xref target="RFC9110"/>. Servers <bcp14>MUST</bcp14>
  include this parameter to define the scope of the payment requirement.</t>

<t><strong><spanx style="verb">method</spanx></strong>: Payment method identifier (<xref target="payment-methods"/>). <bcp14>MUST</bcp14> be a lowercase
  ASCII string.</t>

<t><strong><spanx style="verb">intent</spanx></strong>: Payment intent type (<xref target="payment-intents"/>). The value <bcp14>MUST</bcp14> be a
  registered entry in the IANA "HTTP Payment Intents" registry.</t>

<t><strong><spanx style="verb">request</spanx></strong>: Base64url-encoded <xref target="RFC4648"/> JSON <xref target="RFC8259"/> containing
  payment-method-specific data needed to complete payment. Structure is
  defined by the payment method specification. Padding characters ("=")
  <bcp14>MUST NOT</bcp14> be included. The JSON <bcp14>MUST</bcp14> be serialized using JSON
  Canonicalization Scheme (JCS) <xref target="RFC8785"/> to ensure deterministic
  encoding across implementations. This is critical for challenge binding
  (<xref target="challenge-binding"/>): since the HMAC input includes the base64url-encoded
  request as it appears on the wire, different JSON serialization orders
  would produce different HMAC values, breaking cross-implementation
  interoperability.</t>

</section>
<section anchor="optional-parameters"><name>Optional Parameters</name>

<t><strong><spanx style="verb">digest</spanx></strong>: Content digest of the request body, formatted per <xref target="RFC9530"></xref>.
  Servers <bcp14>SHOULD</bcp14> include this parameter when the payment challenge applies
  to a request with a body (e.g., POST, PUT, PATCH). When present, clients
  <bcp14>MUST</bcp14> submit the credential with a request body whose digest matches this
  value. See Section 5.1.3 for body binding requirements.</t>

<t><strong><spanx style="verb">expires</spanx></strong>: Timestamp indicating when this challenge expires, formatted
  as an <xref target="RFC3339"/> date-time string (e.g., <spanx style="verb">"2025-01-15T12:00:00Z"</spanx>).
  Servers <bcp14>SHOULD</bcp14> include this parameter. Clients <bcp14>MUST NOT</bcp14> submit
  credentials for expired challenges.</t>

<t><strong><spanx style="verb">description</spanx></strong>: Human-readable description of the resource or payment
  purpose. This parameter is for display purposes only and <bcp14>MUST NOT</bcp14> be
  relied upon for payment verification (see <xref target="amount-verification"/>).</t>

<t><strong><spanx style="verb">opaque</spanx></strong>: Base64url-encoded <xref target="RFC4648"/> JSON <xref target="RFC8259"/> containing
  server-defined correlation data (e.g., a payment processor intent
  identifier). The value <bcp14>MUST</bcp14> be a JSON object whose values are strings
  (a flat string-to-string map). Clients <bcp14>MUST</bcp14> return this parameter
  unchanged in the credential and <bcp14>MUST NOT</bcp14> modify it. The JSON <bcp14>MUST</bcp14> be
  serialized using JSON Canonicalization Scheme (JCS) <xref target="RFC8785"/> before
  base64url encoding. Servers <bcp14>SHOULD</bcp14> include <spanx style="verb">opaque</spanx> in the challenge
  binding (<xref target="challenge-binding"/>) to ensure tamper protection.</t>

<t>Unknown parameters <bcp14>MUST</bcp14> be ignored by clients.</t>

<section anchor="challenge-binding"><name>Challenge Binding</name>

<t>Servers <bcp14>SHOULD</bcp14> bind the challenge <spanx style="verb">id</spanx> to the challenge parameters (Section 5.1.1 and Section 5.1.2) to prevent request integrity attacks where a client could
sign or submit a payment different from what the server intended. Servers
<bcp14>MUST</bcp14> verify that credentials present an <spanx style="verb">id</spanx> matching the expected binding.</t>

<t>The binding mechanism is implementation-defined. Servers <bcp14>MAY</bcp14> use stateful
storage (e.g., database lookup) or stateless verification (e.g., HMAC,
authenticated encryption) to validate the binding.</t>

<section anchor="recommended-hmac-sha256-binding"><name>Recommended: HMAC-SHA256 Binding</name>

<t>Servers using HMAC-SHA256 for stateless challenge binding <bcp14>SHOULD</bcp14> compute
the challenge <spanx style="verb">id</spanx> as follows:</t>

<t>The HMAC input is constructed from exactly seven fixed positional
slots. Required fields supply their string value; optional fields use
an empty string (<spanx style="verb">""</spanx>) when absent. The slots are:</t>

<texttable>
      <ttcol align='left'>Slot</ttcol>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c>0</c>
      <c><spanx style="verb">realm</spanx></c>
      <c>Required. String value.</c>
      <c>1</c>
      <c><spanx style="verb">method</spanx></c>
      <c>Required. String value.</c>
      <c>2</c>
      <c><spanx style="verb">intent</spanx></c>
      <c>Required. String value.</c>
      <c>3</c>
      <c><spanx style="verb">request</spanx></c>
      <c>Required. JCS-serialized per <xref target="RFC8785"/>, then base64url-encoded.</c>
      <c>4</c>
      <c><spanx style="verb">expires</spanx></c>
      <c>Optional. String value if present; empty string if absent.</c>
      <c>5</c>
      <c><spanx style="verb">digest</spanx></c>
      <c>Optional. String value if present; empty string if absent.</c>
      <c>6</c>
      <c><spanx style="verb">opaque</spanx></c>
      <c>Optional. JCS-serialized per <xref target="RFC8785"/>, then base64url-encoded if present; empty string if absent.</c>
</texttable>

<t>The computation proceeds as follows:</t>

<t><list style="numbers" type="1">
  <t>Populate all seven slots as described above.</t>
  <t>Join all seven slots with the pipe character (<spanx style="verb">|</spanx>) as delimiter.
Every slot is always present in the joined string; absent optional
fields appear as empty segments (e.g., <spanx style="verb">...|expires||opaque_b64url</spanx>
when <spanx style="verb">digest</spanx> is absent).</t>
  <t>Compute HMAC-SHA256 over the resulting string using a server secret.</t>
  <t>Encode the HMAC output as base64url without padding (<xref target="RFC4648"/>
Section 5).</t>
</list></t>

<figure><artwork><![CDATA[
input = "|".join([
    realm,
    method,
    intent,
    request_b64url,
    expires or "",
    digest or "",
    opaque_b64url or "",
])
id = base64url(HMAC-SHA256(server_secret, input))
]]></artwork></figure>

<t>Optional fields use fixed positional slots with empty strings when
absent, rather than being omitted. This avoids ambiguity between
combinations of optional fields — for example, <spanx style="verb">(expires set, no
digest)</spanx> and <spanx style="verb">(no expires, digest set)</spanx> produce distinct inputs — and
ensures that adding a new optional slot in a future revision does not
change the HMAC for challenges that omit it.</t>

</section>
</section>
<section anchor="example-challenge"><name>Example Challenge</name>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
Cache-Control: no-store
WWW-Authenticate: Payment id="x7Tg2pLqR9mKvNwY3hBcZa",
    realm="api.example.com",
    method="example",
    intent="charge",
    expires="2025-01-15T12:05:00Z",
    request="eyJhbW91bnQiOiIxMDAwIiwiY3VycmVuY3kiOiJVU0QiLCJyZWNpcGllbnQiOiJhY2N0XzEyMyJ9"
]]></sourcecode></figure>

<t>Decoded <spanx style="verb">request</spanx> example:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "1000",
  "currency": "usd",
  "recipient": "acct_123"
}
]]></sourcecode></figure>

</section>
</section>
<section anchor="request-body-digest-binding"><name>Request Body Digest Binding</name>

<t>Servers <bcp14>SHOULD</bcp14> include the <spanx style="verb">digest</spanx> parameter when issuing challenges for
requests with bodies. The digest value is computed per <xref target="RFC9530"></xref>:</t>

<figure><sourcecode type="http"><![CDATA[
WWW-Authenticate: Payment id="...",
    realm="api.example.com",
    method="example",
    intent="charge",
    digest="sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=:",
    expires="2025-01-15T12:05:00Z",
    request="..."
]]></sourcecode></figure>

<t>When verifying a credential with a <spanx style="verb">digest</spanx> parameter, servers <bcp14>MUST</bcp14>:</t>

<t><list style="numbers" type="1">
  <t>Compute the digest of the current request body per <xref target="RFC9530"></xref></t>
  <t>Compare it with the <spanx style="verb">digest</spanx> value from the challenge</t>
  <t>Reject the credential if the digests do not match</t>
</list></t>

</section>
</section>
<section anchor="credentials-authorization"><name>Credentials (Authorization)</name>

<t>The Payment credential is sent in the <spanx style="verb">Authorization</spanx> header using
base64url encoding without padding per <xref target="RFC4648"/> Section 5:</t>

<figure><sourcecode type="abnf"><![CDATA[
credentials     = "Payment" 1*SP base64url-nopad
base64url-nopad = 1*( ALPHA / DIGIT / "-" / "_" )
]]></sourcecode></figure>

<t>The base64url-nopad value is a base64url-encoded JSON object (without padding)
containing:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">challenge</spanx></c>
      <c>object</c>
      <c>Yes</c>
      <c>Echoed challenge parameters</c>
      <c><spanx style="verb">source</spanx></c>
      <c>string</c>
      <c>No</c>
      <c>Payer identifier (<bcp14>RECOMMENDED</bcp14>: DID format per <xref target="W3C-DID"></xref>)</c>
      <c><spanx style="verb">payload</spanx></c>
      <c>object</c>
      <c>Yes</c>
      <c>Method-specific payment proof</c>
</texttable>

<t>The <spanx style="verb">challenge</spanx> object contains the parameters from the original challenge:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">id</spanx></c>
      <c>string</c>
      <c>Challenge identifier</c>
      <c><spanx style="verb">realm</spanx></c>
      <c>string</c>
      <c>Protection space</c>
      <c><spanx style="verb">method</spanx></c>
      <c>string</c>
      <c>Payment method identifier</c>
      <c><spanx style="verb">intent</spanx></c>
      <c>string</c>
      <c>Payment intent type</c>
      <c><spanx style="verb">request</spanx></c>
      <c>string</c>
      <c>Base64url-encoded payment request</c>
      <c><spanx style="verb">description</spanx></c>
      <c>string</c>
      <c>Human-readable payment purpose (if present in challenge)</c>
      <c><spanx style="verb">opaque</spanx></c>
      <c>string</c>
      <c>Base64url-encoded server correlation data (if present in challenge)</c>
      <c><spanx style="verb">digest</spanx></c>
      <c>string</c>
      <c>Content digest</c>
      <c><spanx style="verb">expires</spanx></c>
      <c>string</c>
      <c>Challenge expiration timestamp</c>
</texttable>

<t>The <spanx style="verb">payload</spanx> field contains the payment-method-specific data needed to
complete the payment challenge. Payment method specifications define the
exact structure.</t>

<section anchor="example-credential"><name>Example Credential</name>

<figure><sourcecode type="http"><![CDATA[
GET /api/data HTTP/1.1
Host: api.example.com
Authorization: Payment eyJjaGFsbGVuZ2UiOnsiaWQiOiJ4N1RnMnBMcVI5bUt2TndZM2hCY1phIiwicmVhbG0iOiJhcGkuZXhhbXBsZS5jb20iLCJtZXRob2QiOiJleGFtcGxlIiwiaW50ZW50IjoiY2hhcmdlIiwicmVxdWVzdCI6ImV5SmhiVzkxYm5RaU9pSXhNREF3SWl3aVkzVnljbVZ1WTNraU9pSlZVMFFpTENKeVpXTnBjR2xsYm5RaU9pSmhZMk4wWHpFeU15SjkiLCJleHBpcmVzIjoiMjAyNS0wMS0xNVQxMjowNTowMFoifSwicGF5bG9hZCI6eyJwcm9vZiI6IjB4YWJjMTIzLi4uIn19
]]></sourcecode></figure>

<t>Decoded credential:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "x7Tg2pLqR9mKvNwY3hBcZa",
    "realm": "api.example.com",
    "method": "example",
    "intent": "charge",
    "request": "eyJhbW91bnQiOiIxMDAwIiwiY3VycmVuY3kiOiJVU0QiLCJyZWNpcGllbnQiOiJhY2N0XzEyMyJ9",
    "expires": "2025-01-15T12:05:00Z"
  },
  "payload": {
    "proof": "0xabc123..."
  }
}
]]></sourcecode></figure>

</section>
</section>
<section anchor="payment-receipt-header"><name>Payment-Receipt Header</name>

<t>Servers <bcp14>SHOULD</bcp14> include a <spanx style="verb">Payment-Receipt</spanx> header on successful responses:</t>

<figure><sourcecode type="abnf"><![CDATA[
Payment-Receipt = base64url-nopad
]]></sourcecode></figure>

<t>The decoded JSON object contains:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">status</spanx></c>
      <c>string</c>
      <c><spanx style="verb">"success"</spanx> — receipts are only issued on successful payment</c>
      <c><spanx style="verb">method</spanx></c>
      <c>string</c>
      <c>Payment method used</c>
      <c><spanx style="verb">timestamp</spanx></c>
      <c>string</c>
      <c><xref target="RFC3339"/> settlement timestamp</c>
      <c><spanx style="verb">reference</spanx></c>
      <c>string</c>
      <c>Method-specific reference (tx hash, invoice id, etc.)</c>
</texttable>

<t>Payment method specifications <bcp14>MAY</bcp14> define additional fields for receipts.</t>

<section anchor="receipt-status-semantics"><name>Receipt Status Semantics</name>

<t>The <spanx style="verb">status</spanx> field <bcp14>MUST</bcp14> be <spanx style="verb">"success"</spanx>, indicating the payment was
verified and settled successfully. Receipts are only issued on
successful payment responses (2xx status codes).</t>

<t>Servers <bcp14>MUST NOT</bcp14> return a <spanx style="verb">Payment-Receipt</spanx> header on error responses.
Payment failures are communicated via HTTP status codes and Problem
Details <xref target="RFC9457"/>. Servers <bcp14>MUST</bcp14> return 402 with a fresh challenge
and appropriate problem type when payment verification fails.</t>

</section>
</section>
</section>
<section anchor="payment-methods"><name>Payment Methods</name>

<section anchor="method-identifier-format"><name>Method Identifier Format</name>

<t>Payment methods are identified by lowercase ASCII letters:</t>

<figure><sourcecode type="abnf"><![CDATA[
payment-method-id = 1*LOWERALPHA
]]></sourcecode></figure>

<t>Method identifiers are case-sensitive and <bcp14>MUST</bcp14> be lowercase.</t>

</section>
<section anchor="method-registry"><name>Method Registry</name>

<t>Payment methods are registered in the HTTP Payment Methods registry
(<xref target="payment-method-registry"/>). Each registered method has an associated specification
that defines the <spanx style="verb">request</spanx> and <spanx style="verb">payload</spanx> schemas.</t>

</section>
</section>
<section anchor="payment-intents"><name>Payment Intents</name>

<t>Payment intents describe the type of payment being requested.</t>

<section anchor="intent-identifiers"><name>Intent Identifiers</name>

<figure><sourcecode type="abnf"><![CDATA[
intent = 1*( ALPHA / DIGIT / "-" )
]]></sourcecode></figure>

</section>
<section anchor="intent-specifications"><name>Intent Specifications</name>

<t>Payment intents are defined in separate intent specifications that:</t>

<t><list style="symbols">
  <t>Define the semantic meaning of the intent</t>
  <t>Specify required and optional <spanx style="verb">request</spanx> fields</t>
  <t>Specify <spanx style="verb">payload</spanx> requirements</t>
  <t>Define verification and settlement semantics</t>
  <t>Register the intent in the Payment Intent Registry (<xref target="payment-intent-registry"/>)</t>
</list></t>

<t>See the Payment Intent Registry for registered intents.</t>

</section>
<section anchor="intent-negotiation"><name>Intent Negotiation</name>

<t>If a server supports multiple intents, it <bcp14>MAY</bcp14> issue multiple challenges:</t>

<figure><sourcecode type="http"><![CDATA[
WWW-Authenticate: Payment id="abc", realm="api.example.com", method="example", intent="charge", request="..."
WWW-Authenticate: Payment id="def", realm="api.example.com", method="example", intent="authorize", request="..."
]]></sourcecode></figure>

<t>Clients choose which challenge to respond to. Clients that do not
recognize an intent <bcp14>SHOULD</bcp14> treat the challenge as unsupported.</t>

</section>
<section anchor="client-payment-preferences"><name>Client Payment Preferences</name>

<t>Clients <bcp14>MAY</bcp14> send an <spanx style="verb">Accept-Payment</spanx> request header to declare which
payment method and intent combinations they support.</t>

<t>The header uses the same weighted-preference model as other HTTP
negotiation fields: omitted <spanx style="verb">q</spanx> values are equivalent to <spanx style="verb">q=1</spanx>, and
<spanx style="verb">q=0</spanx> means "do not use".</t>

<figure><sourcecode type="abnf"><![CDATA[
Accept-Payment = #payment-range
payment-range  = payment-token [ weight ]
payment-token  = payment-method-or-wildcard "/" intent-or-wildcard
payment-method-or-wildcard = payment-method-id / "*"
intent-or-wildcard         = intent-token / "*"
]]></sourcecode></figure>

<t>Examples:</t>

<figure><sourcecode type="http"><![CDATA[
Accept-Payment: tempo/charge, tempo/session, stripe/charge;q=0.5, solana/charge;q=0.3
Accept-Payment: tempo/*, solana/*;q=0.6, */session;q=0.3
Accept-Payment: tempo/charge, tempo/session;q=0, solana/charge
]]></sourcecode></figure>

<t>When <spanx style="verb">Accept-Payment</spanx> is present, servers <bcp14>SHOULD</bcp14> consider it when
choosing which Payment challenges to return.</t>

<t>Specifically, servers <bcp14>SHOULD</bcp14>:</t>

<t><list style="symbols">
  <t>Filter challenges to those matching at least one declared range with <spanx style="verb">q&gt;0</spanx></t>
  <t>Order matching challenges by descending client <spanx style="verb">q</spanx> value</t>
  <t>Preserve server preference order when multiple matches have the same <spanx style="verb">q</spanx></t>
  <t>Prefer the most specific matching range when multiple ranges match the same challenge</t>
</list></t>

<t>If <spanx style="verb">Accept-Payment</spanx> is absent, servers <bcp14>MUST</bcp14> behave as though the client
accepts any method and intent combination.</t>

<t>If <spanx style="verb">Accept-Payment</spanx> is malformed, servers <bcp14>MAY</bcp14> ignore it.</t>

<t>If <spanx style="verb">Accept-Payment</spanx> is present but no available challenge matches a
declared range with <spanx style="verb">q&gt;0</spanx>, servers <bcp14>MAY</bcp14> ignore the header and return
their normal set of challenges.</t>

<t>The <spanx style="verb">WWW-Authenticate: Payment</spanx> challenge remains authoritative even
when <spanx style="verb">Accept-Payment</spanx> is used. Clients <bcp14>MUST</bcp14> validate the returned
challenge before authorizing payment.</t>

</section>
</section>
<section anchor="error-handling"><name>Error Handling</name>

<section anchor="error-response-format"><name>Error Response Format</name>

<t>Servers <bcp14>SHOULD</bcp14> return Problem Details <xref target="RFC9457"/> error bodies with 402
responses:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "type": "https://paymentauth.org/problems/payment-required",
  "title": "Payment Required",
  "status": 402,
  "detail": "Human-readable description"
}
]]></sourcecode></figure>

<t>The <spanx style="verb">type</spanx> URI <bcp14>SHOULD</bcp14> correspond to one of the problem types defined
below, and the canonical base URI for problem types is
<spanx style="verb">https://paymentauth.org/problems/</spanx>.</t>

</section>
<section anchor="error-codes"><name>Error Codes</name>

<texttable>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>HTTP</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">payment-required</spanx></c>
      <c>402</c>
      <c>Resource requires payment</c>
      <c><spanx style="verb">payment-insufficient</spanx></c>
      <c>402</c>
      <c>Amount too low</c>
      <c><spanx style="verb">payment-expired</spanx></c>
      <c>402</c>
      <c>Challenge or authorization expired</c>
      <c><spanx style="verb">verification-failed</spanx></c>
      <c>402</c>
      <c>Proof invalid</c>
      <c><spanx style="verb">method-unsupported</spanx></c>
      <c>400</c>
      <c>Method not accepted</c>
      <c><spanx style="verb">malformed-credential</spanx></c>
      <c>402</c>
      <c>Invalid credential format</c>
      <c><spanx style="verb">invalid-challenge</spanx></c>
      <c>402</c>
      <c>Challenge ID unknown, expired, or already used</c>
</texttable>

</section>
<section anchor="retry-behavior"><name>Retry Behavior</name>

<t>Servers <bcp14>SHOULD</bcp14> use the <spanx style="verb">Retry-After</spanx> HTTP header <xref target="RFC9110"/> to indicate
when clients may retry:</t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
Retry-After: 60
WWW-Authenticate: Payment ...
]]></sourcecode></figure>

</section>
</section>
<section anchor="extensibility"><name>Extensibility</name>

<section anchor="payment-method-specifications"><name>Payment Method Specifications</name>

<t>Payment method specifications <bcp14>MUST</bcp14> define:</t>

<t><list style="numbers" type="1">
  <t><strong>Method Identifier</strong>: Unique lowercase string</t>
  <t><strong>Request Schema</strong>: JSON structure for the <spanx style="verb">request</spanx> parameter</t>
  <t><strong>Payload Schema</strong>: JSON structure for credential payloads</t>
  <t><strong>Verification Procedure</strong>: How servers validate proofs</t>
  <t><strong>Settlement Procedure</strong>: How payment is finalized</t>
  <t><strong>Security Considerations</strong>: Method-specific threats and mitigations</t>
</list></t>

</section>
<section anchor="versioning"><name>Versioning</name>

<t>The Payment scheme uses a layered versioning strategy:</t>

<section anchor="core-protocol"><name>Core Protocol</name>

<t>The <spanx style="verb">Payment</spanx> scheme name is the stable identifier. The core protocol
does NOT carry a version on the wire, consistent with all deployed HTTP
authentication schemes (<spanx style="verb">Basic</spanx>, <spanx style="verb">Bearer</spanx>, <spanx style="verb">Digest</spanx>). Evolution happens
through adding optional parameters and fields; implementations <bcp14>MUST</bcp14>
ignore unknown parameters and fields. If a future change is truly
incompatible, a new scheme name (e.g., <spanx style="verb">Payment2</spanx>) would be registered.</t>

</section>
<section anchor="versioning-payment-methods"><name>Payment Methods</name>

<t>Payment method specifications <bcp14>MAY</bcp14> include a <spanx style="verb">version</spanx> field in their
<spanx style="verb">methodDetails</spanx>. The absence of a <spanx style="verb">version</spanx> field is implicitly
version 1. When a breaking change is needed, the method specification
adds a <spanx style="verb">version</spanx> field starting at <spanx style="verb">2</spanx>. Compatible changes (adding
optional fields, defining defaults) do not require a version change.
Methods <bcp14>MAY</bcp14> also register a new identifier for changes fundamental
enough to warrant a distinct name.</t>

</section>
<section anchor="versioning-payment-intents"><name>Payment Intents</name>

<t>Payment intents do not carry a version. They evolve through the same
compatibility rules as the core: adding optional fields with defined
defaults is compatible, and breaking changes require a new intent
identifier (e.g., <spanx style="verb">charge-v2</spanx>).</t>

</section>
</section>
<section anchor="custom-parameters"><name>Custom Parameters</name>

<t>Implementations <bcp14>MAY</bcp14> define additional parameters in challenges:</t>

<t><list style="symbols">
  <t>Parameters <bcp14>MUST</bcp14> use lowercase names</t>
  <t>Unknown parameters <bcp14>MUST</bcp14> be ignored by clients</t>
</list></t>

</section>
<section anchor="size-considerations"><name>Size Considerations</name>

<t>Servers <bcp14>SHOULD</bcp14> keep challenges under 8KB. Clients <bcp14>MUST</bcp14> be able to handle
challenges of at least 4KB. Servers <bcp14>MUST</bcp14> be able to handle credentials
of at least 4KB.</t>

</section>
</section>
<section anchor="internationalization-considerations"><name>Internationalization Considerations</name>

<section anchor="character-encoding"><name>Character Encoding</name>

<t>All string values use UTF-8 encoding <xref target="RFC3629"/>:</t>

<t><list style="symbols">
  <t>The <spanx style="verb">request</spanx> and credential payloads are JSON <xref target="RFC8259"/></t>
  <t>Payment method identifiers are restricted to ASCII lowercase</t>
  <t>The <spanx style="verb">realm</spanx> parameter <bcp14>SHOULD</bcp14> use ASCII-only values per <xref target="RFC9110"/></t>
</list></t>

</section>
<section anchor="human-readable-text"><name>Human-Readable Text</name>

<t>The <spanx style="verb">description</spanx> parameter may contain localized text. Servers <bcp14>SHOULD</bcp14>
use the <spanx style="verb">Accept-Language</spanx> request header <xref target="RFC9110"/> to determine the
appropriate language.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<section anchor="threat-model"><name>Threat Model</name>

<t>This specification assumes:</t>

<t><list style="symbols">
  <t>Attackers can observe all network traffic</t>
  <t>Attackers can inject, modify, or replay messages</t>
  <t>Attackers may control malicious servers or clients</t>
</list></t>

</section>
<section anchor="transport-security"><name>Transport Security</name>

<t>This specification REQUIRES TLS 1.2 <xref target="RFC5246"/> or later for all Payment
authentication flows. TLS 1.3 <xref target="RFC8446"/> is <bcp14>RECOMMENDED</bcp14>.</t>

<t>Implementations <bcp14>MUST</bcp14> use TLS when transmitting Payment challenges and
credentials. Payment credentials contain sensitive authorization data
that could result in financial loss if intercepted.</t>

<t>Servers <bcp14>MUST NOT</bcp14> issue Payment challenges over unencrypted HTTP. Clients
<bcp14>MUST NOT</bcp14> send Payment credentials over unencrypted HTTP. Implementations
<bcp14>SHOULD</bcp14> reject Payment protocol messages received over non-TLS connections.</t>

<section anchor="credential-handling"><name>Credential Handling</name>

<t>Payment credentials are bearer tokens that authorize financial transactions.
Servers and intermediaries <bcp14>MUST NOT</bcp14> log Payment credentials or include them
in error messages, debugging output, or analytics. Credential exposure could
enable replay attacks or unauthorized payments.</t>

<t>Implementations <bcp14>MUST</bcp14> treat Payment credentials with the same care as
authentication passwords or session tokens. Credentials <bcp14>SHOULD</bcp14> be stored
only in memory and cleared after use.</t>

</section>
<section anchor="challenge-binding-secret-management"><name>Challenge-Binding Secret Management</name>

<t>Implementations that use a shared secret for stateless challenge binding
(for example, HMAC) <bcp14>MUST</bcp14> keep that secret on trusted server-side systems
only and <bcp14>MUST NOT</bcp14> disclose it to clients. Servers <bcp14>MUST NOT</bcp14> log the secret
or include it in error messages, debugging output, or analytics.</t>

<t>If a server rotates a challenge-binding secret, it <bcp14>SHOULD</bcp14> continue
verifying challenges issued under the previous secret until those
challenges expire, or use an equivalent migration strategy that avoids
invalidating unexpired challenges.</t>

</section>
</section>
<section anchor="replay-protection"><name>Replay Protection</name>

<t>Payment methods used with this specification <bcp14>MUST</bcp14> provide single-use
proof semantics. A payment proof <bcp14>MUST</bcp14> be usable exactly once; subsequent
attempts to use the same proof <bcp14>MUST</bcp14> be rejected by the payment method
infrastructure.</t>

</section>
<section anchor="idempotency-and-side-effects"><name>Idempotency and Side Effects</name>

<t>Servers <bcp14>MUST NOT</bcp14> perform side effects (database writes, external API
calls, resource creation) for requests that have not been paid. The
unpaid request that triggers a 402 challenge <bcp14>MUST NOT</bcp14> modify server
state beyond recording the challenge itself.</t>

<t>For non-idempotent methods (POST, PUT, DELETE), servers <bcp14>SHOULD</bcp14> accept
an <spanx style="verb">Idempotency-Key</spanx> header to enable safe client retries. When a client
retries a request with the same <spanx style="verb">Idempotency-Key</spanx> and a valid Payment
credential, the server <bcp14>SHOULD</bcp14> return the same response as the original
successful request without re-executing the operation.</t>

</section>
<section anchor="concurrent-request-handling"><name>Concurrent Request Handling</name>

<t>Servers <bcp14>MUST</bcp14> ensure that concurrent requests with the same Payment
credential result in at most one successful payment settlement and one
resource delivery. Race conditions between parallel requests could
otherwise cause double-payment or double-delivery.</t>

<t>Implementations <bcp14>SHOULD</bcp14> use atomic operations or distributed locks when
verifying and consuming Payment credentials. The credential verification
and resource delivery <bcp14>SHOULD</bcp14> be performed as an atomic operation where
possible.</t>

</section>
<section anchor="amount-verification"><name>Amount Verification</name>

<t>Clients <bcp14>MUST</bcp14> verify before authorizing payment:</t>

<t><list style="numbers" type="1">
  <t>Requested amount is reasonable for the resource</t>
  <t>Recipient/address is expected</t>
  <t>Currency/asset is as expected</t>
  <t>Validity window is appropriate</t>
</list></t>

<t>Clients <bcp14>MUST NOT</bcp14> rely on the <spanx style="verb">description</spanx> parameter for payment
verification. Malicious servers could provide a misleading description
while the actual <spanx style="verb">request</spanx> payload requests a different amount.</t>

</section>
<section anchor="privacy"><name>Privacy</name>

<t><list style="symbols">
  <t>Servers <bcp14>MUST NOT</bcp14> require user accounts for payment.</t>
  <t>Payment methods <bcp14>SHOULD</bcp14> support pseudonymous options where possible.</t>
  <t>Servers <bcp14>SHOULD NOT</bcp14> log Payment credentials in plaintext</t>
</list></t>

</section>
<section anchor="credential-storage"><name>Credential Storage</name>

<t>Implementations <bcp14>MUST</bcp14> treat <spanx style="verb">Authorization: Payment</spanx> headers and
<spanx style="verb">Payment-Receipt</spanx> headers as sensitive data.</t>

</section>
<section anchor="intermediary-handling-of-402"><name>Intermediary Handling of 402</name>

<t>HTTP intermediaries (proxies, caches, CDNs) may not recognize 402 as an
authentication challenge in the same way they handle 401. While this
specification uses <spanx style="verb">WWW-Authenticate</spanx> headers with 402 responses following
the same syntax as <xref target="RFC9110"/>, intermediaries that perform special
processing for 401 (such as stripping credentials or triggering
authentication prompts) may not apply the same behavior to 402.</t>

<t>Servers <bcp14>SHOULD NOT</bcp14> rely on intermediary-specific handling of 402 responses.
Clients <bcp14>MUST</bcp14> be prepared to receive 402 responses through any intermediary.</t>

</section>
<section anchor="caching"><name>Caching</name>

<t>Payment challenges contain unique identifiers and time-sensitive payment
data that <bcp14>MUST NOT</bcp14> be cached or reused. To prevent challenge replay and
stale payment information:</t>

<t>Servers <bcp14>MUST</bcp14> send <spanx style="verb">Cache-Control: no-store</spanx> <xref target="RFC9111"/> with 402 responses; this ensures no shared cache reuse.</t>

<t>Responses containing <spanx style="verb">Payment-Receipt</spanx> headers <bcp14>MUST</bcp14> include
<spanx style="verb">Cache-Control: private</spanx> to prevent shared caches from storing
payment receipts.</t>

</section>
<section anchor="cross-origin-considerations"><name>Cross-Origin Considerations</name>

<t>Clients (particularly browser-based wallets) <bcp14>SHOULD</bcp14>:</t>

<t><list style="symbols">
  <t>Clearly display the origin requesting payment</t>
  <t>Require explicit user confirmation before authorizing payments</t>
  <t>Not automatically respond to Payment challenges</t>
</list></t>

</section>
<section anchor="denial-of-service"><name>Denial of Service</name>

<t>Servers <bcp14>SHOULD</bcp14> implement rate limiting on challenges issued and
credential verification attempts.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="authentication-scheme-registration"><name>Authentication Scheme Registration</name>

<t>This document registers the "Payment" authentication scheme in the
"Hypertext Transfer Protocol (HTTP) Authentication Scheme Registry"
established by <xref target="RFC9110"/>:</t>

<t><list style="symbols">
  <t><strong>Authentication Scheme Name</strong>: Payment</t>
  <t><strong>Reference</strong>: This document, <xref target="the-payment-authentication-scheme"/></t>
  <t><strong>Notes</strong>: Used with HTTP 402 status code for proof-of-payment flows</t>
</list></t>

</section>
<section anchor="header-field-registration"><name>Header Field Registration</name>

<t>This document registers the following header fields:</t>

<texttable>
      <ttcol align='left'>Field Name</ttcol>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>Accept-Payment</c>
      <c>permanent</c>
      <c>This document, <xref target="client-payment-preferences"/></c>
      <c>Payment-Receipt</c>
      <c>permanent</c>
      <c>This document, <xref target="payment-receipt-header"/></c>
</texttable>

</section>
<section anchor="payment-method-registry"><name>Payment Method Registry</name>

<t>This document establishes the "HTTP Payment Methods" registry. This
registry uses the "Specification Required" policy defined in <xref target="RFC8126"/>.</t>

<t>Registration requests must include:</t>

<t><list style="symbols">
  <t><strong>Method Identifier</strong>: Unique lowercase ASCII letters (<spanx style="verb">a-z</spanx>)</t>
  <t><strong>Description</strong>: Brief payment-method description</t>
  <t><strong>Specification pointer</strong>: Reference to the specification document</t>
  <t><strong>Registrant Contact</strong>: Contact information for the registrant</t>
</list></t>

</section>
<section anchor="payment-intent-registry"><name>Payment Intent Registry</name>

<t>This document establishes the "HTTP Payment Intents" registry. This
registry uses the "Specification Required" policy defined in <xref target="RFC8126"/>.</t>

<t>Registration requests must include:</t>

<t><list style="symbols">
  <t><strong>Intent Identifier</strong>: Unique lowercase ASCII string</t>
  <t><strong>Description</strong>: Brief description of the intent semantics</t>
  <t><strong>Specification pointer</strong>: Reference to the specification document</t>
  <t><strong>Registrant Contact</strong>: Contact information for the registrant</t>
</list></t>

<t>The registry is initially empty. Intent specifications register their
identifiers upon publication.</t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">

&RFC2119;
&RFC3339;
&RFC3629;
&RFC4648;
&RFC5234;
&RFC5246;
&RFC8126;
&RFC8174;
&RFC8259;
&RFC8446;
&RFC8785;
&RFC9110;
&RFC9111;
&RFC9457;
&RFC9530;


    </references>

    <references title='Informative References' anchor="sec-informative-references">

<reference anchor="W3C-DID" target="https://www.w3.org/TR/did-core/">
  <front>
    <title>Decentralized Identifiers (DIDs) v1.0</title>
    <author >
      <organization>W3C</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="W3C-PMI" target="https://www.w3.org/TR/payment-method-id/">
  <front>
    <title>Payment Method Identifiers</title>
    <author >
      <organization>W3C</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

</references>


<?line 922?>

<section anchor="abnf-collected"><name>ABNF Collected</name>

<figure><sourcecode type="abnf"><![CDATA[
; HTTP Authentication Challenge (following RFC 7235 Section 2.1)
payment-challenge = "Payment" [ 1*SP auth-params ]
auth-params       = auth-param *( OWS "," OWS auth-param )
auth-param        = token BWS "=" BWS ( token / quoted-string )

; Required parameters: id, realm, method, intent, request
; The id parameter is required by prose to be non-empty after parsing.
; Optional parameters: expires, digest, description, opaque

; HTTP Authorization Credentials
payment-credentials = "Payment" 1*SP base64url-nopad

; Client payment preferences
Accept-Payment = #payment-range
payment-range = payment-token [ weight ]
payment-token = payment-method-or-wildcard "/" intent-or-wildcard
payment-method-or-wildcard = payment-method-id / "*"
intent-or-wildcard = intent-token / "*"

; Payment-Receipt header field value
Payment-Receipt = base64url-nopad

; Base64url encoding without padding per RFC 4648 Section 5
base64url-nopad = 1*( ALPHA / DIGIT / "-" / "_" )

; Payment method identifier (lowercase only)
payment-method-id   = 1*LOWERALPHA
LOWERALPHA          = %x61-7A  ; a-z

; Payment intent
intent-token = 1*( ALPHA / DIGIT / "-" )
]]></sourcecode></figure>

</section>
<section anchor="examples"><name>Examples</name>

<section anchor="one-time-charge"><name>One-Time Charge</name>

<t>A client requests a resource, receives a payment challenge, fulfills
the payment, and receives the resource with a receipt.</t>

<figure><artwork><![CDATA[
Client                                 Server
   │                                      │
   │  (1) GET /resource                   │
   ├─────────────────────────────────────>│
   │                                      │
   │  (2) 402 Payment Required            │
   │      WWW-Authenticate: Payment ...   │
   │<─────────────────────────────────────┤
   │                                      │
   │  (3) Fulfill payment challenge       │
   │      (method-specific)               │
   │                                      │
   │  (4) GET /resource                   │
   │      Authorization: Payment ...      │
   ├─────────────────────────────────────>│
   │                                      │
   │  (5) 200 OK                          │
   │      Payment-Receipt: ...            │
   │<─────────────────────────────────────┤
   │                                      │
]]></artwork></figure>

<t><strong>Challenge:</strong></t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
Cache-Control: no-store
Content-Type: application/problem+json
WWW-Authenticate: Payment id="qB3wErTyU7iOpAsD9fGhJk",
    realm="api.example.com",
    method="invoice",
    intent="charge",
    expires="2025-01-15T12:05:00Z",
    request="eyJhbW91bnQiOiIxMDAwIiwiY3VycmVuY3kiOiJVU0QiLCJpbnZvaWNlIjoiaW52XzEyMzQ1In0"

{
  "type": "https://paymentauth.org/problems/payment-required",
  "title": "Payment Required",
  "status": 402,
  "detail": "Payment required for access.",
  "challengeId": "qB3wErTyU7iOpAsD9fGhJk"
}
]]></sourcecode></figure>

<t>Decoded <spanx style="verb">request</spanx>:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "1000",
  "currency": "usd",
  "invoice": "inv_12345"
}
]]></sourcecode></figure>

<t><strong>Credential:</strong></t>

<figure><sourcecode type="http"><![CDATA[
GET /resource HTTP/1.1
Host: api.example.com
Authorization: Payment eyJpZCI6InFCM3dFclR5VTdpT3BBc0Q5ZkdoSmsiLCJwYXlsb2FkIjp7InByZWltYWdlIjoiMHhhYmMxMjMuLi4ifX0
]]></sourcecode></figure>

<t>Decoded credential:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "qB3wErTyU7iOpAsD9fGhJk",
    "realm": "api.example.com",
    "method": "invoice",
    "intent": "charge",
    "request": "eyJhbW91bnQiOiIxMDAwIiwiY3VycmVuY3kiOiJVU0QiLCJpbnZvaWNlIjoiaW52XzEyMzQ1In0",
    "expires": "2025-01-15T12:05:00Z"
  },
  "payload": {
    "preimage": "0xabc123..."
  }
}
]]></sourcecode></figure>

<t><strong>Success:</strong></t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Cache-Control: private
Payment-Receipt: eyJzdGF0dXMiOiJzdWNjZXNzIiwibWV0aG9kIjoiaW52b2ljZSIsInRpbWVzdGFtcCI6IjIwMjUtMDEtMTVUMTI6MDA6MDBaIiwicmVmZXJlbmNlIjoiaW52XzEyMzQ1In0
Content-Type: application/json

{"data": "..."}
]]></sourcecode></figure>

</section>
<section anchor="challenge-negotiation-with-accept-payment"><name>Challenge Negotiation with Accept-Payment</name>

<t>The client can pre-declare its supported payment capabilities and let
the server tailor the 402 response:</t>

<figure><sourcecode type="http"><![CDATA[
GET /resource HTTP/1.1
Host: api.example.com
Accept-Payment: tempo/charge, tempo/session, stripe/charge;q=0.5, solana/charge;q=0.3
]]></sourcecode></figure>

<t>If the server supports all four combinations, it <bcp14>SHOULD</bcp14> prefer the
higher-ranked <spanx style="verb">tempo</spanx> challenges, then <spanx style="verb">stripe/charge</spanx>, then
<spanx style="verb">solana/charge</spanx>:</t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
Cache-Control: no-store
WWW-Authenticate: Payment id="pT7yHnKmQ2wErXsZ5vCbNl", realm="api.example.com", method="tempo", intent="charge", request="..."
WWW-Authenticate: Payment id="nH6xJkLpO3qRtYsA6wDcVb", realm="api.example.com", method="tempo", intent="session", request="..."
WWW-Authenticate: Payment id="mF8uJkLpO3qRtYsA6wDcVb", realm="api.example.com", method="stripe", intent="charge", request="..."
WWW-Authenticate: Payment id="kD4vLmNpQ2rStUwX5yAbCe", realm="api.example.com", method="solana", intent="charge", request="..."
]]></sourcecode></figure>

<t>When multiple entries omit <spanx style="verb">q</spanx>, they are equally preferred. In that
case, the server <bcp14>MAY</bcp14> order the returned challenges according to its own
policy:</t>

<figure><sourcecode type="http"><![CDATA[
GET /resource HTTP/1.1
Host: api.example.com
Accept-Payment: tempo/charge, solana/charge
]]></sourcecode></figure>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
Cache-Control: no-store
WWW-Authenticate: Payment id="sK9vLmQwErTyUiOpA2dFgH", realm="api.example.com", method="solana", intent="charge", request="..."
WWW-Authenticate: Payment id="rJ8uKnLpO3qWtYsA6wDcVb", realm="api.example.com", method="tempo", intent="charge", request="..."
]]></sourcecode></figure>

<t>Clients can also use wildcards to express broader support. In the
following example, the client prefers any <spanx style="verb">tempo</spanx> payment method, then
any <spanx style="verb">solana</spanx> method, and least prefers <spanx style="verb">stripe/charge</spanx>:</t>

<figure><sourcecode type="http"><![CDATA[
GET /stream HTTP/1.1
Host: api.example.com
Accept-Payment: tempo/*, solana/*;q=0.6, stripe/charge;q=0.2
]]></sourcecode></figure>

<t>If the server can offer <spanx style="verb">tempo/session</spanx>, <spanx style="verb">tempo/charge</spanx>,
<spanx style="verb">solana/charge</spanx>, and <spanx style="verb">stripe/charge</spanx>, it <bcp14>SHOULD</bcp14> rank the <spanx style="verb">tempo</spanx> offers
first, then <spanx style="verb">solana/charge</spanx>, then <spanx style="verb">stripe/charge</spanx>:</t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
Cache-Control: no-store
WWW-Authenticate: Payment id="tM4nOpQrS5uVwXyZ6aBcDe", realm="api.example.com", method="tempo", intent="session", request="..."
WWW-Authenticate: Payment id="uN5oPqRsT6vWxYzA7bCdEf", realm="api.example.com", method="tempo", intent="charge", request="..."
WWW-Authenticate: Payment id="qE3rFgHiJ4kLmNpO5sAtBu", realm="api.example.com", method="solana", intent="charge", request="..."
WWW-Authenticate: Payment id="vP6qRtSuV7wXyZaB8cDeFg", realm="api.example.com", method="stripe", intent="charge", request="..."
]]></sourcecode></figure>

<t>Clients can set <spanx style="verb">q=0</spanx> to declare that a capability is not acceptable.
In this example, the client is able to use <spanx style="verb">tempo/session</spanx>, but does not
wish to receive that challenge for this request:</t>

<figure><sourcecode type="http"><![CDATA[
GET /download HTTP/1.1
Host: api.example.com
Accept-Payment: tempo/charge, tempo/session;q=0, solana/charge;q=0.8, stripe/charge;q=0.4
]]></sourcecode></figure>

<t>If the server would otherwise offer <spanx style="verb">tempo/charge</spanx>, <spanx style="verb">tempo/session</spanx>,
<spanx style="verb">solana/charge</spanx>, and <spanx style="verb">stripe/charge</spanx>, it <bcp14>SHOULD</bcp14> omit <spanx style="verb">tempo/session</spanx>
from the ranked set:</t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
Cache-Control: no-store
WWW-Authenticate: Payment id="wQ7rStTuV8xYzAbC9dEfGh", realm="api.example.com", method="tempo", intent="charge", request="..."
WWW-Authenticate: Payment id="yR5tUvWxY6zAbCdE7fGhIj", realm="api.example.com", method="solana", intent="charge", request="..."
WWW-Authenticate: Payment id="xR8sTuUvW9yZaBcD0eFgHi", realm="api.example.com", method="stripe", intent="charge", request="..."
]]></sourcecode></figure>

</section>
<section anchor="signed-authorization"><name>Signed Authorization</name>

<t>A payment method using cryptographic signatures:</t>

<t><strong>Challenge:</strong></t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
Cache-Control: no-store
WWW-Authenticate: Payment id="zL4xCvBnM6kJhGfD8sAaWe",
    realm="api.example.com",
    method="signed",
    intent="charge",
    expires="2025-01-15T12:05:00Z",
    request="eyJhbW91bnQiOiI1MDAwIiwiYXNzZXQiOiJVU0QiLCJyZWNpcGllbnQiOiIweDc0MmQzNUNjNjYzNEMwNTMyOTI1YTNiODQ0QmM5ZTc1OTVmOGZFMDAiLCJub25jZSI6IjB4MTIzNDU2Nzg5MCJ9"
]]></sourcecode></figure>

<t>Decoded <spanx style="verb">request</spanx>:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "5000",
  "currency": "usd",
  "recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00",
  "methodDetails": {
    "nonce": "0x1234567890"
  }
}
]]></sourcecode></figure>

<t><strong>Credential:</strong></t>

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "zL4xCvBnM6kJhGfD8sAaWe",
    "realm": "api.example.com",
    "method": "signed",
    "intent": "charge",
    "request": "eyJhbW91bnQiOiI1MDAwIiwiYXNzZXQiOiJVU0QiLCJyZWNpcGllbnQiOiIweDc0MmQzNUNjNjYzNEMwNTMyOTI1YTNiODQ0QmM5ZTc1OTVmOGZFMDAiLCJub25jZSI6IjB4MTIzNDU2Nzg5MCJ9",
    "expires": "2025-01-15T12:05:00Z"
  },
  "source": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
  "payload": {
    "signature": "0x1b2c3d4e5f..."
  }
}
]]></sourcecode></figure>

</section>
<section anchor="multiple-payment-options"><name>Multiple Payment Options</name>

<t>Servers <bcp14>MAY</bcp14> return multiple Payment challenges in a single 402 response,
each with a different payment method or configuration:</t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
Cache-Control: no-store
WWW-Authenticate: Payment id="pT7yHnKmQ2wErXsZ5vCbNl", realm="api.example.com", method="invoice", intent="charge", request="..."
WWW-Authenticate: Payment id="mF8uJkLpO3qRtYsA6wDcVb", realm="api.example.com", method="signed", intent="charge", request="..."
]]></sourcecode></figure>

<t>When a server returns multiple challenges, clients <bcp14>SHOULD</bcp14> select one
based on their capabilities and user preferences. Clients <bcp14>MUST</bcp14> send
only one <spanx style="verb">Authorization: Payment</spanx> header in the subsequent request,
corresponding to the selected challenge.</t>

<t>Servers receiving multiple Payment credentials in a single request
<bcp14>SHOULD</bcp14> reject with 400 (Bad Request).</t>

</section>
<section anchor="failed-payment-verification"><name>Failed Payment Verification</name>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
Cache-Control: no-store
Content-Type: application/problem+json
WWW-Authenticate: Payment id="aB1cDeF2gHiJ3kLmN4oPqR", realm="api.example.com", method="invoice", intent="charge", request="..."

{
  "type": "https://paymentauth.org/problems/verification-failed",
  "title": "Payment Verification Failed",
  "status": 402,
  "detail": "Invalid payment proof."
}
]]></sourcecode></figure>

<t>The server returns 402 with a fresh challenge, allowing the client to
retry with a new payment credential.</t>

</section>
</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>TBD</t>

</section>


  </back>

<!-- ##markdown-source:
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
ofIG0qkAAA==

-->

</rfc>

