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


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

    <author initials="B." surname="Ryan" fullname="Brendan Ryan">
      <organization>Tempo Labs</organization>
      <address>
        <email>brendan@tempo.xyz</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="August" day="07"/>

    
    
    

    <abstract>


<?line 72?>

<t>This document defines the <spanx style="verb">subscription</spanx> intent for the <spanx style="verb">stripe</spanx>
payment method within the Payment HTTP Authentication Scheme
<xref target="I-D.httpauth-payment"/>. It specifies a constrained Stripe Billing
profile for fixed-price recurring subscriptions whose activation
succeeds only when the first invoice is paid synchronously.</t>



    </abstract>



  </front>

  <middle>


<?line 80?>

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

<t>This specification defines the <spanx style="verb">subscription</spanx> intent for use with the
<spanx style="verb">stripe</spanx> payment method in the Payment HTTP Authentication Scheme
<xref target="I-D.httpauth-payment"/>. It profiles Stripe Billing as a narrow,
canonical mapping of the shared <spanx style="verb">subscription</spanx> intent defined in
<xref target="I-D.payment-intent-subscription"/>.</t>

<t>This document is intentionally not a specification for all Stripe
subscription features. Stripe Billing supports richer behaviors such as
trials, prorations, discounts, usage-based billing, and flexible
schedule changes. This method supports only the subset that preserves
the shared subscription semantics exactly. Servers <bcp14>MUST</bcp14> reject request
objects or Stripe configurations that would broaden those semantics.</t>

<t>This profile models the recurring payment agreement, not the full Stripe
Billing object surface. Quantities or seat counts, plan schedules,
prorations, billing-anchor resets, and other commercial-policy behavior
remain out of scope even though Stripe can support them.</t>

<section anchor="stripe-subscription-flow"><name>Stripe Subscription Flow</name>

<t>The following diagram illustrates the Stripe subscription flow:</t>

<figure><artwork><![CDATA[
   Client                          Server                          Stripe
      |                               |                               |
      |  (1) GET /resource            |                               |
      |---------------------------->  |                               |
      |                               |                               |
      |  (2) 402 Payment Required     |                               |
      |      intent="subscription"    |                               |
      |<----------------------------- |                               |
      |                               |                               |
      |  (3) Collect payment method   |                               |
      |      and create credential    |                               |
      |                               |                               |
      |  (4) Authorization: Payment   |                               |
      |---------------------------->  |                               |
      |                               |                               |
      |                               |  (5) Create or reuse         |
      |                               |      customer, price, and    |
      |                               |      subscription            |
      |                               |---------------------------->  |
      |                               |                               |
      |                               |  (6) First invoice paid      |
      |                               |<----------------------------  |
      |                               |                               |
      |  (7) 200 OK + Receipt         |                               |
      |<----------------------------  |                               |
      |                               |                               |
      |        ... later period ...   |                               |
      |                               |                               |
      |                               |  (8) Renewal invoice paid    |
      |                               |      and recorded            |
      |                               |<----------------------------  |
      |                               |                               |
      |  (9) 200 OK + Receipt         |                               |
      |<----------------------------  |                               |
      |                               |                               |
]]></artwork></figure>

</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>Stripe Customer</dt>
  <dd>
    <t>A Stripe object representing the payer for a subscription.</t>
  </dd>
  <dt>Stripe Price</dt>
  <dd>
    <t>A Stripe object that defines the fixed recurring amount, currency,
and cadence for a subscription item.</t>
  </dd>
  <dt>Stripe Subscription</dt>
  <dd>
    <t>A Stripe Billing object representing the recurring commercial
relationship. In this profile it <bcp14>MUST</bcp14> contain exactly one fixed-price
recurring item.</t>
  </dd>
  <dt>First Invoice</dt>
  <dd>
    <t>The initial Stripe invoice created for the subscription at activation
time. Activation succeeds only after this invoice is paid.</t>
  </dd>
</dl>

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

