<?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.35 (Ruby 3.2.11) -->


<!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 RFC7516 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7516.xml">
<!ENTITY RFC7517 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7517.xml">
<!ENTITY RFC7518 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7518.xml">
<!ENTITY RFC8017 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8017.xml">
<!ENTITY RFC4648 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml">
<!ENTITY RFC8259 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC9110 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml">
]>


<rfc ipr="noModificationTrust200902" docName="draft-card-charge-00" category="info" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="Card Charge">Card Network Charge Intent for HTTP Payment Authentication</title>

    <author initials="J." surname="Brans" fullname="Jacob Brans">
      <organization>Visa</organization>
      <address>
        <email>jbrans@visa.com</email>
      </address>
    </author>

    <date year="2026" month="April" day="17"/>

    
    
    

    <abstract>


<?line 60?>

<t>This document defines the "card" payment method and its
implementation of the "charge" intent within the Payment HTTP
Authentication Scheme.  It specifies how clients and servers
exchange one-time card payments using encrypted network tokens.</t>



    </abstract>



  </front>

  <middle>


<?line 67?>

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

<t>This specification defines the "card" payment method for use with the
"charge" intent <xref target="I-D.payment-intent-charge"/> in the Payment HTTP
Authentication Scheme <xref target="I-D.httpauth-payment"/>.  The charge intent
enables one-time card payments where the server processes the payment
immediately upon receiving the credential.</t>

<t>The card method is PSP-agnostic.  Client Enablers <bcp14>SHOULD</bcp14> provision
agent-specific payment tokens using network services such as
<xref target="VISA-INTELLIGENT-COMMERCE"/>.</t>

<section anchor="card-charge-flow"><name>Card Charge Flow</name>

<t>The card method implements the charge intent flow defined in
<xref target="I-D.payment-intent-charge"/>:</t>

<t><list style="numbers" type="1">
  <t>Client requests a resource.</t>
  <t>Server responds 402 with a Challenge (amount, currency,
 accepted networks, encryption key).</t>
  <t>Client forwards challenge context to its Client Enabler.</t>
  <t>Client Enabler provisions a network token, encrypts it
 with the server's key, and returns the credential.</t>
  <t>Client retries the request with an Authorization: Payment
 header containing the encrypted credential.</t>
  <t>Server forwards the credential to its Server Enabler.</t>
  <t>Server Enabler decrypts and processes the payment.</t>
  <t>Server returns 200 with Payment-Receipt and the resource.</t>
</list></t>

<t>The client may include Trusted Agent Protocol <xref target="VISA-TAP"/>
signature headers for additional identity assurance.</t>

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

<figure><artwork><![CDATA[
Client              Client Enabler             Server            Server Enabler
   |                       |                      |                     |
   |  (1) GET /resource    |                      |                     |
   |--------------------------------------------->|                     |
   |                       |                      |                     |
   |  (2) 402 + Challenge  |                      |                     |
   |<---------------------------------------------|                     |
   |                       |                      |                     |
   |  (3) Request token    |                      |                     |
   |---------------------->|                      |                     |
   |  (4) Token            |                      |                     |
   |<----------------------|                      |                     |
   |                       |                      |                     |
   |  (5) Retry GET /resource + Credential        |                     |
   |--------------------------------------------->|                     |
   |                       |                      | (6) Process payment |
   |                       |                      |-------------------->|
   |                       |                      | (7) Result          |
   |                       |                      |<--------------------|
   |  (8) 200 OK + Receipt |                      |                     |
   |<---------------------------------------------|                     |
   |                       |                      |                     |
]]></artwork></figure>

</section>
<section anchor="relationship-to-the-payment-scheme"><name>Relationship to the Payment Scheme</name>

<t>This document is a payment method specification as defined in
<xref target="I-D.httpauth-payment"/>.  It implements the "charge"
intent defined in <xref target="I-D.payment-intent-charge"/> for the "card"
payment method.  It defines the methodDetails, credential payload,
verification, and settlement procedures specific to card payments.</t>

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

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

<?line -18?>

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

<dl>
  <dt>Payment Data</dt>
  <dd>
    <t>An encrypted token and associated metadata
produced by a Client Enabler.</t>
  </dd>
  <dt>Client Enabler (CE)</dt>
  <dd>
    <t>See <xref target="client-enabler-profile"/>.</t>
  </dd>
  <dt>Payment Service Provider (PSP)</dt>
  <dd>
    <t>An entity that provides payment processing services,
including transaction authorization, settlement, and
related functions.</t>
  </dd>
  <dt>Vault Provider</dt>
  <dd>
    <t>Entity that stores sensitive card material and mediates
calls to token service providers.
A vault provider is one type of Client Enabler.</t>
  </dd>
  <dt>Token Service Provider (TSP)</dt>
  <dd>
    <t>Entity that provisions network tokens
and cryptograms.  Could be a PSP, card network, issuer
processor, or a vault provider with direct network connections.</t>
  </dd>
  <dt>Server Enabler</dt>
  <dd>
    <t>A PSP or processing entity
on the server side that decrypts and processes the encrypted
network token credential.</t>
  </dd>
  <dt>Network Token</dt>
  <dd>
    <t>A card-network-issued token used for transaction
processing.  Never exposed to the client or server.</t>
  </dd>
  <dt>Cryptogram</dt>
  <dd>
    <t>A one-time-use value generated alongside a network token
to authenticate a specific transaction.</t>
  </dd>
</dl>

</section>
<section anchor="intent-identifier"><name>Intent Identifier</name>

<t>This specification defines the following intent for the <spanx style="verb">card</spanx> payment
method:</t>

<figure><artwork><![CDATA[
charge
]]></artwork></figure>

<t>The intent identifier is case-sensitive and <bcp14>MUST</bcp14> be lowercase.</t>

</section>
<section anchor="intent-charge"><name>Intent: "charge"</name>

