<?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 RFC8259 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
<!ENTITY RFC9457 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9457.xml">
]>


<rfc ipr="noModificationTrust200902" docName="draft-xrpl-charge-00" category="info" submissionType="independent">
  <front>
    <title abbrev="XRPL Charge">XRP Ledger Charge Intent for HTTP Payment Authentication</title>

    <author initials="M." surname="Dienger" fullname="Maxime Dienger">
      <organization>Ripple</organization>
      <address>
        <email>maximed@ripple.com</email>
      </address>
    </author>

    <date year="2026" month="September" day="09"/>

    
    
    

    <abstract>


<?line 109?>

<t>This document defines the "charge" intent for the "xrpl" payment
method within the Payment HTTP Authentication Scheme. A charge
settles as a single XRP Ledger Payment transaction carrying XRP, an
issued currency, or a Multi-Purpose Token.</t>

<t>Two credential types are supported. In <spanx style="verb">type="transaction"</spanx> (the
default) the client signs a Payment and hands the serialized blob to
the server, which submits it and observes the result. In
<spanx style="verb">type="hash"</spanx> the client submits the transaction itself and presents
the transaction hash as proof.</t>

<t>The default is the signed blob rather than the hash, which is the
inverse of several other methods: a payer who broadcasts first has
already parted with funds before learning whether the server will
honour them.</t>



    </abstract>



  </front>

  <middle>


<?line 127?>

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

<t>The XRP Ledger settles payments in three to five seconds under a
consensus protocol with deterministic finality: a
transaction in a validated ledger cannot be reordered or reversed
<xref target="XRPL-FINALITY"/>. There is no
probabilistic confirmation depth to reason about, which makes it a
natural fit for the synchronous request-response shape of
<xref target="I-D.httpauth-payment"/> -- a server can decide within one HTTP
round trip whether payment has settled.</t>

<t>This document specifies how the "charge" intent
<xref target="I-D.payment-intent-charge"/> maps onto an XRP Ledger Payment
transaction <xref target="XRPL-PAYMENT"/>.</t>

<section anchor="pull-mode"><name>Pull Mode (Default)</name>

<t>The client signs a Payment transaction but does not submit it. The
serialized blob travels in the credential; the server submits it and
watches for validation.</t>

<figure><artwork><![CDATA[
Client                                   Server
  |                                        |
  |------------- GET /resource ----------->|
  |<-- 402, WWW-Authenticate: Payment -----|
  |                                        |
  | sign Payment (not submitted)           |
  |                                        |
  |-- GET /resource                        |
  |   Authorization: Payment <cred> ------>|
  |                                        | submit blob
  |                                        | await validated ledger
  |                                        | verify fields
  |<-- 200, Payment-Receipt: <receipt> ----|
]]></artwork></figure>

<t>Pull mode is the default for a reason worth stating plainly. If the
client broadcasts first, it has irrevocably spent funds before
knowing whether the server will deliver: a server that crashes,
rejects the credential, or simply never replies leaves the payer with
an on-chain debit and nothing to show for it. In pull mode the
payer's exposure begins only once the server has taken custody of the
blob and committed to submitting it.</t>

<t>Pull mode also gets replay protection for free from the ledger. A
Payment consumes the sender's account sequence number, so a
resubmitted blob fails with <spanx style="verb">tefPAST_SEQ</spanx>. This is a property of the
ledger, not of the server's bookkeeping, and it holds even if the
server's replay store is lost.</t>

</section>
<section anchor="push-mode"><name>Push Mode</name>

<t>The client submits the transaction itself and sends only the 64-hex
transaction hash. The server looks the transaction up and verifies it.</t>

<t>Push mode suits clients that already have a signing and broadcast
pipeline and do not wish to hand a signed blob to a counterparty. It
carries the exposure described above, and it has no sequence-number
protection: a hash of an already-validated transaction can be
presented repeatedly, and to any server. <xref target="binding"></xref> therefore makes
the challenge binding mandatory in push mode.</t>

</section>
<section anchor="relationship-to-the-charge-intent"><name>Relationship to the Charge Intent</name>

<t>This document constrains <xref target="I-D.payment-intent-charge"/>; it does not
redefine it. Fields defined there keep their meaning. Everything
introduced here lives under <spanx style="verb">methodDetails</spanx>, except where this
document narrows the permitted values of a shared field.</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>Drops:</dt>
  <dd>
    <t>The indivisible unit of XRP. One XRP is 10^6 drops. All XRP amounts
on the wire are integer drop counts expressed as decimal strings.
Implementations <bcp14>MUST NOT</bcp14> represent drop counts as IEEE-754 doubles:
the total supply is 10^17 drops, which exceeds the 2^53 range of
exactly representable integers.</t>
  </dd>
  <dt>Classic address:</dt>
  <dd>
    <t>An XRPL account identifier in base58, beginning with <spanx style="verb">r</spanx>.</t>
  </dd>
  <dt>Issued currency:</dt>
  <dd>
    <t>A token on the XRP Ledger denominated by a currency code and the
classic address of its issuer <xref target="XRPL-CURRENCY"/>, held through a
trustline <xref target="XRPL-TRUSTLINES"/>.</t>
  </dd>
  <dt>Multi-Purpose Token (MPT):</dt>
  <dd>
    <t>A token type defined by <xref target="XLS-33"/>, identified by an
