<?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.6) -->


<!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 RFC4648 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.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 RFC8785 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8785.xml">
]>


<rfc ipr="noModificationTrust200902" docName="draft-payment-intent-subscription-00" category="info" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="Payment Intent Subscription">Subscription Intent for HTTP Payment Authentication</title>

    <author initials="J." surname="Moxey" fullname="Jake Moxey">
      <organization>Tempo Labs</organization>
      <address>
        <email>jake@tempo.xyz</email>
      </address>
    </author>
    <author initials="B." surname="Ryan" fullname="Brendan Ryan">
      <organization>Tempo Labs</organization>
      <address>
        <email>brendan@tempo.xyz</email>
      </address>
    </author>
    <author initials="T." surname="Meagher" fullname="Tom Meagher">
      <organization>Tempo Labs</organization>
      <address>
        <email>thomas@tempo.xyz</email>
      </address>
    </author>

    <date year="2026" month="July" day="29"/>

    
    
    

    <abstract>


<?line 46?>

<t>This document defines the "subscription" payment intent for use with the
Payment HTTP Authentication Scheme. The "subscription" intent
represents a recurring fixed-amount payment where the payer grants the
server permission to charge the same amount once per billing period.
It standardizes the recurring payment authorization itself, not the full
billing relationship that many application-level systems also call a
subscription.</t>



    </abstract>



  </front>

  <middle>


<?line 56?>

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

<t>The "subscription" intent enables recurring fixed-amount payments. A
successful subscription activation creates an authorization for the
server to collect the same payment amount once per billing period until
the payer cancels it or the authorization otherwise becomes invalid.</t>

<t>This intent is useful for recurring API plans, content subscriptions,
and other services with a stable price per billing period.</t>

<t>This document intentionally standardizes the payment agreement, not the
entire billing system around it. In particular, the shared intent does
not define price catalogs, quantities or seat counts, plan swaps,
prorations, deferred starts, billing-cycle realignment, invoice state,
or other product-management behavior that many billing platforms also
associate with a "subscription". Those concerns belong to the
application layer or to a narrower payment-method profile.</t>

<t>This is a deliberate trade-off. Using the name "subscription" keeps the
user-facing concept familiar, but the interoperable wire contract is
intentionally narrower: it means "charge this fixed amount every
interval", not "model every behavior of a commercial subscription
object".</t>

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

<t>Payment methods implement "subscription" using method-specific recurring
authorization mechanisms. This document defines the abstract semantics
and shared request fields. Payment method specifications define how
those semantics are enforced, which request shapes they support, and
which requests they reject because they cannot be represented exactly on
the underlying payment network.</t>

<t>Payment method specifications <bcp14>MAY</bcp14> intentionally define a constrained
subset of a richer underlying subscription system. A method <bcp14>MUST</bcp14> either
preserve the semantics in this document exactly or reject the request;
it <bcp14>MUST NOT</bcp14> approximate them.</t>

<t>Payment method specifications <bcp14>MAY</bcp14> also impose additional constraints
that are not part of the shared contract, such as an explicit expiry or
recipient requirements, when the underlying payment system cannot safely
support the shared intent without them. Such constraints <bcp14>MUST</bcp14> be made
explicit by the method specification.</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>Subscription</dt>
  <dd>
    <t>A recurring payment authorization for a fixed amount charged once per
billing period.</t>
  </dd>
  <dt>Billing Period</dt>
  <dd>
    <t>A recurrence window, defined by the subscription period fields, during
which at most one subscription charge may be collected.</t>
  </dd>
  <dt>Activation</dt>
  <dd>
    <t>The successful initial setup of a subscription, which includes
collection of the first billing-period charge.</t>
  </dd>
  <dt>Renewal</dt>
  <dd>
    <t>A later charge that collects the subscription amount for a subsequent