<t>The <spanx style="verb">request</spanx> parameter in the <spanx style="verb">WWW-Authenticate</spanx> challenge contains a
base64url-encoded JSON object. 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="request-fields"><name>Request Fields</name>

<t>The Stripe <spanx style="verb">subscription</spanx> profile uses the shared <spanx style="verb">amount</spanx>, <spanx style="verb">currency</spanx>,
<spanx style="verb">periodUnit</spanx>, <spanx style="verb">periodCount</spanx>, <spanx style="verb">description</spanx>, and <spanx style="verb">externalId</spanx> fields from
<xref target="I-D.payment-intent-subscription"/>. It
additionally defines the following request constraints:</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">amount</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Fixed payment amount per billing period in the currency's smallest unit</c>
      <c><spanx style="verb">currency</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Lowercase ISO 4217 currency code</c>
      <c><spanx style="verb">periodUnit</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></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><bcp14>REQUIRED</bcp14></c>
      <c>Positive integer count of <spanx style="verb">periodUnit</spanx> values per billing period</c>
      <c><spanx style="verb">description</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Human-readable subscription description</c>
      <c><spanx style="verb">externalId</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Merchant's reference for the subscription</c>
      <c><spanx style="verb">recipient</spanx></c>
      <c>string</c>
      <c><bcp14>MUST NOT</bcp14></c>
      <c>This profile identifies the merchant by the challenged Stripe account and <spanx style="verb">methodDetails.networkId</spanx>, not by a request-native recipient field</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>Servers <bcp14>MUST</bcp14> reject request objects that include <spanx style="verb">recipient</spanx> or
<spanx style="verb">subscriptionExpires</spanx>.</t>

</section>
<section anchor="method-details"><name>Method Details</name>

<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">methodDetails.networkId</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Stripe Business Network Profile ID for the challenged merchant</c>
      <c><spanx style="verb">methodDetails.paymentMethodTypes</spanx></c>
      <c>[]string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Stripe payment method types accepted for synchronous activation and future off-session recurring invoices</c>
      <c><spanx style="verb">methodDetails.metadata</spanx></c>
      <c>object</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Stripe metadata as a string key/value map</c>
</texttable>

<t>Servers <bcp14>MUST</bcp14> include only payment method types that can complete this
profile's activation flow synchronously and can also be reused for
future off-session recurring charges under the challenged account.
Servers <bcp14>MUST</bcp14> reject payment method types that require an asynchronous
first-invoice settlement path or customer action after the credential is
submitted.</t>

<t>If <spanx style="verb">methodDetails.metadata</spanx> is present, every key and value <bcp14>MUST</bcp14> be a
JSON string and the object <bcp14>MUST</bcp14> satisfy Stripe metadata limits
<xref target="STRIPE-METADATA"/>. Metadata <bcp14>MUST NOT</bcp14> affect payment authorization,
amount, period, recipient, invoice validation, cancellation, or
access-control decisions.</t>

<t><strong>Example:</strong></t>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "5000",
  "currency": "usd",
  "periodUnit": "week",
  "periodCount": "1",
  "description": "Weekly Pro plan",
  "externalId": "sub_12345",
  "methodDetails": {
    "networkId": "profile_1MqDcVKA5fEO2tZvKQm9g8Yj",
    "paymentMethodTypes": ["card", "link"],
    "metadata": {
      "plan": "weekly-pro"
    }
  }
}
]]></sourcecode></figure>

</section>
<section anchor="constrained-stripe-billing-profile"><name>Constrained Stripe Billing Profile</name>

<t>This method defines a constrained profile of Stripe Billing. Servers
<bcp14>MUST</bcp14> either implement this profile exactly or reject the request.</t>

<t>Servers <bcp14>MUST</bcp14> create or reuse exactly one Stripe Customer and exactly one
Stripe Subscription containing exactly one recurring Stripe Price. The
Price <bcp14>MUST</bcp14> have a fixed <spanx style="verb">unit_amount</spanx>, fixed <spanx style="verb">currency</spanx>, and fixed
recurring cadence for the full life of the subscription.</t>