<t>This specification implements the "charge" intent defined in
<xref target="I-D.payment-intent-charge"/>.  A one-time card payment of the
specified amount.  The server processes the payment immediately
upon receiving the credential.</t>

<t>The charge intent properties (payment timing, idempotency,
reversibility) are defined in
<xref target="I-D.payment-intent-charge"/>.  For the card method, reversibility
is subject to card network chargeback rules.</t>

<t><strong>Fulfillment mechanism:</strong> The client obtains an encrypted network
token from its Client Enabler and submits it in an
Authorization: Payment header.  The Server Enabler decrypts and
processes the payment through existing card network rails.</t>

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

<t>The server issues an HTTP 402 response with a WWW-Authenticate:
Payment header per <xref target="I-D.httpauth-payment"/>.  The request parameter
is a base64url-encoded JSON object containing the shared fields
defined in <xref target="I-D.payment-intent-charge"/> and
card-specific extensions in the methodDetails field.</t>

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

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
WWW-Authenticate: Payment
  id="ch_9xK2mR4vB7nQ",
  realm="api.merchant.com",
  method="card",
  intent="charge",
  expires="2026-02-19T12:10:00Z",
  request="eyJhbW91bnQiOiI0OTk5IiwiY3VycmVuY3kiOiJ1c2Qi..."
Cache-Control: no-store
]]></sourcecode></figure>

<section anchor="shared-fields"><name>Shared Fields</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">amount</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Amount in smallest currency unit (e.g., "4999" = $49.99).</c>
      <c><spanx style="verb">currency</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>ISO 4217 code, lowercase (e.g., "usd").</c>
      <c><spanx style="verb">recipient</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Merchant identifier as registered with the Server Enabler (acquirer).  For card payments, this is the merchant ID assigned by the acquiring PSP (e.g., "merch_abc123").</c>
      <c><spanx style="verb">description</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Human-readable description of the payment.</c>
      <c><spanx style="verb">externalId</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Merchant's external reference (order ID, invoice number, etc.).</c>
</texttable>

</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.acceptedNetworks</spanx></c>
      <c>array</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Card networks accepted (e.g., ["visa", "mastercard"]).</c>
      <c><spanx style="verb">methodDetails.merchantName</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Human-readable merchant name for display (e.g., "Acme Corp").</c>
      <c><spanx style="verb">methodDetails.encryptionJwk</spanx></c>
      <c>object</c>
      <c>CONDIT.</c>
      <c>Embedded JWK (<xref target="RFC7517"/> Section 4) containing the server's RSA public encryption key.  <bcp14>REQUIRED</bcp14> if <spanx style="verb">jwksUri</spanx> is absent; <bcp14>MUST NOT</bcp14> be present if <spanx style="verb">jwksUri</spanx> is present.</c>
      <c><spanx style="verb">methodDetails.jwksUri</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>HTTPS URI of a JWK Set (<xref target="RFC7517"/> Section 5).  <bcp14>MUST</bcp14> be on the same origin as the realm.  When present, <spanx style="verb">kid</spanx> <bcp14>MUST</bcp14> also be present.</c>
      <c><spanx style="verb">methodDetails.kid</spanx></c>
      <c>string</c>
      <c>CONDIT.</c>
      <c>Key ID referencing a key in the JWKS.  <bcp14>REQUIRED</bcp14> when <spanx style="verb">jwksUri</spanx> is present.</c>
      <c><spanx style="verb">methodDetails.billingRequired</spanx></c>
      <c>boolean</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>When true, the Client Enabler <bcp14>SHOULD</bcp14> include billing info in the credential payload.  See <xref target="billing-address-data"/>.</c>
</texttable>

<t>Challenge expiry is conveyed by the <spanx style="verb">expires</spanx> auth-param in
<spanx style="verb">WWW-Authenticate</spanx> per <xref target="I-D.httpauth-payment"/> and
<xref target="I-D.payment-intent-charge"/>.  Request objects <bcp14>MUST NOT</bcp14> duplicate
the expiry value.</t>

</section>
<section anchor="encryption-key"><name>Encryption Key</name>

<t>The server provides its RSA public encryption key using one of
two mechanisms:</t>

<t><list style="numbers" type="1">
  <t>Embedded JWK (<spanx style="verb">encryptionJwk</spanx>) -- The server includes a JSON
 Web Key <xref target="RFC7517"/> directly in methodDetails.  This is
 the <bcp14>RECOMMENDED</bcp14> approach for most deployments.  It requires
 no additional infrastructure and works in environments where
 the Client Enabler cannot make outbound HTTP calls.</t>
  <t>JWKS URI (<spanx style="verb">jwksUri</spanx> + <spanx style="verb">kid</spanx>) -- The server hosts a JWK Set at
 an HTTPS endpoint and references the key by its <spanx style="verb">kid</spanx>.  The
 <spanx style="verb">jwksUri</spanx> <bcp14>MUST</bcp14> be on the same origin as the challenge realm.
 This approach supports centralized key rotation and is
 suitable for large platforms managing keys across many
 merchants.</t>
</list></t>

<t>Key requirements:</t>

<t><list style="symbols">
  <t>The key <bcp14>MUST</bcp14> be RSA (<spanx style="verb">"kty": "RSA"</spanx>) with a minimum length of
2048 bits.  Servers <bcp14>SHOULD</bcp14> use 2048-bit or 4096-bit keys.</t>
  <t>The JWK <bcp14>MUST</bcp14> include <spanx style="verb">"alg": "RSA-OAEP-256"</spanx> and
<spanx style="verb">"use": "enc"</spanx>.  Client Enablers <bcp14>MUST</bcp14> reject keys where <spanx style="verb">alg</spanx>
is not "RSA-OAEP-256" or <spanx style="verb">use</spanx> is not "enc".</t>
  <t>The JWK <bcp14>MUST</bcp14> include a <spanx style="verb">"kid"</spanx> value.</t>
  <t>Server Enablers that manage encryption keys via X.509