<spanx style="verb">mpt_issuance_id</spanx> naming an <spanx style="verb">MPTokenIssuance</spanx> entry, and held
through an MPToken object rather than a trustline.</t>
  </dd>
  <dt>InvoiceID:</dt>
  <dd>
    <t>An optional 256-bit field on a Payment transaction, covered by the
transaction signature and indexed by the ledger. This document uses
it to bind a payment to one challenge (<xref target="binding"></xref>).</t>
  </dd>
  <dt>Validated ledger:</dt>
  <dd>
    <t>A ledger version agreed by consensus. A transaction reported inside
a validated ledger is final.</t>
  </dd>
</dl>

</section>
<section anchor="method-identifier"><name>Method Identifier</name>

<t>The method identifier is the string <spanx style="verb">xrpl</spanx>.</t>

<t>Servers advertising this method in a challenge <bcp14>MUST</bcp14> use exactly this
value. The identifier names the ledger, not any particular asset on
it: XRP, issued currencies and MPTs are all carried by this one
method and distinguished by the <spanx style="verb">currency</spanx> field.</t>

<t>Which of them a given network carries may be gated by amendments
<xref target="XRPL-AMENDMENTS"/>; MPT support in particular arrives with
<xref target="XLS-33"/>. A server <bcp14>SHOULD</bcp14> determine the assets it can accept from
the network it is connected to rather than from this document.</t>

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

<t>The <spanx style="verb">charge</spanx> intent settles a single Payment transaction. It is the
only intent defined by this document; the <spanx style="verb">session</spanx> intent for the
same method is specified separately in draft-xrpl-session.</t>

</section>
<section anchor="encoding"><name>Encoding Conventions</name>

<dl>
  <dt>Amounts:</dt>
  <dd>
    <t>XRP amounts are integer drop counts as decimal strings, for example
<spanx style="verb">"1000000"</spanx> for 1 XRP. Issued-currency and MPT amounts are decimal
strings in the token's own units. Implementations <bcp14>MUST</bcp14> compare
amounts as exact decimal values, never as floating-point numbers.</t>
  </dd>
</dl>

<t>Credentials and challenges are JSON <xref target="RFC8259"/>.</t>

<dl>
  <dt>Hex fields:</dt>
  <dd>
    <t><spanx style="verb">InvoiceID</spanx> and transaction hashes are 64 hexadecimal characters. The
ledger reports them uppercase, and implementations <bcp14>MUST</bcp14> emit
uppercase, but hex is case-insensitive as a value and an
implementation <bcp14>MUST</bcp14> accept either casing on input.
</t>

    <t>Case <bcp14>MUST NOT</bcp14> be load-bearing anywhere downstream. Comparisons and
any key derived from such an identifier <bcp14>MUST</bcp14> be canonicalised first.
A store keyed on the raw string while the signature check and the
ledger lookup both accept either casing is a replay hole: the same
credential resubmitted with the casing changed verifies, resolves,
and finds a different key holding nothing.</t>
  </dd>
  <dt>Addresses:</dt>
  <dd>
    <t>Classic addresses only. X-addresses (which pack a destination tag
into the address) <bcp14>MUST NOT</bcp14> appear in the <spanx style="verb">recipient</spanx> field; a
destination tag is carried in <spanx style="verb">methodDetails.destinationTag</spanx> so
that it remains independently verifiable.</t>
  </dd>
</dl>

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

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

<t>The <spanx style="verb">charge</spanx> intent's shared fields apply, with these constraints:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Constraint</ttcol>
      <c><spanx style="verb">amount</spanx></c>
      <c>string</c>
      <c>yes</c>
      <c>positive decimal, no sign, no exponent</c>
      <c><spanx style="verb">currency</spanx></c>
      <c>string</c>
      <c>yes</c>
      <c>see below</c>
      <c><spanx style="verb">recipient</spanx></c>
      <c>string</c>
      <c>yes</c>
      <c>classic address</c>
      <c><spanx style="verb">description</spanx></c>
      <c>string</c>
      <c>no</c>
      <c>display only, see <xref target="display-fields"></xref></c>
      <c><spanx style="verb">externalId</spanx></c>
      <c>string</c>
      <c>no</c>
      <c>merchant reconciliation handle</c>
</texttable>

<t>The <spanx style="verb">currency</spanx> field is <spanx style="verb">"XRP"</spanx> for the native asset. For an issued
currency it is a JSON object with <spanx style="verb">currency</spanx> and <spanx style="verb">issuer</spanx>. For an MPT
it is a JSON object with <spanx style="verb">mpt_issuance_id</spanx>. Servers <bcp14>MUST</bcp14> reject a
credential whose settled asset does not match the challenged
<spanx style="verb">currency</spanx> exactly, including the issuer: an amount of the right size
in the wrong issuer's token is not payment.</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'>Meaning</ttcol>
      <c><spanx style="verb">network</spanx></c>
      <c>string</c>
      <c>no</c>
      <c><spanx style="verb">mainnet</spanx>, <spanx style="verb">testnet</spanx> or <spanx style="verb">devnet</spanx></c>
      <c><spanx style="verb">reference</spanx></c>
      <c>string</c>
      <c>no</c>
      <c>server-generated correlation ID</c>
      <c><spanx style="verb">invoiceId</spanx></c>
      <c>64-hex</c>
      <c>no</c>
      <c>explicit challenge binding, <xref target="binding"></xref></c>
      <c><spanx style="verb">destinationTag</spanx></c>
      <c>uint32</c>
      <c>no</c>
      <c>enforced on verification when present</c>
      <c><spanx style="verb">sourceTag</spanx></c>
      <c>uint32</c>
      <c>no</c>
      <c>enforced on verification when present</c>
      <c><spanx style="verb">memos</spanx></c>
      <c>array</c>
      <c>no</c>
      <c>UTF-8 memo entries embedded in the Payment</c>