<t>The period fields <bcp14>MUST</bcp14> map exactly to a Stripe recurring cadence using
one of the following forms:</t>

<t><list style="symbols">
  <t><spanx style="verb">periodUnit="day"</spanx>, where <spanx style="verb">periodCount</spanx> maps to <spanx style="verb">interval_count</spanx>
and Stripe <spanx style="verb">recurring.interval</spanx> is <spanx style="verb">day</spanx></t>
  <t><spanx style="verb">periodUnit="week"</spanx>, where <spanx style="verb">periodCount</spanx> maps to <spanx style="verb">interval_count</spanx>
and Stripe <spanx style="verb">recurring.interval</spanx> is <spanx style="verb">week</spanx></t>
  <t><spanx style="verb">periodUnit="month"</spanx>, where <spanx style="verb">periodCount</spanx> maps to <spanx style="verb">interval_count</spanx>
and Stripe <spanx style="verb">recurring.interval</spanx> is <spanx style="verb">month</spanx></t>
</list></t>

<t>Servers <bcp14>MUST</bcp14> reject any period fields that would require approximation,
calendar-year interpretation, or an unsupported Stripe interval count.</t>

<t>This profile supports only a fixed quantity of 1 for the single
subscription item. Servers <bcp14>MUST</bcp14> reject any request or server-side
configuration that would vary quantity during the active lifetime of the
subscription.</t>

<t>When creating a Stripe Subscription for this profile, servers <bcp14>MUST</bcp14> use
the following create Subscription parameters <xref target="STRIPE-SUBSCRIPTIONS-API"/>:</t>

<t><list style="symbols">
  <t><spanx style="verb">collection_method=charge_automatically</spanx></t>
  <t><spanx style="verb">payment_behavior=error_if_incomplete</spanx></t>
  <t><spanx style="verb">proration_behavior=none</spanx></t>
  <t>exactly one subscription item with <spanx style="verb">quantity=1</spanx></t>
  <t>no <spanx style="verb">add_invoice_items</spanx></t>
  <t>no <spanx style="verb">billing_cycle_anchor</spanx> other than immediate activation</t>
  <t>no <spanx style="verb">backdate_start_date</spanx></t>
  <t>no <spanx style="verb">cancel_at</spanx> or <spanx style="verb">cancel_at_period_end</spanx> at activation</t>
  <t>no <spanx style="verb">pending_invoice_item_interval</spanx></t>
  <t>no subscription schedule</t>
</list></t>

<t>Servers <bcp14>MUST</bcp14> create the subscription using an idempotency key bound to
the challenge ID, payer, payment method, amount, currency, and
<spanx style="verb">periodUnit</spanx> and <spanx style="verb">periodCount</spanx>. If an idempotent retry returns an
existing Stripe Subscription, the server <bcp14>MUST</bcp14> verify that the existing
object still matches this profile before treating the retry as
successful.</t>

</section>
<section anchor="unsupported-stripe-billing-features"><name>Unsupported Stripe Billing Features</name>

<t>Servers implementing this profile <bcp14>MUST</bcp14> disable or reject the following
features:</t>

<t><list style="symbols">
  <t>free trials</t>
  <t>paid trials</t>
  <t>prorations</t>
  <t>discounts or coupons</t>
  <t>automatic tax</t>
  <t>additional invoice items</t>
  <t>pending invoice items</t>
  <t>usage-based billing</t>
  <t>metered add-ons</t>
  <t>mid-cycle plan changes</t>
  <t>quantity changes during an active subscription</t>
  <t>pause or resume controls</t>
  <t>asynchronous first-invoice settlement</t>
  <t>customer-action-required first-invoice flows</t>
  <t>manual invoice collection</t>
</list></t>

</section>
</section>
<section anchor="credential-schema"><name>Credential Schema</name>