billing period.</t>
  </dd>
  <dt>Cancellation</dt>
  <dd>
    <t>The act of ending a subscription, preventing future renewals.</t>
  </dd>
  <dt>Subscription Identifier</dt>
  <dd>
    <t>A server-issued opaque identifier for an activated subscription,
used by servers and applications to refer to that subscription in
later interactions.</t>
  </dd>
</dl>

</section>
<section anchor="intent-semantics"><name>Intent Semantics</name>

<section anchor="definition"><name>Definition</name>

<t>The "subscription" intent represents a request for a recurring
fixed-amount payment of <spanx style="verb">amount</spanx>, charged once per billing period until
explicit cancellation or until the recurring authorization otherwise
becomes invalid.</t>

</section>
<section anchor="properties"><name>Properties</name>

<texttable>
      <ttcol align='left'>Property</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c><strong>Intent Identifier</strong></c>
      <c><spanx style="verb">subscription</spanx></c>
      <c><strong>Payment Timing</strong></c>
      <c>Recurring (initial charge at activation, then once per period)</c>
      <c><strong>Idempotency</strong></c>
      <c>Credential single-use; subscription grant reusable across billing periods</c>
      <c><strong>Reversibility</strong></c>
      <c>Cancellable</c>
</texttable>

</section>
<section anchor="flow"><name>Flow</name>

<figure><artwork><![CDATA[
   Client                           Server                    Payment Network
      │                                │                              │
      │  (1) GET /resource             │                              │
      ├───────────────────────────────>│                              │
      │                                │                              │
      │  (2) 402 Payment Required      │                              │
      │      intent="subscription"     │                              │
      │<───────────────────────────────┤                              │
      │                                │                              │
      │  (3) Sign subscription grant   │                              │
      │                                │                              │
      │  (4) Authorization: Payment    │                              │
      ├───────────────────────────────>│                              │
      │                                │                              │
      │                                │  (5) Activate subscription   │
      │                                │      + collect first charge  │
      │                                ├─────────────────────────────>│
      │                                │                              │
      │  (6) 200 OK + Receipt          │                              │
      │<───────────────────────────────┤                              │
      │                                │                              │
      │        ... later period ...    │                              │
      │                                │                              │
      │                                │  (7) Collect renewal         │
      │                                ├─────────────────────────────>│
      │                                │                              │
      │  (8) 200 OK + Receipt          │                              │
      │<───────────────────────────────┤                              │
      │                                │                              │
]]></artwork></figure>

</section>
</section>
<section anchor="request-schema"><name>Request Schema</name>

<t>The <spanx style="verb">request</spanx> parameter for a "subscription" intent is a JSON object
with shared fields defined by this specification and optional
method-specific extensions in the <spanx style="verb">methodDetails</spanx> field. The <spanx style="verb">request</spanx>
JSON <bcp14>MUST</bcp14> be serialized using JSON Canonicalization Scheme (JCS)
<xref target="RFC8785"/> and base64url-encoded without padding per
<xref target="I-D.httpauth-payment"/>.</t>

<section anchor="shared-fields"><name>Shared Fields</name>

<t>All payment methods implementing the "subscription" intent <bcp14>MUST</bcp14> support
the required shared fields below. Method specifications <bcp14>MAY</bcp14> support,
forbid, or elevate optional shared fields to <bcp14>REQUIRED</bcp14>, but <bcp14>MUST</bcp14>
document those choices explicitly.</t>

<section anchor="required-fields"><name>Required Fields</name>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">amount</spanx></c>
      <c>string</c>
      <c>Fixed payment amount per billing period in base units</c>
      <c><spanx style="verb">currency</spanx></c>
      <c>string</c>
      <c>Currency or asset identifier (see <xref target="currency-formats"/>)</c>
      <c><spanx style="verb">periodUnit</spanx></c>
      <c>string</c>
      <c>Billing period unit. The value <bcp14>MUST</bcp14> be <spanx style="verb">day</spanx>, <spanx style="verb">week</spanx>, or <spanx style="verb">month</spanx></c>
      <c><spanx style="verb">periodCount</spanx></c>
      <c>string</c>
      <c>Positive integer count of <spanx style="verb">periodUnit</spanx> values per billing period</c>