certificates <bcp14>MAY</bcp14> include the <spanx style="verb">"x5c"</spanx> parameter (<xref target="RFC7517"/>
Section 4.7) in the JWK.</t>
</list></t>

<t>Key resolution procedure:</t>

<t><list style="numbers" type="1">
  <t>If <spanx style="verb">jwksUri</spanx> is present in methodDetails, the Client Enabler
 <bcp14>MUST</bcp14> verify the URI is on the same origin as the challenge
 realm.  If the origins differ, the CE <bcp14>MUST</bcp14> reject the
 challenge.  The CE <bcp14>MUST</bcp14> fetch the JWK Set from the URI over
 HTTPS and select the key matching <spanx style="verb">kid</spanx>.  If the <spanx style="verb">kid</spanx> is not
 found, the CE <bcp14>MUST</bcp14> reject the challenge.</t>
  <t>Otherwise, if <spanx style="verb">encryptionJwk</spanx> is present in methodDetails, the
 CE <bcp14>MUST</bcp14> use the embedded key directly.</t>
  <t>If neither is present, the CE <bcp14>MUST</bcp14> reject the challenge.</t>
  <t>The CE <bcp14>MUST</bcp14> validate the resolved key: <spanx style="verb">kty</spanx> <bcp14>MUST</bcp14> be "RSA",
 <spanx style="verb">alg</spanx> <bcp14>MUST</bcp14> be "RSA-OAEP-256", and <spanx style="verb">use</spanx> <bcp14>MUST</bcp14> be "enc".</t>
</list></t>

<t>When <spanx style="verb">encryptionJwk</spanx> is used, the <spanx style="verb">kid</spanx> value is taken from
within the JWK object.  A top-level <spanx style="verb">kid</spanx> field <bcp14>MUST NOT</bcp14> be
present when <spanx style="verb">encryptionJwk</spanx> is used.  When <spanx style="verb">jwksUri</spanx> is used,
the top-level <spanx style="verb">kid</spanx> field identifies which key to select from
the JWK Set.</t>

<t>The Server Enabler (or its delegated infrastructure) is
responsible for key pair generation and private key management.</t>

<t>The Client Enabler <bcp14>MUST</bcp14> encrypt the token payload as a JWE
<xref target="RFC7516"/> compact serialization using the key management
algorithm from the JWK (<spanx style="verb">alg</spanx>, which <bcp14>MUST</bcp14> be "RSA-OAEP-256")
and content encryption algorithm AES-256-GCM (<spanx style="verb">enc</spanx>:
"A256GCM") per <xref target="RFC7518"/>.  The JWE protected header <bcp14>MUST</bcp14>
include <spanx style="verb">alg</spanx>, <spanx style="verb">enc</spanx>, and <spanx style="verb">kid</spanx>.  Implementations <bcp14>MUST NOT</bcp14>
use PKCS#1 v1.5 padding or direct RSA encryption.  The client
forwards the JWE token to the server without inspecting it.
The Server Enabler holds the corresponding private key and
decrypts the JWE to recover the token payload for processing.</t>

<t><strong>Example (embedded JWK in methodDetails):</strong></t>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "4999",
  "currency": "usd",
  "recipient": "merch_abc123",
  "description": "Pro plan — monthly subscription",
  "methodDetails": {
    "acceptedNetworks": ["visa", "mastercard", "amex"],
    "merchantName": "Acme Corp",
    "encryptionJwk": {
      "kty": "RSA",
      "kid": "enc-2026-01",
      "use": "enc",
      "alg": "RSA-OAEP-256",
      "n": "0vx7agoebGcQSuu...",
      "e": "AQAB"
    }
  }
}
]]></sourcecode></figure>

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

<t>The client retries the original request with an Authorization: Payment
header containing a base64url-encoded JSON credential, following the
standard MPP credential structure <xref target="I-D.httpauth-payment"/>.</t>

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

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

<section anchor="credential-structure"><name>Credential Structure</name>

<t>The decoded credential follows the standard MPP format:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "ch_9xK2mR4vB7nQ",
    "realm": "api.merchant.com",
    "method": "card",
    "intent": "charge",
    "request": "eyJhbW91bnQiOiI0OTk5Ii...",
    "expires": "2026-02-19T12:10:00Z"
  },
  "payload": {
    "encryptedPayload": "<base64-encoded RSA-OAEP ciphertext>",
    "network": "visa",
    "panLastFour": "4242",
    "panExpirationMonth": "06",
    "panExpirationYear": "2028",
    "billingAddress": {
      "zip": "94102",
      "countryCode": "US"
    },
    "cardholderFullName": "Jane Smith",
    "paymentAccountReference": "PAR9876543210987654321012345"
  }
}
]]></sourcecode></figure>

<t>The <spanx style="verb">challenge</spanx> field echoes the challenge from the 402 response.
The <spanx style="verb">payload</spanx> field contains the card-specific payment proof.</t>

</section>
<section anchor="payload-fields"><name>Payload Fields</name>

<t>The payload field largely conforms to <xref target="EMV-SRC-API"/>.</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">encryptedPayload</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Encrypted Payload (<xref target="encrypted-payload-format"/>).  Client and server <bcp14>MUST NOT</bcp14> parse.</c>
      <c><spanx style="verb">network</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Card network: "visa", "mastercard", "amex", "discover".</c>
      <c><spanx style="verb">panLastFour</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Last four digits of the card number as displayed to the cardholder.</c>
      <c><spanx style="verb">panExpirationMonth</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>PAN expiration month (e.g., "06").</c>
      <c><spanx style="verb">panExpirationYear</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>PAN expiration year.  <bcp14>MUST</bcp14> be four digits (e.g., "2028") when present.</c>
      <c><spanx style="verb">billingAddress</spanx></c>
      <c>object</c>
      <c>CONDITIONAL</c>
      <c>If <spanx style="verb">billingRequired</spanx> is true, Billing Address information (<xref target="billing-address-data"/>) is present.</c>
      <c><spanx style="verb">cardholderFullName</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Cardholder full name.  Client Enablers <bcp14>SHOULD</bcp14> include when available from the TSP or the CE's cardholder records.</c>
      <c><spanx style="verb">paymentAccountReference</spanx></c>
      <c>string</c>
      <c>CONDITIONAL</c>
      <c>Also known as PAR.  <bcp14>REQUIRED</bcp14> when available from the TSP.  Client Enablers <bcp14>MUST</bcp14> include when the TSP provides it.</c>