<t>The Payment credential is a base64url-encoded JSON object containing
<spanx style="verb">challenge</spanx> and <spanx style="verb">payload</spanx> fields per <xref target="I-D.httpauth-payment"/>. For
Stripe subscription, the <spanx style="verb">payload</spanx> object contains the following fields:</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">paymentMethod</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Stripe PaymentMethod ID to use for the first invoice and future recurring charges</c>
      <c><spanx style="verb">customer</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Existing Stripe Customer ID if the merchant already has one for the payer</c>
</texttable>

<t>The <spanx style="verb">paymentMethod</spanx> <bcp14>MUST</bcp14> reference a Stripe PaymentMethod whose type is
included in <spanx style="verb">methodDetails.paymentMethodTypes</spanx> and which is suitable for
future off-session recurring charges under the challenged Stripe
account.</t>

<t>Before submitting a credential, the client or Stripe-native collection
flow <bcp14>MUST</bcp14> have obtained any authorization, mandate, or setup required by
Stripe for future off-session recurring charges <xref target="STRIPE-SETUP-FUTURE"/>.
Servers <bcp14>MUST</bcp14> reject PaymentMethods that are not reusable for the
challenged merchant and subscription terms.</t>

<t><strong>Example:</strong></t>

<figure><sourcecode type="json"><![CDATA[
{
  "paymentMethod": "pm_1Qabc32eZvKYlo2C7b8H1234",
  "customer": "cus_S7x1Pq5R9n2Lm4"
}
]]></sourcecode></figure>

</section>
<section anchor="verification-procedure"><name>Verification Procedure</name>

<t>Servers <bcp14>MUST</bcp14> verify Payment credentials for Stripe subscription intent:</t>

<t><list style="numbers" type="1">
  <t>Verify the challenge ID matches the one issued</t>
  <t>Verify the challenge has not expired</t>
  <t>Decode the request object and verify it matches this constrained
profile, including exact support for <spanx style="verb">periodUnit</spanx> and <spanx style="verb">periodCount</spanx></t>
  <t>Extract the <spanx style="verb">paymentMethod</spanx> and optional <spanx style="verb">customer</spanx> from the
credential payload</t>
  <t>Verify the Stripe PaymentMethod exists, is reusable by the
challenged merchant, has a type allowed by the challenge, and can
support both the profile's synchronous first-invoice activation flow
and future off-session recurring charges</t>
  <t>Verify the credential has not been replayed for the same challenge</t>
</list></t>

<t>Servers <bcp14>MUST</bcp14> complete challenge validation before creating or mutating
Stripe objects.</t>

</section>
<section anchor="settlement-procedure"><name>Settlement Procedure</name>

<section anchor="activation-and-first-period-charge"><name>Activation and First-Period Charge</name>

<t>For <spanx style="verb">intent="subscription"</spanx>, the server <bcp14>MUST</bcp14>:</t>

<t><list style="numbers" type="1">
  <t>Create or reuse a Stripe Customer for the payer</t>
  <t>Attach or select the challenged <spanx style="verb">paymentMethod</spanx> for that Customer</t>
  <t>Create or reuse a Stripe Price whose amount, currency, and recurring
cadence exactly match the request</t>
  <t>Create a Stripe Subscription with exactly one recurring item,
quantity 1, the creation parameters defined above, and no
unsupported features</t>
  <t>Verify the first invoice and its PaymentIntent completed
synchronously</t>
  <t>Treat activation as successful only after the first invoice for that
subscription is paid and validated</t>
  <t>Initialize durable local subscription state for later renewals</t>
  <t>Return success (200) with a <spanx style="verb">Payment-Receipt</spanx> for the first invoice,
including a <spanx style="verb">subscriptionId</spanx></t>
</list></t>

<t>Servers <bcp14>MUST NOT</bcp14> treat the subscription as active, grant access, or
return a success receipt while the first invoice is unpaid, requires
additional customer action, or remains incomplete.</t>

<t>If Stripe cannot pay the first invoice synchronously, including because
the invoice requires customer action, remains incomplete, enters
processing, or depends on asynchronous settlement, the server <bcp14>MUST</bcp14> treat
activation as failed and return <spanx style="verb">402 Payment Required</spanx> with a fresh
challenge. The server <bcp14>MUST NOT</bcp14> expose a protocol continuation state for
that incomplete Stripe Subscription.</t>