</texttable>

<t>The <spanx style="verb">amount</spanx> value <bcp14>MUST</bcp14> be a string representation of a positive
integer in base 10 with no sign, decimal point, exponent, or
surrounding whitespace. Leading zeros <bcp14>MUST NOT</bcp14> be used.</t>

<t>The <spanx style="verb">periodCount</spanx> value <bcp14>MUST</bcp14> be a string representation of a positive
integer in base 10 with no sign, decimal point, exponent, or
surrounding whitespace. Leading zeros <bcp14>MUST NOT</bcp14> be used.</t>

<t>The <spanx style="verb">periodUnit</spanx> value defines how billing-period boundaries are
computed:</t>

<t><list style="symbols">
  <t><spanx style="verb">day</spanx>: fixed elapsed-time periods of <spanx style="verb">periodCount * 86400</spanx> seconds</t>
  <t><spanx style="verb">week</spanx>: fixed elapsed-time periods of <spanx style="verb">periodCount * 604800</spanx> seconds</t>
  <t><spanx style="verb">month</spanx>: calendar-month periods anchored at activation</t>
</list></t>

<t>For <spanx style="verb">periodUnit="month"</spanx>, billing-period boundaries are computed by
adding <spanx style="verb">N * periodCount</spanx> calendar months to the original activation
anchor using UTC calendar fields. If the target month does not contain
the activation anchor's day-of-month, the boundary uses the last valid
day of the target month while preserving the activation time-of-day.
Boundaries <bcp14>MUST</bcp14> be computed from the original activation anchor, not by
adding months to the previous boundary.</t>

<t>Payment methods <bcp14>MUST</bcp14> reject request objects whose <spanx style="verb">periodUnit</spanx> or
<spanx style="verb">periodCount</spanx> values they cannot represent exactly. They <bcp14>MUST NOT</bcp14>
approximate the requested period by rounding, truncating, or
substituting a nearby network-native cadence.</t>

</section>
<section anchor="optional-fields"><name>Optional Fields</name>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">recipient</spanx></c>
      <c>string</c>
      <c>Payment recipient in method-native format</c>
      <c><spanx style="verb">subscriptionExpires</spanx></c>
      <c>string</c>
      <c>Optional recurring-authorization expiry timestamp in <xref target="RFC3339"/> format</c>
      <c><spanx style="verb">description</spanx></c>
      <c>string</c>
      <c>Human-readable subscription description</c>
      <c><spanx style="verb">externalId</spanx></c>
      <c>string</c>
      <c>Merchant's reference for the subscription</c>
      <c><spanx style="verb">methodDetails</spanx></c>
      <c>object</c>
      <c>Method-specific extension data</c>
</texttable>

<t>When present, <spanx style="verb">subscriptionExpires</spanx> bounds the reusable lifetime of the
subscription authorization. Once that timestamp is reached, the server
<bcp14>MUST</bcp14> stop treating the subscription as authority for future billing
periods. Payment methods <bcp14>MAY</bcp14> require this field and <bcp14>MAY</bcp14> impose
additional constraints, such as billing-period boundary alignment or
network-native representation limits.</t>

<t>Payment methods <bcp14>MUST</bcp14> place all method-specific request parameters in
<spanx style="verb">methodDetails</spanx>. They <bcp14>MAY</bcp14> require or forbid shared optional fields, but
<bcp14>MUST NOT</bcp14> define additional top-level request fields.</t>

<t>Servers issuing <spanx style="verb">intent="subscription"</spanx> challenges <bcp14>SHOULD</bcp14> include the
<spanx style="verb">expires</spanx> auth-param in <spanx style="verb">WWW-Authenticate</spanx> per <xref target="I-D.httpauth-payment"/>,
using <xref target="RFC3339"/> format. Request objects <bcp14>MUST NOT</bcp14> duplicate the
challenge expiry value.</t>