</texttable>

<t>The <spanx style="verb">encryptedPayload</spanx> field is required for payment processing,
typically used by Server Enabler.  The <spanx style="verb">network</spanx>, <spanx style="verb">panLastFour</spanx>,
<spanx style="verb">panExpirationMonth</spanx>, and <spanx style="verb">panExpirationYear</spanx> fields may be used
by Server for cardholder UX purposes.  The <spanx style="verb">billingAddress</spanx> field
may be used by Server for their business process (e.g., tax
calculation) and may also be forwarded to Server Enabler for
address verification (<xref target="billing-address-data"/>).  The
<spanx style="verb">cardholderFullName</spanx> field may be used for both payment as well as
cardholder communication purposes.  The <spanx style="verb">paymentAccountReference</spanx>
may be used to identify cardholder across several channels and/or
developers without storing sensitive information.</t>

</section>
<section anchor="encrypted-payload-format"><name>Encrypted Payload Format</name>

<t>The <spanx style="verb">encryptedPayload</spanx> field is a JWE <xref target="RFC7516"/> compact
serialization containing an encrypted JSON object with all
fields required to process the charge.  The plaintext <bcp14>MUST</bcp14> be
a minified UTF-8 encoded JSON object.</t>

<t>The JWE protected header <bcp14>MUST</bcp14> contain:</t>

<figure><sourcecode type="json"><![CDATA[
{"alg": "RSA-OAEP-256", "enc": "A256GCM", "kid": "enc-2026-01"}
]]></sourcecode></figure>

<t>The <spanx style="verb">alg</spanx> value <bcp14>MUST</bcp14> match the <spanx style="verb">alg</spanx> in the server's JWK.
The <spanx style="verb">kid</spanx> value <bcp14>MUST</bcp14> match the <spanx style="verb">kid</spanx> of the encryption key
resolved per <xref target="encryption-key"/>.  The <spanx style="verb">enc</spanx> value <bcp14>MUST</bcp14> be
"A256GCM".  The protected header <bcp14>MUST NOT</bcp14> include <spanx style="verb">zip</spanx>
(compression); compressing before encryption can enable
information leakage attacks.</t>

<t>The decrypted plaintext is a JSON object with two <bcp14>REQUIRED</bcp14>
fields:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "token": {
    "paymentToken": "4242424242424242",
    "tokenExpirationMonth": "06",
    "tokenExpirationYear": "2034",
    "eci": "07"
  },
  "dynamicData": {
    "dynamicDataValue": "AmDDBjkH/4A=",
    "dynamicDataType": "CARD_APPLICATION_CRYPTOGRAM_SHORT_FORM",
    "dynamicDataExpiration": 1746296464
  }
}
]]></sourcecode></figure>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">token</spanx></c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Token object (<xref target="token-data"/>).  Client and Server <bcp14>MUST NOT</bcp14> parse.</c>
      <c><spanx style="verb">dynamicData</spanx></c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Dynamic data format (<xref target="dynamic-data"/>).</c>
</texttable>

<t>The CE constructs the JWE as follows:</t>

<t><list style="numbers" type="1">
  <t>Generate a random 256-bit Content Encryption Key (CEK).</t>
  <t>Encrypt the CEK with the server's RSA public key using
RSA-OAEP-256 (<xref target="RFC7518"/> Section 4.3).</t>
  <t>Encrypt the minified JSON plaintext with AES-256-GCM
using the CEK and a random 96-bit IV.</t>
  <t>Assemble the JWE compact serialization:
<spanx style="verb">BASE64URL(header).BASE64URL(encryptedKey).BASE64URL(iv).BASE64URL(ciphertext).BASE64URL(tag)</spanx></t>
</list></t>

<t>The Server Enabler decrypts the JWE using the corresponding
RSA private key to recover the CEK, then decrypts the
ciphertext with AES-256-GCM to obtain the token payload.</t>

<t>Clients and servers <bcp14>MUST NOT</bcp14> parse the <spanx style="verb">encryptedPayload</spanx> field.</t>

</section>
<section anchor="token-data"><name>Token Data</name>

<t>The <spanx style="verb">token</spanx> field in the <spanx style="verb">encryptedPayload</spanx> object is a JSON object with the
following <bcp14>REQUIRED</bcp14> fields:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "paymentToken": "4242424242424242",
  "tokenExpirationMonth": "06",
  "tokenExpirationYear": "2034",
  "eci": "07"
}
]]></sourcecode></figure>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">paymentToken</spanx></c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Network token number as issued by the TSP.</c>
      <c><spanx style="verb">tokenExpirationMonth</spanx></c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Two-digit expiration month (e.g., "06").</c>
      <c><spanx style="verb">tokenExpirationYear</spanx></c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Four-digit expiration year (e.g., "2028").</c>
      <c><spanx style="verb">eci</spanx></c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Electronic Commerce Indicator.</c>
</texttable>

</section>
<section anchor="dynamic-data"><name>Dynamic Data</name>

