<?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="August" day="07"/>

    
    
    

    <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-ryan-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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
2l8wQIJfcI14tLIAaeRfcV+iSdGqxl7QhUvAlwfzCqsKYmBASRQSHVjg41d/
Qs78+7H8ZpFU+0ff2Qc44eih41n0kHjWf9J7mZk48GhgGM/N6HmH0zG9J3+I
fnd8Dx5+85scdcZ4//5vvhMoPDP0zosSHI6NEBGUcAyK4UOeNvptKjZfbNdS
70xC5NNzwR7aBy/pQTCSxpeusyItr/esfkud/Ee6y3qmbBKg6Zpsj7RKHX2U
0qBD23nNGt2VQiPq/GGNJJ14jxrImdFw3vXOClA7aF51s65YtYa9OlOSFUm+
BrkFMmzP5AyzLlpmNRDkvDFLPpMDo7/Shb5WOXECDDX62M49IKePejN9Nlie
8zKQ6ge9CxHcAM9PyWnPwymixQXydJFiy+6kYC9eobXB+GTdrGvU6kSlmcSS
guE3tIO1qGkCHHCMIeZboxxUCmiSmW/D1PoYBn3VcFygHWwqrTp3ZGhbB56h
QY1Ro6PLbqOKwwNYB+iDuUhKRdFCmImN0Qgz834GOkePUNCyD4VtnajY+iTE
+db7GYyRgcdzfjTf6+2P4WDLK/8kWDY0svR1JwreEn2JfvQFk31JXisGFULc
uN828kb+XuWwTjfiZux/3Ed4KL/6yvKuXe2vvoLX5iGz5pKbOrs+y0C5XFC7
V57cHbefrIyj9fa7j7R20XKHubJr+w2AHur0FGwrUoObE7rO9Rhk59exOBAi
AdxaG3LVVVKXxnS4bmz/rzRBovBl1tgRLP/x1Rti4Pc5uJbiL3/5C2I6pzk5
DNt/zjn6HvhxPHrODqBFj/721/98T28f1wQahL3t7O/K3z6eya9BfMs1OL+f
39t//e2v//HL/fvuU2f2wcaf1NvOwa48mh74hbF+Vfp5veEPa45vO/rk03v7
5hdl+9/++j+fPLP3Nv6k3nYOd+V5dlEMbdrP4/rfkbajXUJPvXJtky+f2ts/
9c75iN527gArrcWPl/pzafuVxzPZt7LW5FN7+6UW5rtfVjLv7sqD6VS++B3w
AUyrBmZ+bm//zNqFfyaTiXUIrZOFDz67t78vbe/tbeferjy1Um6978/t7R9U
zu//v5xv7Q19UIv/YCxCiT3FIczcBihzBMTUSjcu7toS3BBu/sP5i+eSYWNB
6L0FrzjKjuNxeCFCohh7qRieE114WL+FUQzFbhljaXNu8kg3KsvNnMfgpKSn
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

-->

</rfc>