<t>The first billing period begins immediately when the subscription is
activated. Payment methods <bcp14>MAY</bcp14> define additional activation controls in
<spanx style="verb">methodDetails</spanx>, but <bcp14>MUST</bcp14> define exact activation semantics if they do
so.</t>

<t>The billing anchor for a subscription is the time activation succeeds,
or an equivalent network-native timestamp defined by the payment method
specification. Billing periods are contiguous windows derived from that
anchor according to <spanx style="verb">periodUnit</spanx> and <spanx style="verb">periodCount</spanx>.</t>

<t>This shared intent does not define deferred starts or merchant-selected
billing anchors. A payment method that needs a more specific anchor rule
<bcp14>MUST</bcp14> document it explicitly.</t>

<t>The shared fields in this section are the canonical subscription
contract. Payment method specifications <bcp14>MUST</bcp14> document how they map
<spanx style="verb">amount</spanx>, <spanx style="verb">periodUnit</spanx>, <spanx style="verb">periodCount</spanx>, and activation to the underlying
payment system. If a payment method cannot represent those fields or
semantics exactly, it <bcp14>MUST</bcp14> reject the request rather than approximate
it.</t>

</section>
</section>
<section anchor="currency-formats"><name>Currency Formats</name>

<t>The <spanx style="verb">currency</spanx> field supports multiple formats to accommodate different
payment networks:</t>

<texttable>
      <ttcol align='left'>Format</ttcol>
      <ttcol align='left'>Example</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>ISO 4217</c>
      <c><spanx style="verb">"usd"</spanx>, <spanx style="verb">"eur"</spanx></c>
      <c>Fiat currencies (lowercase)</c>
      <c>Token address</c>
      <c><spanx style="verb">"0x20c0..."</spanx></c>
      <c>On-chain token contract address</c>
      <c>Method-defined</c>
      <c>(varies)</c>
      <c>Payment method-specific currency identifiers</c>
</texttable>

<t>Payment method specifications <bcp14>MUST</bcp14> document which currency formats they
support and how to interpret amounts for each format.</t>

</section>
<section anchor="method-extensions"><name>Method Extensions</name>

<t>Payment methods <bcp14>MAY</bcp14> define additional fields only in the
<spanx style="verb">methodDetails</spanx> object. Shared top-level fields retain the meanings
defined in this document.</t>

</section>
<section anchor="implementor-guidance"><name>Implementor Guidance</name>

<t>This section is non-normative.</t>

<t>Payment method authors should treat the shared <spanx style="verb">subscription</spanx> intent as
the canonical interoperable contract between clients and servers. A
method specification may intentionally define a narrower profile of its
underlying payment system, but it should do so explicitly and fail
closed.</t>

<t>In particular:</t>

<t><list style="symbols">
  <t>Methods should support only request shapes they can represent exactly.</t>
  <t>Methods should document the supported and rejected ranges or values of
<spanx style="verb">periodUnit</spanx> and <spanx style="verb">periodCount</spanx>, any additional bounded-lifetime or
expiry rules they impose, and what conditions make activation succeed.</t>
  <t>Activation should not be reported as successful until both
subscription setup and the first billing-period charge have
succeeded.</t>
  <t>Methods should preserve the shared invariants of one successful charge
per billing period, no automatic accumulation of missed periods, and
no renewals after cancellation or any method-specific expiry.</t>
  <t>Richer network-native features such as trials, prorations,
discounts, metered billing, pause or resume controls, quantity
changes, plan changes, or open-ended renewals should be disabled or
rejected unless the method specification defines an exact mapping that
preserves the shared semantics.</t>
  <t>Implementations should maintain durable server state sufficient to
prevent duplicate charges across retries, concurrent requests, and
out-of-band network events.</t>
</list></t>

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