<t>The <spanx style="verb">dynamicData</spanx> field in the <spanx style="verb">encryptedPayload</spanx> object is a JSON object with the
following <bcp14>REQUIRED</bcp14> fields:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "dynamicDataValue": "AmDDBjkH/4A=",
  "dynamicDataType": "CARD_APPLICATION_CRYPTOGRAM_SHORT_FORM",
  "dynamicDataExpiration": 1746296464
}
]]></sourcecode></figure>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">dynamicDataValue</spanx></c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Cryptogram issued by the TSP.  <bcp14>MUST</bcp14> be provided when <spanx style="verb">dynamicDataType</spanx> is not "NONE".</c>
      <c><spanx style="verb">dynamicDataType</spanx></c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Cryptogram type per <xref target="EMV-SRC-API"/>.  Valid values: "CARD_APPLICATION_CRYPTOGRAM_SHORT_FORM", "CARD_APPLICATION_CRYPTOGRAM_LONG_FORM", "CARDHOLDER_AUTHENTICATION_CRYPTOGRAM", "NONE".</c>
      <c><spanx style="verb">dynamicDataExpiration</spanx></c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Unix Epoch Format.</c>
</texttable>

</section>
<section anchor="billing-address-data"><name>Billing Address Data</name>

<t>When <spanx style="verb">billingRequired</spanx> is true in the challenge methodDetails,
the Client Enabler <bcp14>SHOULD</bcp14> include billing
information in the credential payload.</t>

<t>The <spanx style="verb">billingAddress</spanx> field in the credential payload is a JSON
object with the following <bcp14>OPTIONAL</bcp14> fields:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "line1": "123 Main St",
  "line2": "Apt 4B",
  "city": "San Francisco",
  "state": "CA",
  "zip": "94102",
  "countryCode": "US"
}
]]></sourcecode></figure>

<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">line1</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Street address, line 1.</c>
      <c><spanx style="verb">line2</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Street address, line 2.</c>
      <c><spanx style="verb">city</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>City or locality.</c>
      <c><spanx style="verb">state</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>State, province, or region.</c>
      <c><spanx style="verb">zip</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Postal or ZIP code.</c>
      <c><spanx style="verb">countryCode</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>ISO 3166-1 alpha-2 country code (e.g., "US").</c>
</texttable>

<t>All billing fields are <bcp14>OPTIONAL</bcp14> within the billing object.
Client Enablers <bcp14>SHOULD</bcp14> include whichever fields are available
from the cardholder's stored billing profile.</t>

<t>If <spanx style="verb">billingRequired</spanx> is true but the credential omits the
billing field, the server <bcp14>MAY</bcp14> reject the credential or
proceed at its discretion.</t>

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

<t>Servers <bcp14>MUST</bcp14> verify Payment credentials per the verification
requirements in <xref target="I-D.payment-intent-charge"/>.  The
following procedure implements those requirements for the card
method:</t>

<t><list style="numbers" type="1">
  <t>Decode the credential: base64url-decode the token from the
 Authorization: Payment header and parse as JSON.</t>
  <t>Verify challenge binding: confirm <spanx style="verb">challenge.id</spanx> matches an
 outstanding challenge issued by this server.</t>
  <t>Verify the challenge has not expired (check the <spanx style="verb">expires</spanx> field).</t>
  <t>Verify the method: confirm <spanx style="verb">challenge.method</spanx> equals "card".</t>
  <t>Verify network acceptance: confirm <spanx style="verb">payload.network</spanx> is in the
 <spanx style="verb">acceptedNetworks</spanx> list from methodDetails.</t>
  <t>Reject replays: confirm this <spanx style="verb">challenge.id</spanx> has not been previously
 fulfilled.  Mark it as consumed.</t>
  <t>Verify payment amount: the Server Enabler <bcp14>MUST</bcp14> confirm the
 authorization amount matches the amount from the request
 object.</t>
</list></t>

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

<t>Servers <bcp14>MUST</bcp14> verify that the credential corresponds to the exact
challenge issued.  Challenge IDs <bcp14>SHOULD</bcp14> be cryptographically bound
(e.g., HMAC) to their parameters to enable stateless verification.
Bound parameters include:</t>

<t><list style="symbols">
  <t>Challenge ID</t>
  <t>Amount and currency (from the request object)</t>
  <t>Accepted networks</t>
  <t>Recipient (merchant ID)</t>
  <t>Realm</t>
  <t>Expiry timestamp</t>
  <t>Encryption key identifier (<spanx style="verb">kid</spanx>)</t>
</list></t>

<t>Alternatively, servers <bcp14>MAY</bcp14> store challenge parameters server-side
and verify by lookup using the challenge ID.</t>

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

<t>Per <xref target="I-D.payment-intent-charge"/>, each credential
<bcp14>MUST</bcp14> be usable only once per challenge.  Servers <bcp14>MUST</bcp14> reject
replayed credentials.</t>

<t>Servers <bcp14>MUST</bcp14> use <spanx style="verb">challenge.id</spanx> as an idempotency key when forwarding
to the Server Enabler.  This prevents duplicate charges from
retried requests.</t>

<t>Replay behavior:</t>

<t><list style="symbols">
  <t>Same <spanx style="verb">challenge.id</spanx>, credential already successfully processed:
server <bcp14>MUST</bcp14> return the cached 200 response with <spanx style="verb">Payment-Receipt</spanx>.</t>
  <t>Same <spanx style="verb">challenge.id</spanx>, prior processing failed: server <bcp14>MUST</bcp14> return
HTTP 409 Conflict.</t>
  <t>Same <spanx style="verb">challenge.id</spanx>, challenge expired: server <bcp14>MUST</bcp14> return HTTP
402 with a fresh challenge.</t>
  <t>Challenge IDs <bcp14>MUST</bcp14> contain at least 128 bits of entropy.</t>
  <t>Servers <bcp14>MUST</bcp14> store challenge state with a TTL of at least the
challenge expiry window plus a grace period (<bcp14>RECOMMENDED</bcp14>:
expiry + 5 minutes).</t>
  <t>Servers <bcp14>SHOULD</bcp14> purge challenge state after the TTL expires.</t>