</texttable>

<t>Servers <bcp14>SHOULD</bcp14> set <spanx style="verb">network</spanx> explicitly. This document defines no
default: an implementation that assumes one risks disagreeing with a
counterparty that assumed the other, and the mistake is only visible
after a payment has settled on the wrong ledger.</t>

<t>Clients <bcp14>SHOULD</bcp14> refuse to sign when the challenge's network does not
match the ledger they are connected to. A testnet payment presented
against a mainnet challenge is worthless, and the mismatch is
detectable before signing rather than after.</t>

</section>
<section anchor="recipient-prerequisites"><name>Recipient Prerequisites</name>

<t>A charge in XRP needs nothing of the recipient beyond a funded
account. The other two asset types do, and the requirement falls on
the recipient before any client is ever challenged.</t>

<t>For an issued currency, a recipient that is not the issuer <bcp14>MUST</bcp14>
already hold a trustline <xref target="XRPL-TRUSTLINES"/> to the issuer for that
currency code. For an MPT, a recipient that is not the issuer <bcp14>MUST</bcp14>
already have opted in, which creates its <spanx style="verb">MPToken</spanx> object; a balance
is not required. Where the issuance was created requiring
authorization, the issuer <bcp14>MUST</bcp14> additionally have authorized that
holder.</t>

<t>The issuer is exempt in both cases: a payment returning a token to
the account that issued it redeems the token rather than
transferring it, and redemption requires nothing on the issuer's
side.</t>

<t>Neither prerequisite is something a payer can supply. A server
advertising a charge it cannot receive produces a payment that fails
on submission, after the client has signed and, in push mode, after
it has already parted with the funds. A server <bcp14>SHOULD</bcp14> therefore
confirm the prerequisite once at startup rather than per challenge:
the condition is a property of the recipient account, not of any
particular payment.</t>

<t>How it is established -- <spanx style="verb">TrustSet</spanx> for a trustline,
<spanx style="verb">MPTokenAuthorize</spanx> for an MPT holding -- is ordinary ledger
operation and outside this document. What matters here is that a
charge advertised without it is a charge that cannot settle.</t>

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

<t>The credential payload is a discriminated union on <spanx style="verb">type</spanx>.</t>

<section anchor="transaction-payload"><name>Transaction Payload -- Pull Mode</name>

<figure><sourcecode type="json"><![CDATA[
{
  "type": "transaction",
  "blob": "120000228000000024012E..."
}
]]></sourcecode></figure>

<t><spanx style="verb">blob</spanx> is the hex-encoded, signed but unsubmitted Payment
transaction.</t>

</section>
<section anchor="hash-payload"><name>Hash Payload -- Push Mode</name>

<figure><sourcecode type="json"><![CDATA[
{
  "type": "hash",
  "hash": "BE3DE95F52CC58E22F78CD5D2F7DE9084F596D88B390D479259D7DEC62EBDB49"
}
]]></sourcecode></figure>

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

<t>A server <bcp14>MUST</bcp14> perform every check in this section before returning a
receipt. The order given is normative where one step guards another;
in particular, cheap local checks precede any network call so that an
unauthenticated caller cannot use verification as an amplifier.</t>

<section anchor="challenge-freshness"><name>Challenge Freshness</name>

<t>The server <bcp14>MUST</bcp14> reject a credential whose challenge carries no
<spanx style="verb">expires</spanx>, one whose <spanx style="verb">expires</spanx> is not a valid <xref target="RFC3339"/>
timestamp, and one whose <spanx style="verb">expires</spanx> has passed. <spanx style="verb">expires</spanx> is covered
by the challenge's integrity protection and is the only authenticated
statement of time the challenge carries; treating its absence as
"unbounded" would let a credential be presented indefinitely.</t>

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

<t>The server <bcp14>MUST</bcp14> record, atomically, that a given challenge has been
answered, and reject a second credential for the same challenge.</t>

<t>The record <bcp14>MUST</bcp14> be created by a compare-and-set that fails if the key
already exists, not by a read followed by a write. Two replicas
presented with the same credential concurrently will both observe an
empty store on a read-then-write, and both will accept. The store
<bcp14>MUST</bcp14> therefore be shared across every process serving the realm, and
<bcp14>MUST</bcp14> be durable: a store lost on restart re-opens every window it was
protecting.</t>

</section>
<section anchor="field-verification"><name>Transaction Field Verification</name>