<section anchor="traditional-payment-processor"><name>Traditional Payment Processor</name>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "9900",
  "currency": "usd",
  "periodUnit": "month",
  "periodCount": "1",
  "description": "Pro plan"
}
]]></sourcecode></figure>

</section>
<section anchor="blockchain-payment-tempo"><name>Blockchain Payment (Tempo)</name>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "10000000",
  "currency": "0x20c0000000000000000000000000000000000001",
  "periodUnit": "day",
  "periodCount": "30",
  "subscriptionExpires": "2026-07-14T12:00:00Z",
  "recipient": "0x742d35cc6634c0532925a3b844bc9e7595f8fe00",
  "methodDetails": {
    "accessKey": {
      "accessKeyAddress": "0x1111111111111111111111111111111111111111",
      "keyType": "p256"
    },
    "chainId": 42431
  }
}
]]></sourcecode></figure>

</section>
</section>
</section>
<section anchor="credential-requirements"><name>Credential Requirements</name>

<section anchor="payload"><name>Payload</name>

<t>The credential <spanx style="verb">payload</spanx> for a "subscription" intent contains the
subscription authorization grant. The format is method-specific:</t>

<texttable>
      <ttcol align='left'>Authorization Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Example Methods</ttcol>
      <c>Periodic key auth</c>
      <c>Delegated key with per-period limits</c>
      <c>Tempo</c>
      <c>Subscription setup</c>
      <c>Processor-managed recurring payment setup</c>
      <c>Stripe</c>
      <c>Signed mandate</c>
      <c>Recurring debit mandate</c>
      <c>ACH, SEPA</c>
</texttable>

</section>
<section anchor="single-use"><name>Single-Use</name>

<t>Each "subscription" credential <bcp14>MUST</bcp14> be usable only once per challenge.
Servers <bcp14>MUST</bcp14> reject replayed credentials.</t>

<t>A successfully activated subscription may be reused for later billing
periods until:</t>

<t><list style="symbols">
  <t>The payer explicitly cancels it</t>
  <t>The payment method revokes or invalidates the authorization</t>
  <t>The <spanx style="verb">subscriptionExpires</spanx> timestamp, if present, is reached</t>
</list></t>

</section>
</section>
<section anchor="subscription-lifecycle"><name>Subscription Lifecycle</name>

<section anchor="activation"><name>Activation</name>

<t>When the server receives a "subscription" credential, it <bcp14>MUST</bcp14>:</t>

<t><list style="numbers" type="1">
  <t>Verify the subscription authorization proof</t>
  <t>Perform any method-specific subscription setup and collect the first
billing-period charge</t>
  <t>Initialize durable subscription state for later renewals</t>
  <t>Return success (200) with a <spanx style="verb">Payment-Receipt</spanx> for the first charge,
including a <spanx style="verb">subscriptionId</spanx></t>
</list></t>

<t>The subscription becomes active only after these steps succeed.</t>

</section>
<section anchor="renewal"><name>Renewal</name>

<t>For each later billing period, the server <bcp14>MAY</bcp14> collect one renewal
charge for <spanx style="verb">amount</spanx> using the method-specific recurring authorization
flow.</t>

<t>If the server grants access for a later billing period, it <bcp14>MUST</bcp14> ensure
that the renewal charge for that period has been collected before, or
atomically with, delivering the corresponding service.</t>

<t>Servers <bcp14>MUST NOT</bcp14> collect more than one renewal charge for the same
billing period.</t>

<t>If one or more billing periods elapse without a successful renewal
charge, the subscription intent authorizes at most one charge for the
then-current billing period. Servers <bcp14>MUST NOT</bcp14> treat missed billing
periods as automatically accumulated authority for additional charges.</t>

<t>Payment method specifications define the concrete renewal, retry,
recovery, and cancellation mechanisms, but they <bcp14>MUST</bcp14> preserve the
invariants in this section.</t>

