<?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="July" day="29"/>

    
    
    

    <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-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.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:
H4sIAAAAAAAAA91c63bbNrb+j6fAUX+06YiK7SRN4tV0xnGcxhMndmMnOZ1Z
syxIhCTWFKkSlG21zTzLeZbzZGdfABCgKNdJp3M5XWsmNEUCGxv7+u0NJkki
6qzO9a48ratsoeXpcmTGcFVnZSEPi1oXtZyUlXxxdnYiT9Rqjjf2lvUM/s3G
Ch8TajSq9GXnECItx4Waw/hppSZ1YuiRxASPJFtb4lJXBi53JVzDoHpaVqtd
mRWTUmSLalcW5asyzSZ2wrNqaeqdra3HWzsCRppnBl+uVwuY5vDg7LkYl4XR
hVmaXVlXSy2EAoLLaldImUgm52mli1QV8s1KFXBbwmTw9NNBc0PPVZbvyhE/
+Kdazxfl4Hr1E/1YVtNdeYa35JEamWDg01pfavlS5Zm5yJqRTwfRPTu4wYcv
+P6fmDeDcTlvpmCWClGU1RzWfqlxDW+e7+9sbz+2l/fu3XOXj7Yf3neXDx89
wMvD5NlgVtcL5ECy4P3bpfHtvvfOZlp+bnf2c97neH/l6Xim57rHb6lqqutd
iWOa3bt3U1WrulLjC10NMl1PBkD2Xdj0u7zfeCtpz3+XRmr2BP9z7PuzutDy
VXmtV/QDDA83d7Z2vkq2tu1y7ChJRtIZyVK8sk+Q5U9a5A0EfeJS7wuBwh/s
+enZm8OTg+Tp4dHR4etvk+N3B2/eHR683+2mtxybQSNOd0dZnmfF9G5Imblb
gtZdZvoq5NmL8kpGT8mrsrroXEQgn33g7niwTuX+3uv9g6PfQuNYFWOdhxTu
052YyE+l7/3B0xfHxy9PfwuFV3o0K8sLE9L41sBz0v0ir7J69tsIPn379HQf
rs4Oj1+fJnsnh7ejWC2yNj8rDWIW8ZPuSBUR+LH0vTo423u2d7Z3e7Lmulao
ViEpr8J7H8Odg7O3J8nzt2dv3xzcjgKrseau0fVyYRU32sJTXcvlQk6W9bLS
0j1/S8oScKv4fxJcA9qNWoizWWYkkLEko5PqSVZoI8H0yGHI+KHMGjvFv9LA
Q2FJkMC4WZmSTGUFPeIs2WbTLX7+ucsPfPgwkIe1NAs9Bt8K5CiJnhMoBuJS
586fstiLRVVOslwTZZPsWqfJosrGWlZ6vKwqFPiW4ZiVBuRqDBaMwwSzHI+1
To0si3wFP2smf5JVpoZlX5Y4GnBpobJUmlUxnlVlUS5NvhowN+dZmubgDD9D
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
Sx2I/wN1sh7GWV8AAA==

-->

</rfc>