<t>The server <bcp14>MUST</bcp14> verify, against the transaction as recorded on the
ledger rather than as presented by the client:</t>

<t><list style="numbers" type="1">
  <t><spanx style="verb">TransactionType</spanx> is <spanx style="verb">Payment</spanx>. An <spanx style="verb">EscrowCreate</spanx> or a
<spanx style="verb">PaymentChannelCreate</spanx> can carry the right
destination and amount
while delivering nothing: an escrow can be cancelled back to the
sender and a channel deposit reclaimed after its settle delay.</t>
  <t><spanx style="verb">Destination</spanx> equals the challenged <spanx style="verb">recipient</spanx>.</t>
  <t>The delivered amount equals the challenged <spanx style="verb">amount</spanx>. The server
<bcp14>MUST</bcp14> use <spanx style="verb">delivered_amount</spanx> from the transaction metadata where it
is present, not the <spanx style="verb">Amount</spanx> field, which is an upper bound.</t>
  <t>The asset matches the challenged <spanx style="verb">currency</spanx>, including issuer for
an issued currency and <spanx style="verb">mpt_issuance_id</spanx> for an MPT.</t>
  <t>The <spanx style="verb">tfPartialPayment</spanx> flag is not set <xref target="XRPL-PARTIAL"/>. With that
flag a Payment may deliver less than <spanx style="verb">Amount</spanx> and still succeed.</t>
  <t><spanx style="verb">Account</spanx> matches the address encoded in the credential's <spanx style="verb">source</spanx>
DID. Without this check a client can present a third party's
transaction as its own.</t>
  <t><spanx style="verb">DestinationTag</spanx> and <spanx style="verb">SourceTag</spanx> match the challenge where the
challenge specifies them.</t>
</list></t>

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

<t>Field verification alone does not tie a payment to a challenge. Any
earlier payment by the same account, for the same amount, to the same
recipient satisfies every check in <xref target="field-verification"></xref>. The
binding closes this.</t>

<t>The expected <spanx style="verb">InvoiceID</spanx> is either the value the server placed in
<spanx style="verb">methodDetails.invoiceId</spanx>, or -- absent that -- a value derived from
the challenge identifier. When derived, it is the SHA-512Half of the
challenge identifier, rendered as 64 uppercase hexadecimal
characters. SHA-512Half is the ledger's own digest convention.</t>

<t>Because the challenge identifier is itself integrity-protected over
the whole challenge, binding to it transitively binds the payment to
the amount, recipient, currency and expiry the server issued.</t>

<t>A server <bcp14>MUST</bcp14> require a matching <spanx style="verb">InvoiceID</spanx> when the credential is a
<spanx style="verb">hash</spanx> payload, and when the challenge carried an explicit
<spanx style="verb">invoiceId</spanx>. On the <spanx style="verb">transaction</spanx> path the binding <bcp14>SHOULD</bcp14> be verified
when present but <bcp14>MAY</bcp14> be absent, since sequence-number consumption
already prevents reuse there; this keeps clients predating the field
working.</t>

</section>
<section anchor="finality"><name>Finality</name>

<t>A <spanx style="verb">tesSUCCESS</spanx> result is not settlement <xref target="XRPL-FINALITY"/>. Nodes
report metadata for transactions in the open ledger, which can still
be reordered or dropped. The server <bcp14>MUST</bcp14> confirm the transaction is
reported in a validated ledger before returning a receipt, and <bcp14>MAY</bcp14>
require the
validated ledger to be buried under further closed ledgers as
defence against a single node reporting a validation its peers have
not seen.</t>

</section>
<section anchor="age"><name>Transaction Age</name>

<t>The server <bcp14>SHOULD</bcp14> reject a transaction that settled before the
challenge could plausibly have been issued. Combined with the
binding, this narrows the window in which any transaction can be
offered as proof.</t>

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

<section anchor="settle-pull"><name>Pull Mode</name>

<t>The server deserializes the blob, verifies it, submits, and polls
until the transaction appears in a validated ledger or the submission
window closes.</t>

<t>Verification <bcp14>MUST</bcp14> happen twice, against two different objects.</t>

<t>First against the decoded blob, before submission. A blob that fails
a check is rejected without being broadcast, so a malformed or
mistargeted credential costs the payer nothing.</t>

<t>Then again against the transaction as the ledger recorded it. The two
are normally identical, and checking only the first would trust the
server's own decode of client-supplied bytes over what actually
settled. The second pass is also the only one that can read
<spanx style="verb">delivered_amount</spanx>, which exists only in the metadata.</t>

</section>
<section anchor="settle-push"><name>Push Mode</name>

<t>The server looks the hash up. A node that does not yet know the
transaction is not evidence of absence -- propagation takes time --
so the server <bcp14>SHOULD</bcp14> retry a small number of times before treating a
hash as unknown, and <bcp14>MUST NOT</bcp14> hold the request open for the full poll
budget on a hash that is simply fabricated.</t>

</section>
<section anchor="failure-handling"><name>Failure Handling</name>

<t>An XRPL result code <xref target="XRPL-TX-RESULTS"/> is not an error shape a
client can reason about. Servers <bcp14>MUST</bcp14> map result codes to the error
vocabulary below and <bcp14>MUST
NOT</bcp14> surface raw ledger strings.</t>