</section>
<section anchor="subscription-identifier"><name>Subscription Identifier</name>

<t>After successful activation, the server <bcp14>MUST</bcp14> return a <spanx style="verb">subscriptionId</spanx>
in the <spanx style="verb">Payment-Receipt</spanx>. The value <bcp14>MUST</bcp14> be a base64url <xref target="RFC4648"/>
string without padding and <bcp14>MUST</bcp14> be unique within the server's
subscription namespace.</t>

<t>This specification does not define a dedicated request header or
parameter for selecting an existing subscription. Selecting an existing
subscription is an application-layer concern. Applications <bcp14>MAY</bcp14> use
authenticated session state, account identity, resource scope, an
application-defined selector, or other context to associate a later
request with an existing subscription.</t>

<t>Clients <bcp14>MAY</bcp14> retain the <spanx style="verb">subscriptionId</spanx> as application data when
referring to the active subscription in later interactions, but the
<spanx style="verb">subscriptionId</spanx> is only a receipt identifier unless an application
explicitly assigns it additional application-layer meaning.</t>

<t>Servers <bcp14>MUST</bcp14> authenticate or otherwise authorize the client's use of the
identified subscription before granting access or collecting a renewal
charge. Possession or presentation of a <spanx style="verb">subscriptionId</spanx> alone is
insufficient.</t>

</section>
<section anchor="server-accounting-and-idempotency"><name>Server Accounting and Idempotency</name>

<t>Servers <bcp14>MUST</bcp14> maintain durable subscription state sufficient to enforce
per-period charging rules across retries and concurrent requests.</t>

<t>At minimum, servers <bcp14>MUST</bcp14> track:</t>

<t><list style="symbols">
  <t>Subscription identifier</t>
  <t>Billing anchor or equivalent current billing-period start time</t>
  <t>Last successfully charged billing-period index, or whether the
current billing period has been charged</t>
  <t>Any method-specific expiry or bounded-lifetime state</t>
  <t>Cancellation or revocation status</t>
</list></t>

<t>For non-idempotent requests, clients <bcp14>SHOULD</bcp14> send an <spanx style="verb">Idempotency-Key</spanx>
header per <xref target="I-D.ietf-httpapi-idempotency-key-header"/>. Servers <bcp14>MUST NOT</bcp14>
collect the same activation or renewal charge more than once for a
duplicate idempotent request.</t>

</section>
<section anchor="cancellation"><name>Cancellation</name>

<t>Payers <bcp14>SHOULD</bcp14> be able to cancel subscriptions before any applicable
method-specific expiry.
Cancellation mechanisms, effective-time rules, and any continued access
for already-paid service are method-specific and <bcp14>MUST</bcp14> be documented by
the payment method or application profile.</t>

<t>Servers <bcp14>MUST NOT</bcp14> collect renewal charges for billing periods after
cancellation takes effect.</t>

</section>
<section anchor="error-responses"><name>Error Responses</name>

<t>When a subscription cannot be used to fulfill a request, the server
<bcp14>MUST</bcp14> return an appropriate HTTP status code:</t>

<texttable>
      <ttcol align='left'>Condition</ttcol>
      <ttcol align='left'>Status Code</ttcol>
      <ttcol align='left'>Behavior</ttcol>
      <c>Method-specific expiry reached</c>
      <c>402 Payment Required</c>
      <c>Issue new challenge</c>
      <c>Cancellation effective or authorization revoked</c>
      <c>402 Payment Required</c>
      <c>Issue new challenge</c>
      <c>Current billing period unpaid or renewal failed</c>
      <c>402 Payment Required</c>
      <c>Issue new challenge</c>
      <c>Invalid credential</c>
      <c>402 Payment Required</c>
      <c>Issue new challenge</c>
</texttable>