<t>The canonical billing anchor for this profile is the start timestamp of
the first paid Stripe invoice period. Servers <bcp14>MUST</bcp14> use that anchor when
mapping later Stripe invoices to the shared billing periods.</t>

<t>Before activating a subscription or recording a renewal, servers <bcp14>MUST</bcp14>
validate the paid Stripe invoice. The invoice <bcp14>MUST</bcp14>:</t>

<t><list style="symbols">
  <t>belong to the expected Stripe Subscription and Customer</t>
  <t>have status <spanx style="verb">paid</spanx></t>
  <t>contain exactly one subscription line item</t>
  <t>have no invoice items outside the subscription item</t>
  <t>have no discounts, tax, credits, or prorations that change the amount</t>
  <t>match the challenged <spanx style="verb">amount</spanx> and <spanx style="verb">currency</spanx></t>
  <t>map to exactly one canonical billing period derived from the billing
anchor, <spanx style="verb">periodUnit</spanx>, and <spanx style="verb">periodCount</spanx></t>
  <t>not have already been recorded for another billing period or
subscription</t>
</list></t>

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

<t>Later billing periods are fulfilled by Stripe renewal invoices. Servers
<bcp14>MUST</bcp14> use durable local state to map Stripe invoices and webhook events
onto canonical billing periods derived from the activation anchor and
the period fields.</t>

<t>Servers <bcp14>MUST</bcp14> treat a later billing period as paid only after they
observe a successful paid Stripe invoice for that subscription and
record that canonical billing period durably.</t>

<t>Servers <bcp14>MUST NOT</bcp14> grant more than one newly paid billing period because
of duplicate webhooks, retries, concurrent requests, or later
collection of older unpaid invoices. If a Stripe recovery or retry flow
cannot be mapped exactly to the shared one-charge-per-period invariant,
servers <bcp14>MUST</bcp14> disable that flow or reject the request.</t>

<t>Servers <bcp14>MUST</bcp14> prevent Stripe from collecting invoices for canonical
billing periods that are no longer payable under the shared
subscription intent. If a renewal invoice remains unpaid when a later
canonical billing period begins, the server <bcp14>MUST</bcp14> void it, mark it
uncollectible, cancel automatic collection for it, or configure Stripe
retry and recovery behavior so the stale invoice cannot later collect
payment for that closed period. A later paid invoice for an older
canonical billing period <bcp14>MUST NOT</bcp14> be recorded as a successful
subscription charge.</t>

<t>Implementations <bcp14>MUST</bcp14> process Stripe invoice events idempotently by
recording the Stripe event ID, invoice ID, subscription ID, and
canonical billing-period index. A duplicate webhook or API retry <bcp14>MUST</bcp14>
return the previously recorded result without creating a second local
payment record or granting another billing period.</t>

<t>Servers <bcp14>MUST NOT</bcp14> rely on <spanx style="verb">invoice.created</spanx> delivery or acknowledgement
for access decisions. Access can be granted only after a validated paid
invoice has been durably recorded. If webhook delivery, invoice
finalization, or automatic collection is delayed, the corresponding
billing period remains unpaid until a later validated paid invoice is
recorded.</t>

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

<t>Payers <bcp14>MUST</bcp14> be able to cancel Stripe subscriptions. For this profile,
the default cancellation effective time is the end of the current paid
canonical billing period.</t>

<t>When a payer cancels, the server <bcp14>MUST</bcp14> set the Stripe Subscription to
cancel at the period end corresponding to the last paid canonical
billing period, and <bcp14>MUST</bcp14> record that cancellation effective time in
durable local state. The server <bcp14>MAY</bcp14> cancel immediately only if the
application separately handles any already-paid access period without
creating an additional charge.</t>