<texttable>
      <ttcol align='left'>Result</ttcol>
      <ttcol align='left'>Condition</ttcol>
      <c><spanx style="verb">tecUNFUNDED_PAYMENT</spanx></c>
      <c>sender cannot cover amount plus reserve <xref target="XRPL-RESERVES"/></c>
      <c><spanx style="verb">tecNO_DST</spanx></c>
      <c>destination account does not exist</c>
      <c><spanx style="verb">tecPATH_DRY</spanx></c>
      <c>no usable path for the issued currency</c>
      <c><spanx style="verb">tecPATH_PARTIAL</spanx></c>
      <c>path cannot deliver the full amount</c>
      <c><spanx style="verb">tecNO_LINE</spanx></c>
      <c>no trustline for the issued currency</c>
      <c><spanx style="verb">tecNO_AUTH</spanx></c>
      <c>trustline exists but is not authorized</c>
      <c><spanx style="verb">tecFROZEN</spanx></c>
      <c>trustline or issuer is frozen</c>
      <c><spanx style="verb">tecMPT_NOT_AUTHORIZED</spanx></c>
      <c>holder not authorized for the MPT</c>
      <c><spanx style="verb">tecINSUFFICIENT_RESERVE</spanx></c>
      <c>reserve requirement unmet</c>
      <c><spanx style="verb">tefPAST_SEQ</spanx></c>
      <c>sequence consumed; blob already settled</c>
      <c><spanx style="verb">tecNO_PERMISSION</spanx></c>
      <c>context-dependent: MPT holder not authorized, or the recipient requires deposit authorization <xref target="XRPL-DEPOSITAUTH"/></c>
      <c><spanx style="verb">temBAD_AMOUNT</spanx></c>
      <c>amount malformed or zero</c>
      <c><spanx style="verb">tecMPT_LOCKED</spanx></c>
      <c>MPT holding is locked</c>
      <c><spanx style="verb">tecINSUFF_FEE</spanx>, <spanx style="verb">terINSUF_FEE_B</spanx></c>
      <c>fee below the current load-scaled minimum</c>
      <c><spanx style="verb">tefBAD_AUTH</spanx>, <spanx style="verb">tefMASTER_DISABLED</spanx></c>
      <c>signing key not valid for the account</c>
</texttable>

</section>
</section>
<section anchor="receipts"><name>Receipts</name>

<t>A receipt for a settled charge carries the base fields
<xref target="I-D.httpauth-payment"/> defines, and the following in addition:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <c><spanx style="verb">txHash</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Hash of the settled transaction, 64 uppercase hexadecimal characters</c>
      <c><spanx style="verb">ledgerIndex</spanx></c>
      <c>number</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Index of the validated ledger it settled in</c>
</texttable>

<t>The base <spanx style="verb">reference</spanx> <bcp14>MUST</bcp14> also carry the transaction hash, which is
what the core specification asks of a method-specific reference. The
named field exists because one opaque value cannot be read without
method knowledge: a consumer looking for a transaction hash finds no
field called one, and confirming the value means testing whether it
resolves on the ledger.</t>

<t>Servers <bcp14>SHOULD</bcp14> emit both. Clients <bcp14>SHOULD</bcp14> read <spanx style="verb">txHash</spanx> and fall back
to <spanx style="verb">reference</spanx>.</t>

</section>
<section anchor="errors"><name>Error Responses</name>

<t>Errors are Problem Details <xref target="RFC9457"/> carried on a <spanx style="verb">402</spanx> response.
Every payment failure is a <spanx style="verb">402</spanx>; <spanx style="verb">401</spanx> is reserved for
non-payment authentication failures.</t>

<t>The type URIs are those <xref target="I-D.httpauth-payment"/> already defines,
under its base URI <spanx style="verb">https://paymentauth.org/problems/</spanx>. A malformed
or unparseable credential is <spanx style="verb">malformed-credential</spanx>; a challenge
that is unknown, expired or already spent is <spanx style="verb">invalid-challenge</spanx>;
every other failure of the procedure in <xref target="verification"></xref> is
<spanx style="verb">verification-failed</spanx>. This document defines no type of its own.</t>

<t>A server <bcp14>MUST NOT</bcp14> disclose, in an error, whether a given challenge
was previously used by a different caller, nor any part of the
transaction beyond what the caller supplied.</t>

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

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