<t>For all 402 responses, the server <bcp14>MUST</bcp14> include a <spanx style="verb">WWW-Authenticate</spanx>
header with a fresh challenge. Clients receiving a 402 after a
previously valid subscription <bcp14>SHOULD</bcp14> treat the subscription as no longer
usable and initiate a new subscription flow.</t>

</section>
</section>
<section anchor="illustrative-lifecycle-examples"><name>Illustrative Lifecycle Examples</name>

<t>This section is non-normative.</t>

<section anchor="monthly-billing-example"><name>Monthly Billing Example</name>

<t>Suppose a server offers a plan with these request fields:</t>

<t><list style="symbols">
  <t><spanx style="verb">amount = "9900"</spanx></t>
  <t><spanx style="verb">currency = "usd"</spanx></t>
  <t><spanx style="verb">periodUnit = "month"</spanx></t>
  <t><spanx style="verb">periodCount = "1"</spanx></t>
</list></t>

<t>If activation succeeds at <spanx style="verb">2026-01-15T12:03:10Z</spanx>, that time becomes the
billing anchor. The resulting billing periods are:</t>

<t><list style="symbols">
  <t>Period 0: <spanx style="verb">[2026-01-15T12:03:10Z, 2026-02-15T12:03:10Z)</spanx></t>
  <t>Period 1: <spanx style="verb">[2026-02-15T12:03:10Z, 2026-03-15T12:03:10Z)</spanx></t>
  <t>Period 2: <spanx style="verb">[2026-03-15T12:03:10Z, 2026-04-15T12:03:10Z)</spanx></t>
</list></t>

<t>Activation collects the Period 0 charge. Requests during Period 0 do
not require another renewal charge. When Period 1 begins, the server
may collect one renewal charge for Period 1 before, or atomically with,
granting access for that period. After that renewal succeeds, additional
requests during Period 1 do not permit another charge for Period 1.</t>

<t>If the same monthly plan activates at <spanx style="verb">2026-01-31T12:03:10Z</spanx>, the
resulting boundaries are computed from the January 31 anchor:</t>

<t><list style="symbols">
  <t>Period 0: <spanx style="verb">[2026-01-31T12:03:10Z, 2026-02-28T12:03:10Z)</spanx></t>
  <t>Period 1: <spanx style="verb">[2026-02-28T12:03:10Z, 2026-03-31T12:03:10Z)</spanx></t>
  <t>Period 2: <spanx style="verb">[2026-03-31T12:03:10Z, 2026-04-30T12:03:10Z)</spanx></t>
</list></t>

</section>
<section anchor="cancellation-example"><name>Cancellation Example</name>

<t>Suppose the subscription above has already been charged through Period 2
and the payer cancels on <spanx style="verb">2026-03-20T09:00:00Z</spanx>.</t>

<t>Cancellation takes effect at the end of the current paid billing period,
which is <spanx style="verb">2026-04-15T12:03:10Z</spanx> in this example. The server continues
honoring access through that time. The server does not collect a
renewal charge for Period 3. A request after
<spanx style="verb">2026-04-15T12:03:10Z</spanx> receives <spanx style="verb">402 Payment Required</spanx> with a fresh
challenge.</t>

</section>
<section anchor="failed-renewal-example"><name>Failed Renewal Example</name>

<t>Suppose Period 3 begins and the server attempts the renewal charge for
that period, but the method-specific payment step fails.</t>

<t>The server does not grant access for the unpaid period and returns
<spanx style="verb">402 Payment Required</spanx> with a fresh challenge. If a later retry during
Period 3 succeeds, the server may then grant access for Period 3.</t>

<t>If Period 4 begins before any successful charge occurs, the subscription
intent authorizes at most one charge for Period 4. The missed Period 3
charge does not automatically accumulate into authority to collect both
Period 3 and Period 4.</t>

</section>
<section anchor="expiry-example"><name>Expiry Example</name>

<t>The shared subscription intent defines <spanx style="verb">subscriptionExpires</spanx> as an
optional top-level field. Some payment methods require it and others
leave it optional.</t>