</list></t>

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

<t>After credential verification, the Server Enabler decrypts the
network token using the private key corresponding to the
encryption key published in the challenge, and submits an
authorization request to the card network.</t>

<t>On approval, the server returns HTTP 200 with a
<spanx style="verb">Payment-Receipt</spanx> header and the requested resource.  Servers
<bcp14>SHOULD</bcp14> return 200 immediately after authorization approval,
even though final fund settlement is pending.</t>

<t>If the issuing bank declines, the server <bcp14>MUST</bcp14> return an error
response and <bcp14>SHOULD</bcp14> issue a fresh 402 challenge to allow the
client to retry.</t>

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

<t>Upon successful authorization, 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 <spanx style="verb">Payment-Receipt</spanx> on error responses.</t>

<t>Decoded receipt:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "challengeId": "ch_9xK2mR4vB7nQ",
  "method": "card",
  "status": "success",
  "reference": "visa_txn_abc123",
  "timestamp": "2026-02-19T12:05:30Z",
  "externalId": "order_12345"
}
]]></sourcecode></figure>

<t>Receipt 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">challengeId</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>The challenge ID that was fulfilled.</c>
      <c><spanx style="verb">method</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>"card".</c>
      <c><spanx style="verb">status</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>"success".</c>
      <c><spanx style="verb">reference</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Authorization reference from the Server Enabler.</c>
      <c><spanx style="verb">timestamp</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c><xref target="RFC3339"/> timestamp of the authorization.</c>
      <c><spanx style="verb">externalId</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Echo of the <spanx style="verb">externalId</spanx> from the request, if provided.</c>
</texttable>

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

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

<t>All MPP exchanges <bcp14>MUST</bcp14> occur over TLS 1.2 or higher (TLS 1.3
recommended).  Plain HTTP <bcp14>MUST</bcp14> be rejected.  Clients <bcp14>SHOULD</bcp14> verify
the server's TLS certificate.</t>

</section>
<section anchor="credential-security"><name>Credential Security</name>

<t>The <spanx style="verb">encryptedPayload</spanx> field is a JWE <xref target="RFC7516"/> compact
token not readable by the client (<xref target="encrypted-payload-format"/>).
The Client Enabler encrypts the token payload using JWE with
the server's encryption key (<xref target="encryption-key"/>), provided as
a JWK via <spanx style="verb">encryptionJwk</spanx> or resolved from <spanx style="verb">jwksUri</spanx> in
methodDetails.  The JWE provides both confidentiality
(RSA-OAEP-256 key wrapping + AES-256-GCM content encryption)
and integrity (GCM authentication tag).  Only the Server
Enabler holding the corresponding private key can decrypt and
process it.</t>

<t>Only encrypted network tokens travel in the credential.  The
client never has access to decrypted token material.</t>

</section>
<section anchor="billing-data-handling"><name>Billing Data Handling</name>

<t>Billing information (<xref target="billing-address-data"/>),
<spanx style="verb">cardholderFullName</spanx>, and <spanx style="verb">paymentAccountReference</spanx> are
personally identifiable information (PII) and <bcp14>SHOULD</bcp14> be
handled in accordance with applicable privacy regulations
(e.g., GDPR, CCPA).</t>

<t><list style="symbols">
  <t>Billing data, <spanx style="verb">cardholderFullName</spanx>, and
<spanx style="verb">paymentAccountReference</spanx> are transmitted as plaintext
within the credential payload, protected by TLS in
transit (<xref target="transport-security"/>).</t>
  <t><spanx style="verb">paymentAccountReference</spanx> (PAR) is a persistent
cross-channel identifier that can correlate a cardholder
across merchants and payment methods.  Servers <bcp14>SHOULD</bcp14>
treat PAR with the same care as billing data and <bcp14>SHOULD
NOT</bcp14> use it for cross-merchant tracking beyond the
server's own business relationship with the cardholder.</t>
  <t>Servers and intermediaries <bcp14>SHOULD NOT</bcp14> log billing data,
<spanx style="verb">cardholderFullName</spanx>, or <spanx style="verb">paymentAccountReference</spanx> in
plaintext unless required for order fulfillment or
dispute resolution.</t>
  <t>Servers <bcp14>SHOULD</bcp14> retain billing data only as long as needed
for their business purpose (address verification,
fulfillment, dispute resolution) and in accordance with
applicable privacy regulations.</t>
</list></t>

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

<section anchor="payment-method-registration"><name>Payment Method Registration</name>

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

<texttable>
      <ttcol align='left'>Method Identifier</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">card</spanx></c>
      <c>Card payment via encrypted network token credential</c>
      <c>This document</c>
</texttable>

<t>Contact: Visa (<eref target="mailto:jbrans@visa.com">jbrans@visa.com</eref>)</t>

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

<t>This document registers the following payment 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'>Applicable Methods</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">charge</spanx></c>
      <c><spanx style="verb">card</spanx></c>
      <c>One-time card payment via encrypted network token</c>
      <c>This document</c>
</texttable>

</section>
</section>


  </middle>

  <back>


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

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

&RFC2119;
&RFC3339;
&RFC7516;
&RFC7517;
&RFC7518;
&RFC8017;
&RFC4648;
&RFC8259;
&RFC8174;
&RFC9110;
<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-charge" target="https://datatracker.ietf.org/doc/draft-payment-intent-charge/">
  <front>
    <title>Charge Intent for HTTP Payment Authentication</title>
    <author initials="J." surname="Moxey" fullname="Jake Moxey">
      <organization></organization>
    </author>
    <date year="2026" month="March"/>
  </front>
</reference>


    </references>

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

<reference anchor="EMV-SRC-API" target="https://www.emvco.com/emv-technologies/secure-remote-commerce/">
  <front>
    <title>EMV Secure Remote Commerce - API Specification</title>
    <author >
      <organization>EMVCo, LLC</organization>
    </author>
    <date year="2025" month="October"/>
  </front>