<t>Servers <bcp14>MUST</bcp14> treat <spanx style="verb">customer.subscription.deleted</spanx> and equivalent
Stripe cancellation state as revocation for future renewals. Servers
<bcp14>MUST NOT</bcp14> collect or record renewal invoices for billing periods whose
start time is at or after the cancellation effective time.</t>

<t>Servers <bcp14>MUST</bcp14> prevent pending invoice items from being collected after
cancellation. If any pending invoice item, proration, credit, tax, or
other non-profile invoice component exists for the Customer or
Subscription, the server <bcp14>MUST</bcp14> remove it before cancellation or reject
the subscription as no longer conforming to this profile.</t>

</section>
<section anchor="receipt-generation"><name>Receipt Generation</name>

<t>Upon successful activation or renewal, servers <bcp14>MUST</bcp14> return a
<spanx style="verb">Payment-Receipt</spanx> header per <xref target="I-D.httpauth-payment"/>. Servers <bcp14>MUST NOT</bcp14>
include a <spanx style="verb">Payment-Receipt</spanx> header on error responses.</t>

<t>The receipt payload for Stripe subscription:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">method</spanx></c>
      <c>string</c>
      <c><spanx style="verb">"stripe"</spanx></c>
      <c><spanx style="verb">reference</spanx></c>
      <c>string</c>
      <c>Stripe invoice ID whose successful payment activated or renewed the subscription</c>
      <c><spanx style="verb">status</spanx></c>
      <c>string</c>
      <c><spanx style="verb">"success"</spanx></c>
      <c><spanx style="verb">subscriptionId</spanx></c>
      <c>string</c>
      <c>Server-issued opaque identifier for the subscription</c>
      <c><spanx style="verb">stripeSubscription</spanx></c>
      <c>string</c>
      <c>Stripe subscription ID</c>
      <c><spanx style="verb">timestamp</spanx></c>
      <c>string</c>
      <c><xref target="RFC3339"/> time the invoice was recorded as paid</c>
      <c><spanx style="verb">externalId</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14>. Echoed from the challenge request</c>
</texttable>

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

<section anchor="reject-unsupported-features"><name>Reject Unsupported Features</name>

<t>Stripe Billing supports features whose semantics are broader than the
shared <spanx style="verb">subscription</spanx> intent. Servers <bcp14>MUST</bcp14> reject or disable those
features rather than silently approximating the requested subscription.</t>

</section>
<section anchor="invoice-status-versus-access"><name>Invoice Status Versus Access</name>

<t>Servers <bcp14>MUST NOT</bcp14> grant access based only on a Stripe subscription's
high-level status. Stripe can report an <spanx style="verb">active</spanx> subscription while
other invoices remain open or while retry logic is still in progress
<xref target="STRIPE-BILLING-OVERVIEW"/>. Access decisions <bcp14>MUST</bcp14> use the canonical
per-period accounting required by
<xref target="I-D.payment-intent-subscription"/> together with successfully paid
invoices.</t>

</section>
<section anchor="webhook-authenticity-and-ordering"><name>Webhook Authenticity and Ordering</name>

<t>Implementations using Stripe webhooks <bcp14>MUST</bcp14> verify webhook authenticity,
handle duplicate deliveries safely, and tolerate out-of-order event
arrival <xref target="STRIPE-BILLING-WEBHOOKS"/>.</t>

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

<t>Stripe invoices and webhooks do not by themselves guarantee that the
same HTTP billing period will be applied only once. Servers <bcp14>MUST</bcp14> keep
durable local state sufficient to prevent duplicate activation or
renewal accounting across retries, concurrent requests, and webhook
replays.</t>

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

<t>The <spanx style="verb">subscription</spanx> payment intent is registered by
<xref target="I-D.payment-intent-subscription"/>. This document does not register it
again.</t>

</section>


  </middle>

  <back>


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

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

&RFC2119;
&RFC3339;
&RFC8174;
&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.payment-intent-subscription" target="https://datatracker.ietf.org/doc/draft-payment-intent-subscription/">
  <front>
    <title>Subscription Intent for HTTP Payment Authentication</title>
    <author initials="J." surname="Moxey" fullname="Jake Moxey">
      <organization></organization>
    </author>
    <date year="2026" month="April"/>
  </front>