<t>The server's ledger connection carries the evidence on which payment
decisions rest. Implementations <bcp14>MUST</bcp14> use TLS (<spanx style="verb">wss://</spanx> or <spanx style="verb">https://</spanx>)
for any non-loopback node, and <bcp14>MUST NOT</bcp14> accept a plaintext node
address outside a development configuration that says so explicitly.</t>

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

<t><xref target="single-use"></xref> is the load-bearing requirement. Three properties are
each necessary and none is sufficient alone: the check must be
atomic, the store must be shared across replicas, and it must be
durable.</t>

<t>Retention is not optional either. A record deleted while its
challenge is still presentable re-opens the window it existed to
close, so a record <bcp14>MUST</bcp14> be retained at least until the challenge
expires plus the longest time verification may take.</t>

</section>
<section anchor="push-mode-exposure"><name>Push Mode Exposure</name>

<t>A transaction hash is public the moment it is validated. Anyone who
observes the ledger can present another party's hash. Two checks make
this ineffective: the sender must match the credential's DID
(<xref target="field-verification"></xref>), and the binding must match
(<xref target="binding"></xref>). A server that relaxes either on the push path has no
defence.</t>

</section>
<section anchor="amount-precision"><name>Amount Precision</name>

<t>The total XRP supply is 10^17 drops, beyond the 2^53 integers exactly
representable in IEEE-754. An implementation that converts drops to a
floating-point XRP figure -- for display, comparison, or signing --
loses precision above 2^53 drops, which is 9,007,199,254 XRP, or
about nine percent of the total supply.</t>

<t>That threshold is far above any plausible single payment, so the
practical exposure is small. It is stated as a <bcp14>MUST</bcp14> regardless,
because the failure is silent: the converted value differs from the
intended one by a few drops, and a signature computed over it will
not verify against the amount actually submitted. Implementations
<bcp14>MUST</bcp14> use exact integer arithmetic throughout.</t>

</section>
<section anchor="settlement-is-final-token-balances-are-not"><name>Settlement Is Final, Token Balances Are Not</name>

<t>A validated Payment cannot be reversed. That is a property of the
ledger, and it is what lets a server decide within one round trip.</t>

<t>It does not follow that the value received is permanent. For an
issued currency whose issuer has enabled clawback <xref target="XLS-39"/>, the
issuer may reclaim the tokens from any holder afterwards with a
<spanx style="verb">Clawback</spanx> transaction. The payment settled; the balance later left.</t>

<t>This is a property of the asset, not of this method, and no
verification step can detect it after the fact. A server accepting an
issued currency is extending trust to its issuer, and <bcp14>SHOULD</bcp14> decide
which issuers it accepts rather than accepting any token that arrives
with the right code. Servers that cannot make that judgement <bcp14>SHOULD</bcp14>
charge in XRP, which has no issuer.</t>

</section>
<section anchor="deposit-authorization-can-refuse-the-payment"><name>Deposit Authorization Can Refuse the Payment</name>

<t>An account may set Deposit Authorization <xref target="XRPL-DEPOSITAUTH"/>, after
which it receives no payment from an unauthorized sender. A recipient
configured this way rejects every charge until each payer is
preauthorized, which is a deployment error rather than an attack, but
it presents as a payment that cannot be made rather than as a
misconfiguration.</t>

<t>A server <bcp14>MAY</bcp14> confirm before advertising a charge that its recipient can
receive from arbitrary senders. Whether that check is worth a round
trip per challenge is a deployment question: the condition is static,
so checking once at startup is usually enough.</t>

<t>What is not optional is the reporting. <spanx style="verb">tecNO_PERMISSION</spanx> covers
more than one cause and the result code alone does not say which, so
a server <bcp14>MUST NOT</bcp14> report it as though it did. What the transaction
carried does narrow it: on a payment moving an MPT the cause is an
unauthorized holder, and a server <bcp14>SHOULD</bcp14> say so. Otherwise the
server <bcp14>SHOULD</bcp14> name the destination's refusal, and <bcp14>MAY</bcp14> name deposit
authorization as the usual cause without asserting it -- only
reading the destination's account flags settles that. A
configuration condition on the recipient, reported as a failure of
the payment, sends the operator looking at the wrong account.</t>

</section>
<section anchor="the-challenge-must-match-the-resource"><name>The Challenge Must Match the Resource</name>

<t>A verifier reads what to expect from the challenge the credential
carries. That is sound only while the challenge is known to be the
one this resource issued. A server <bcp14>MUST</bcp14> confirm that the terms it is
about to verify are the terms the requested resource charges, and
<bcp14>MUST</bcp14> refuse the credential otherwise.</t>

<t>The check covers every term the verifier acts on, not only the
priced ones. Amount, currency and recipient decide what is owed; a
destination tag decides which sub-account the funds land in, and an
invoice identifier decides what the payment is bound to. A term the
resource sets and the verifier honours is a term that <bcp14>MUST</bcp14> be
confirmed. Terms the resource leaves unset are not demands and <bcp14>MUST
NOT</bcp14> be treated as such.</t>

<t>Without this a server offering more than one priced resource under
one challenge-issuing key accepts a challenge minted for the cheaper
or less-constrained one against the stricter one. Where a scheme
re-derives the resource's own challenge before dispatch, that
binding already holds for the fields the derivation covers; a
verifier reachable outside that path has no such protection, and
embedded and script callers routinely are.</t>

<t>Identifier comparisons here follow the same rule as everywhere else
in this document: hex is compared as a value, not as a string.</t>

</section>
<section anchor="display-fields"><name>Display Fields Are Not Decisions</name>

<t><spanx style="verb">description</spanx> and <spanx style="verb">externalId</spanx> are attacker-influenced strings that
travel through the challenge. They <bcp14>MUST NOT</bcp14> participate in any
authorization decision, and <bcp14>MUST</bcp14> be treated as untrusted input by
anything that renders them.</t>

</section>
<section anchor="key-material"><name>Key Material</name>

<t>A charge requires the payer's signing key. Implementations <bcp14>SHOULD</bcp14>
keep the key out of any value that can be serialized, logged or
included in an error, and <bcp14>SHOULD</bcp14> prefer injecting a signing
capability over a raw seed.</t>

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

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

<t>This document requests registration of the following entry 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">xrpl</spanx></c>
      <c>XRP Ledger payments: XRP, issued currencies, MPTs</c>
      <c>This document</c>
</texttable>

<t>Contact: Maxime Dienger (<eref target="mailto:maximed@ripple.com">maximed@ripple.com</eref>)</t>

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

<t>This document requests registration of the following entry 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">xrpl</spanx></c>
      <c>One-time XRP, issued currency or MPT transfer</c>
      <c>This document</c>
</texttable>

</section>
<section anchor="problem-types"><name>Problem Types</name>

<t>This document registers no problem type URI. Every condition in
<xref target="errors"></xref> is reported with a type <xref target="I-D.httpauth-payment"/> already
establishes.</t>

</section>
</section>


  </middle>

  <back>


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

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

&RFC2119;
&RFC3339;
&RFC8174;
&RFC8259;
&RFC9457;
<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>
    <author initials="B." surname="Ryan" fullname="Brendan Ryan">
      <organization></organization>
    </author>
    <author initials="T." surname="Meagher" fullname="Tom Meagher">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<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>


    </references>

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

<reference anchor="XLS-33" target="https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0033-multi-purpose-tokens
">
  <front>
    <title>XLS-33: Multi-Purpose Tokens</title>
    <author >
      <organization>XRP Ledger Standards</organization>
    </author>
    <date year="2024"/>
  </front>
</reference>
<reference anchor="XRPL-PAYMENT" target="https://xrpl.org/docs/references/protocol/transactions/types/payment">
  <front>
    <title>Payment Transaction</title>
    <author >
      <organization>XRP Ledger Foundation</organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="XRPL-PARTIAL" target="https://xrpl.org/docs/concepts/payment-types/partial-payments">
  <front>
    <title>Partial Payments</title>
    <author >
      <organization>XRP Ledger Foundation</organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="XRPL-CURRENCY" target="https://xrpl.org/docs/references/protocol/data-types/currency-formats">
  <front>
    <title>Currency Formats</title>
    <author >
      <organization>XRP Ledger Foundation</organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="XRPL-TRUSTLINES" target="https://xrpl.org/docs/concepts/tokens/fungible-tokens">
  <front>
    <title>Trust Lines and Issuing</title>
    <author >
      <organization>XRP Ledger Foundation</organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="XRPL-RESERVES" target="https://xrpl.org/docs/concepts/accounts/reserves">
  <front>
    <title>Reserves</title>
    <author >
      <organization>XRP Ledger Foundation</organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="XRPL-FINALITY" target="https://xrpl.org/docs/concepts/transactions/finality-of-results">
  <front>
    <title>Finality of Results</title>
    <author >
      <organization>XRP Ledger Foundation</organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="XLS-39" target="https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0039-clawback
">
  <front>
    <title>XLS-39: Clawback</title>
    <author >
      <organization>XRP Ledger Standards</organization>
    </author>
    <date year="2023"/>
  </front>
</reference>
<reference anchor="XRPL-DEPOSITAUTH" target="https://xrpl.org/docs/concepts/accounts/depositauth">
  <front>
    <title>Deposit Authorization</title>
    <author >
      <organization>XRP Ledger Foundation</organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="XRPL-AMENDMENTS" target="https://xrpl.org/resources/known-amendments">
  <front>
    <title>Known Amendments</title>
    <author >
      <organization>XRP Ledger Foundation</organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="XRPL-TX-RESULTS" target="https://xrpl.org/docs/references/protocol/transactions/transaction-results">
  <front>
    <title>Transaction Results</title>
    <author >
      <organization>XRP Ledger Foundation</organization>
    </author>
    <date year="2026"/>
  </front>
</reference>


    </references>

</references>


<?line 743?>

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

<section anchor="challenge"><name>Challenge</name>

<t>The <spanx style="verb">402</spanx> carries the challenge in a <spanx style="verb">WWW-Authenticate</spanx> header, with
the request object base64url-encoded in the <spanx style="verb">request</spanx> parameter, as
<xref target="I-D.httpauth-payment"/> defines:</t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
WWW-Authenticate: Payment id="PgHorYGpATG5ifG-QKCa2OVPjOku...",
  realm="api.example.com", method="xrpl", intent="charge",
  request="eyJhbW91bnQiOiIxMDAwMDAwIiwiY3VycmVuY3kiOiJYUlAiLC...",
  expires="2026-08-21T10:32:00Z"
]]></sourcecode></figure>