</reference>
<reference anchor="VISA-INTELLIGENT-COMMERCE" target="https://developer.visa.com/capabilities/visa-intelligent-commerce">
  <front>
    <title>Visa Intelligent Commerce</title>
    <author >
      <organization>Visa Inc.</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="VISA-TAP" target="https://developer.visa.com/capabilities/trusted-agent-protocol/">
  <front>
    <title>Visa Trusted Agent Protocol</title>
    <author >
      <organization>Visa Inc.</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

</references>


<?line 781?>

<section anchor="client-enabler-profile"><name>Client Enabler Profile</name>

<t>This appendix describes an illustrative HTTP interface for
Client Enablers (CEs).  A Client Enabler is any entity that
accepts challenge context from a client, provisions a network
token and cryptogram, encrypts the result using the server's
encryption key (<xref target="encryption-key"/>), and returns the credential
payload.  Client Enablers include vault providers, token
service providers, and PSPs acting as issuers.</t>

<t>The interface described here is informative.  Endpoint URLs,
paths, and authentication mechanisms are CE-defined.</t>

<section anchor="token-request-interface"><name>Token Request Interface</name>

<t>The client sends a request to the Client Enabler with the
card identifier and the full challenge context (including the
encryption key from methodDetails as <spanx style="verb">encryptionJwk</spanx> or
<spanx style="verb">jwksUri</spanx> + <spanx style="verb">kid</spanx>).  The Bearer token shown below is
illustrative.</t>

<t><strong>Request:</strong></t>

<figure><sourcecode type="http"><![CDATA[
POST /v1/payment-tokens HTTP/1.1
Host: api.vault-provider.com
Content-Type: application/json
Authorization: Bearer <agent_api_key>
]]></sourcecode></figure>

<figure><sourcecode type="json"><![CDATA[
{
  "cardId": "card_abc123",
  "challenge": {
    "id": "ch_9xK2mR4vB7nQ",
    "realm": "api.merchant.com",
    "amount": "4999",
    "currency": "usd",
    "acceptedNetworks": ["visa", "mastercard"],
    "merchantName": "Acme Corp",
    "encryptionJwk": {
      "kty": "RSA",
      "kid": "enc-2026-01",
      "use": "enc",
      "alg": "RSA-OAEP-256",
      "n": "0vx7agoebGcQSuu...",
      "e": "AQAB"
    }
  }
}
]]></sourcecode></figure>

<t>A conforming Client Enabler is expected to:</t>

<t><list style="symbols">
  <t>Validate that the <spanx style="verb">cardId</spanx> exists and belongs to the
authenticated client.</t>
  <t>Provision a network token and cryptogram for the transaction.</t>
  <t>Resolve the encryption key per the procedure in
<xref target="encryption-key"/>: use <spanx style="verb">encryptionJwk</spanx> directly, or fetch
<spanx style="verb">jwksUri</spanx> and select by <spanx style="verb">kid</spanx>.</t>
  <t>Validate the key: <spanx style="verb">kty</spanx> is "RSA", <spanx style="verb">alg</spanx> is
"RSA-OAEP-256", <spanx style="verb">use</spanx> is "enc".</t>
  <t>Encrypt the token payload as a JWE <xref target="RFC7516"/> compact
serialization using the resolved key, with <spanx style="verb">alg</spanx> set to
"RSA-OAEP-256" and <spanx style="verb">enc</spanx> set to "A256GCM"
(<xref target="encrypted-payload-format"/>).</t>
  <t>Return the encrypted token along with display metadata and
authentication context.</t>
</list></t>

<t><strong>Response:</strong></t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
]]></sourcecode></figure>

<figure><sourcecode type="json"><![CDATA[
{
  "encryptedPayload": "<JWE compact serialization>",
  "network": "visa",
  "panLastFour": "4242",
  "panExpirationMonth": "06",
  "panExpirationYear": "2028",
  "cardholderFullName": "Jane Smith",
  "paymentAccountReference": "PAR9876543210987654321012345"
}
]]></sourcecode></figure>

<t>The response body contains the credential payload fields
defined in <xref target="payload-fields"/>.  The client includes these fields
directly in the credential payload.</t>

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

<t>This appendix imports <spanx style="verb">quoted-string</spanx>, <spanx style="verb">token</spanx>, and <spanx style="verb">base64url</spanx>
from <xref target="I-D.httpauth-payment"/>.</t>

<figure><sourcecode type="abnf"><![CDATA[
card-challenge = "Payment" 1*SP
  "id=" quoted-string ","
  "realm=" quoted-string ","
  "method=" DQUOTE "card" DQUOTE ","
  "intent=" DQUOTE "charge" DQUOTE ","
  "request=" base64url
  *("," 1*SP token "=" ( token / quoted-string ))

card-credential = "Payment" 1*SP base64url
]]></sourcecode></figure>

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

<section anchor="charge-example-http-transport"><name>Charge Example (HTTP Transport)</name>

<t><strong>Step 1: Client requests resource</strong></t>

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

<t><strong>Step 2: Server issues payment challenge</strong></t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
WWW-Authenticate: Payment
  id="ch_9xK2mR4vB7nQ",
  realm="api.merchant.com",
  method="card",
  intent="charge",
  expires="2026-02-19T12:10:00Z",
  request="eyJhbW91bnQiOiI0OTk5IiwiY3VycmVuY3kiOiJ1c2QiLCJyZWNp
    cGllbnQiOiJtZXJjaF9hYmMxMjMiLCJkZXNjcmlwdGlvbiI6IlBybyBw
    bGFuIOKAlCBtb250aGx5IHN1YnNjcmlwdGlvbiIsImV4dGVybmFsSWQi
    OiJvcmRlcl8xMjM0NSIsIm1ldGhvZERldGFpbHMiOnsiYWNjZXB0ZWRO
    ZXR3b3JrcyI6WyJ2aXNhIiwibWFzdGVyY2FyZCIsImFtZXgiXSwibWVy
    Y2hhbnROYW1lIjoiQWNtZSBDb3JwIiwiYmlsbGluZ1JlcXVpcmVkIjp0
    cnVlLCJlbmNyeXB0aW9uSndrIjp7Imt0eSI6IlJTQSIsImtpZCI6ImVu
    Yy0yMDI2LTAxIiwidXNlIjoiZW5jIiwiYWxnIjoiUlNBLU9BRVAtMjU2
    IiwibiI6IjB2eDdhZ29lYkdjUVN1dS4uLiIsImUiOiJBUUFCIn19fQ"