<t>Once <spanx style="verb">subscriptionExpires</spanx> is reached, the server stops treating the
subscription as reusable for future billing periods. Requests after that
time receive <spanx style="verb">402 Payment Required</spanx> with a fresh challenge.</t>

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

<section anchor="recurring-charge-awareness"><name>Recurring Charge Awareness</name>

<t>Clients <bcp14>MUST</bcp14> clearly communicate that a subscription authorizes future
recurring charges without requiring a new user action for each billing
period.</t>

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

<t>Clients <bcp14>MUST</bcp14> verify before activating a subscription:</t>

<t><list style="numbers" type="1">
  <t><spanx style="verb">amount</spanx> is acceptable for the service</t>
  <t><spanx style="verb">currency</spanx> is expected</t>
  <t><spanx style="verb">periodUnit</spanx> and <spanx style="verb">periodCount</spanx> match the expected billing interval</t>
  <t>Any <spanx style="verb">subscriptionExpires</spanx> value and method-specific constraints are
understood and acceptable</t>
</list></t>

<t>Clients <bcp14>MUST NOT</bcp14> rely on the <spanx style="verb">description</spanx> field for payment
verification.</t>

</section>
<section anchor="duplicate-charge-prevention"><name>Duplicate Charge Prevention</name>

<t>Servers <bcp14>MUST</bcp14> prevent duplicate activation and renewal charges caused by
retries, parallel requests, or races between charging and service
delivery.</t>

</section>
<section anchor="server-accountability"><name>Server Accountability</name>

<t>Servers operating subscriptions are responsible for:</t>

<t><list style="symbols">
  <t>Secure storage of subscription authorization data</t>
  <t>Not charging more than once per billing period</t>
  <t>Honoring cancellation and revocation</t>
  <t>Providing transaction or billing records to payers</t>
</list></t>

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

<t>Responses to subscription challenges (402 Payment Required) <bcp14>MUST</bcp14> include
<spanx style="verb">Cache-Control: no-store</spanx> to prevent sensitive payment data from being
cached by intermediaries.</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>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="payment-intent-registration"><name>Payment Intent Registration</name>

<t>This document registers the "subscription" intent in the "HTTP Payment
Intents" registry established by <xref target="I-D.httpauth-payment"/>:</t>

<texttable>
      <ttcol align='left'>Intent</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">subscription</spanx></c>
      <c>Recurring fixed-amount payment</c>
      <c>This document</c>
</texttable>

<t>Contact: Tempo Labs (<eref target="mailto:contact@tempo.xyz">contact@tempo.xyz</eref>)</t>

</section>
</section>


  </middle>

  <back>



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

&RFC2119;
&RFC3339;
&RFC4648;
&RFC8174;
&RFC8259;
&RFC8785;
<reference anchor="I-D.httpauth-payment" target="https://datatracker.ietf.org/doc/draft-ietf-httpauth-payment/">
  <front>
    <title>The 'Payment' HTTP Authentication Scheme</title>
    <author initials="J." surname="Moxey" fullname="Jake Moxey">
      <organization></organization>
    </author>
    <date year="2026" month="January"/>
  </front>
</reference>
<reference anchor="I-D.ietf-httpapi-idempotency-key-header" target="https://datatracker.ietf.org/doc/draft-ietf-httpapi-idempotency-key-header/">
  <front>
    <title>The Idempotency-Key HTTP Header Field</title>
    <author initials="J." surname="Jena" fullname="Jayadeba Jena">
      <organization></organization>
    </author>
    <date year="2024" month="June"/>
  </front>
</reference>


    </references>




<?line 648?>

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

<t>The authors thank the MPP community for their feedback on this
specification.</t>

</section>


  </back>

<!-- ##markdown-source:
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
s4ljeJqBaQaXDvtiVZiZzgke8b+EPYiP6GMAAA==

-->

</rfc>