<t>The <spanx style="verb">request</spanx> parameter decodes to the object this document
specifies in <xref target="request-schema"></xref>:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "1000000",
  "currency": "XRP",
  "methodDetails": {
    "network": "testnet",
    "reference": "3f7a1c02-9e44-4b1e-8a10-0c2b5d6e7f80"
  },
  "recipient": "rhewi79quXUDwcqjkpj4bXuw3cuHYC9fwv"
}
]]></sourcecode></figure>

<t>The header parameters and the request object are distinct: <spanx style="verb">method</spanx>,
<spanx style="verb">intent</spanx> and <spanx style="verb">expires</spanx> are the scheme's, while <spanx style="verb">amount</spanx>, <spanx style="verb">currency</spanx>
and <spanx style="verb">recipient</spanx> belong to the encoded request. The line breaks above
are for presentation.</t>

</section>
<section anchor="settled-transaction"><name>Settled Transaction</name>

<t>The Payment produced by the challenge above, as recorded on the XRP
Ledger testnet. <spanx style="verb">InvoiceID</spanx> is the derived binding; <spanx style="verb">SourceTag</spanx>
identifies the originating SDK.</t>

<figure><sourcecode type="json"><![CDATA[
{
  "TransactionType": "Payment",
  "Account": "rBkRQZrL4K8Rg2Bg2UzyQUSzYyNeBAK95Z",
  "Destination": "rhewi79quXUDwcqjkpj4bXuw3cuHYC9fwv",
  "Amount": "1000000",
  "Fee": "12",
  "Sequence": 19831823,
  "InvoiceID":
    "0B4F21A0C9A47D3351CD611AD7D41390AA64C22E7D61CFC78B52A814D0359CCB",
  "SourceTag": 593184257,
  "LastLedgerSequence": 19831855
}
]]></sourcecode></figure>