Cache-Control: no-store
Content-Type: application/problem+json
]]></sourcecode></figure>

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

<t>Decoded request:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "4999",
  "currency": "usd",
  "recipient": "merch_abc123",
  "description": "Pro plan — monthly subscription",
  "externalId": "order_12345",
  "methodDetails": {
    "acceptedNetworks": ["visa", "mastercard", "amex"],
    "merchantName": "Acme Corp",
    "billingRequired": true,
    "encryptionJwk": {
      "kty": "RSA",
      "kid": "enc-2026-01",
      "use": "enc",
      "alg": "RSA-OAEP-256",
      "n": "0vx7agoebGcQSuu...",
      "e": "AQAB"
    }
  }
}
]]></sourcecode></figure>

<t><strong>Step 3: Client obtains credential from Client Enabler</strong></t>

<t>The client sends challenge parameters (including encryption JWK
from methodDetails) to its Client Enabler (<xref target="client-enabler-profile"/>).
The CE provisions a network token and cryptogram via existing TSPs,
encrypts the token with the server's encryption key, and returns
the result.</t>

<t><strong>Step 4: Client retries request with credential</strong></t>

<figure><sourcecode type="http"><![CDATA[
GET /api/data HTTP/1.1
Host: api.merchant.com
Authorization: Payment eyJjaGFsbGVuZ2UiOnsiaWQiOiJjaF85eEsyb
  VI0dkI3blEiLCJyZWFsbSI6ImFwaS5tZXJjaGFudC5jb20iLCJtZXRob2QiO
  iJjYXJkIiwiaW50ZW50IjoiY2hhcmdlIiwicmVxdWVzdCI6ImV5SmhiVzkxY
  m5RaU9pSTBPVGs1SWk0dUxuMCIsImV4cGlyZXMiOiIyMDI2LTAyLTE5VDEyO
  jEwOjAwWiJ9LCJwYXlsb2FkIjp7ImVuY3J5cHRlZFBheWxvYWQiOiJleUpoY
  kdjaU9pSlNVMEV0Li4uPEpXRSBjb21wYWN0Pi4uLlhGQm9NWVVab2RldFpkd
  lRpRnZTa1EiLCJuZXR3b3JrIjoidmlzYSIsInBhbkxhc3RGb3VyIjoiNDI0M
  iIsInBhbkV4cGlyYXRpb25Nb250aCI6IjA2IiwicGFuRXhwaXJhdGlvblllY
  XIiOiIyMDI4IiwiYmlsbGluZ0FkZHJlc3MiOnsiemlwIjoiOTQxMDIiLCJjb
  3VudHJ5Q29kZSI6IlVTIn0sImNhcmRob2xkZXJGdWxsTmFtZSI6IkphbmUgU
  21pdGgiLCJwYXltZW50QWNjb3VudFJlZmVyZW5jZSI6IlBBUjk4NzY1NDMyM
  TA5ODc2NTQzMjEwMTIzNDUifX0
]]></sourcecode></figure>

<t>Decoded credential:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "ch_9xK2mR4vB7nQ",
    "realm": "api.merchant.com",
    "method": "card",
    "intent": "charge",
    "request": "eyJhbW91bnQiOiI0OTk5Ii...",
    "expires": "2026-02-19T12:10:00Z"
  },
  "payload": {
    "encryptedPayload": "<base64-encoded RSA-OAEP ciphertext>",
    "network": "visa",
    "panLastFour": "4242",
    "panExpirationMonth": "06",
    "panExpirationYear": "2028",
    "billingAddress": {
      "zip": "94102",
      "countryCode": "US"
    },
    "cardholderFullName": "Jane Smith",
    "paymentAccountReference": "PAR9876543210987654321012345"
  }
}
]]></sourcecode></figure>

<t><strong>Step 5: Server processes payment and returns resource</strong></t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Payment-Receipt: eyJjaGFsbGVuZ2VJZCI6ImNoXzl4SzJtUjR2QjduUSIs
  Im1ldGhvZCI6ImNhcmQiLCJzdGF0dXMiOiJzdWNjZXNzIiwicmVmZXJl
  bmNlIjoidmlzYV90eG5fYWJjMTIzIiwidGltZXN0YW1wIjoiMjAyNi0w
  Mi0xOVQxMjowNTozMFoiLCJleHRlcm5hbElkIjoib3JkZXJfMTIzNDUi
  fQ
Cache-Control: private
Content-Type: application/json
]]></sourcecode></figure>

<figure><sourcecode type="json"><![CDATA[
{
  "data": "Here is your requested resource..."
}
]]></sourcecode></figure>

<t>Decoded receipt:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "challengeId": "ch_9xK2mR4vB7nQ",
  "method": "card",
  "status": "success",
  "reference": "visa_txn_abc123",
  "timestamp": "2026-02-19T12:05:30Z",
  "externalId": "order_12345"
}
]]></sourcecode></figure>

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

<t>The authors thank Visa's acceptance and tokenization partners for
their contributions to the card payment ecosystem that informed this
specification.  The authors also thank Brendan Ryan for his review
of this document.</t>

</section>


  </back>

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

-->

</rfc>