</reference>


    </references>

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

<reference anchor="STRIPE-BILLING-OVERVIEW" target="https://docs.stripe.com/billing/subscriptions/overview">
  <front>
    <title>How subscriptions work</title>
    <author >
      <organization>Stripe, Inc.</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="STRIPE-BILLING-CANCEL" target="https://docs.stripe.com/billing/subscriptions/cancel">
  <front>
    <title>Cancel subscriptions</title>
    <author >
      <organization>Stripe, Inc.</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="STRIPE-BILLING-WEBHOOKS" target="https://docs.stripe.com/billing/subscriptions/webhooks">
  <front>
    <title>Using webhooks with subscriptions</title>
    <author >
      <organization>Stripe, Inc.</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="STRIPE-SUBSCRIPTIONS-API" target="https://docs.stripe.com/api/subscriptions/create">
  <front>
    <title>Create a subscription</title>
    <author >
      <organization>Stripe, Inc.</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="STRIPE-METADATA" target="https://docs.stripe.com/api/metadata">
  <front>
    <title>Metadata</title>
    <author >
      <organization>Stripe, Inc.</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="STRIPE-SETUP-FUTURE" target="https://docs.stripe.com/payments/setup-intents">
  <front>
    <title>Set up future payments</title>
    <author >
      <organization>Stripe, Inc.</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

</references>


<?line 550?>

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

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

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

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

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
Cache-Control: no-store
WWW-Authenticate: Payment id="qT8wErYuI3oPlKjH6gFdSa",
  realm="api.example.com",
  method="stripe",
  intent="subscription",
  expires="2026-01-15T12:05:00Z",
  request="<base64url-encoded JSON below>"
]]></sourcecode></figure>

<t>The <spanx style="verb">request</spanx> decodes to:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "5000",
  "currency": "usd",
  "periodUnit": "week",
  "periodCount": "1",
  "description": "Weekly Pro plan",
  "methodDetails": {
    "networkId": "profile_1MqDcVKA5fEO2tZvKQm9g8Yj",
    "paymentMethodTypes": ["card", "link"]
  }
}
]]></sourcecode></figure>

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

<figure><sourcecode type="json"><![CDATA[
{
  "paymentMethod": "pm_1Qabc32eZvKYlo2C7b8H1234",
  "customer": "cus_S7x1Pq5R9n2Lm4"
}
]]></sourcecode></figure>

<t>The server creates or reuses a Stripe Customer, creates or reuses a
weekly fixed-price Stripe Price, creates a Stripe Subscription, and
waits for the first invoice to be paid. Once Stripe reports the first
invoice as paid, the <spanx style="verb">Payment-Receipt</spanx> payload decodes to:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "method": "stripe",
  "reference": "in_1QabdK2eZvKYlo2C0L9n4321",
  "status": "success",
  "subscriptionId": "c3ViX3N0cmlwZV8wMQ",
  "stripeSubscription": "sub_1Qabd52eZvKYlo2CgP0Lm789",
  "timestamp": "2026-01-15T12:03:10Z"
}
]]></sourcecode></figure>

</section>
<section anchor="rejected-unsupported-cadence"><name>Rejected Unsupported Cadence</name>

<t>If a request uses period fields that cannot be represented by the
shared subscription contract and Stripe recurring cadence, the server
rejects it rather than approximating. For example, the following request
is invalid for this profile because <spanx style="verb">year</spanx> is not a supported
<spanx style="verb">periodUnit</spanx>:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "5000",
  "currency": "usd",
  "periodUnit": "year",
  "periodCount": "1",
  "methodDetails": {
    "networkId": "profile_1MqDcVKA5fEO2tZvKQm9g8Yj",
    "paymentMethodTypes": ["card"]
  }
}
]]></sourcecode></figure>

</section>
</section>
<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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
X0sdiP8DP7vIa1lfAAA=

-->

</rfc>