<t>Validated in ledger 19831837 with result <spanx style="verb">tesSUCCESS</spanx>.</t>

</section>
<section anchor="issued-currency-challenge"><name>Issued Currency Challenge</name>

<figure><sourcecode type="json"><![CDATA[
{
  "method": "xrpl",
  "intent": "charge",
  "amount": "10",
  "currency": "{\"currency\":\"USD\",\"issuer\":\"rwzRswng9sqR9Buw2T8FG18K4n8xdd1dCa\"}",
  "recipient": "rhewi79quXUDwcqjkpj4bXuw3cuHYC9fwv",
  "expires": "2026-08-21T10:32:00Z",
  "methodDetails": { "network": "testnet" }
}
]]></sourcecode></figure>

<t>Settling this requires a trustline to the issuer on the recipient
side and rippling enabled on the issuer. Absent either, the ledger
answers <spanx style="verb">tecPATH_DRY</spanx> and no payment occurs.</t>

</section>
</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA7V963rbxrLl/34KDPPD8flIWldbkpOcoXWJtWPZji5JnJNz
TJBsSohJgAFA0Yzl/SzzLPNkU6uqutEAqdjeO+MvsSUQaHRX13VVVbPT6Zgy
KSf2IPrl/HX0wo6ubR4d3sT5tY1O09KmZTTO8uj55eXr6HW8nOJCb17e0L/J
MC6TLDXxYJDbWx7ghT5qRtkwjac06iiPx2XnfT6bdIb8UWdjw9zavKAnDyL6
mQax11m+PIiSdJyZZJYfRGl2lo2Ssb7gMp8X5dbGxv7Glinmg2lS4OFyObN4
ZmRnlv5KSzPM0sKmxbw4iMbxpLDGxDTRLD8wUdSJZDpn8ftkaqOjxKa0UPog
oiHogbNu7ZqdxsnkIJry3aP/nSez2cR2h9mUP83y64PonK8Zk2b5lKZ5a/Ga
85PDrc3Nff1xe3vb/bi3+WTH/bi1667u7+w+wY+nnaPuTIjbSZjoSqwDfp9u
UOuBXHzwmRvTkofxSHkQ3ZTlrDh49GgUl3GZx8N3Nu8mthx3aTWPaLseyU6t
ncYjHqmiJv44iv4jfmejs+y9XTY+eJbTvsRpdL6M08ZHl9k0OrPx9Y2Sm+ZE
V7c2th4rMTBZvM5Np06HyxsbPdA1PxAK1FceXQxv7NT+SwTIabqd5vu/gADV
Wjobm8aAqQMG+eXFRWd7u74cvRadzSdl0nk9z2dZYYlG74iZ60v4Tl/tlnKd
lDfzAfjyEYTvhP/uXJQxET4fFY/K3NpH07gobf4Ib9nY2N7uTPk1M3lNp+TX
rF0es3mgFfy49XXuYFl47+vem7Pjl5f1xTnWvMzjtIiH9/MlVITbiuJRbseW
+Gdoi0ezPCuzYTah1fghaGkk/vSZjP5Z0z/J5jR91lgrPKfzP7887b1ozj8v
k3jiRKz4nMmTIhraWemn13GT5aEcT30e0T8568Or8/Pjl4dv6tM+nOcg35Ke
B/d91rTX0RzCotMf6pAdYei/afqX51cXly9OXx5fNGQcSj96kaS2iIjtotOi
mCfp9ReRX3j70XieXieDyRfx+ifnfX58cXz+U3PW57aw+a39Mi6Jh0N6W4kN
kKf/nhmenL7svTi9bDDGSZLGk6RcRtk4otmSLviyydaEcKyDdbJxJ5fB/v25
Qxvur9GQ+wfR4SReDEhz/+1acb8z1KH/HU247Uh/dPz61cXpZe/q8nl9IUeW
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
P0tx6l2YegAA

-->

</rfc>

