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


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

    <author initials="J." surname="Moxey" fullname="Jake Moxey">
      <organization>Tempo Labs</organization>
      <address>
        <email>jake@tempo.xyz</email>
      </address>
    </author>
    <author initials="B." surname="Ryan" fullname="Brendan Ryan">
      <organization>Tempo Labs</organization>
      <address>
        <email>brendan@tempo.xyz</email>
      </address>
    </author>
    <author initials="T." surname="Meagher" fullname="Tom Meagher">
      <organization>Tempo Labs</organization>
      <address>
        <email>tom@tempo.xyz</email>
      </address>
    </author>

    <date year="2026" month="May" day="18"/>

    
    
    

    <abstract>


<?line 59?>

<t>This document defines the "charge" intent for the "tempo" payment method
in the Payment HTTP Authentication Scheme <xref target="I-D.httpauth-payment"/>. It
specifies how clients and servers exchange one-time TIP-20 token transfers
on the Tempo blockchain.</t>



    </abstract>



  </front>

  <middle>


<?line 66?>

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

<t>The <spanx style="verb">charge</spanx> intent represents a one-time payment of a specified amount.
The server may submit the signed transaction any time before the
challenge <spanx style="verb">expires</spanx> auth-param timestamp.</t>

<t>This specification defines the request schema, credential formats, and
settlement procedures for charge transactions on Tempo.</t>

<t>For non-zero charges, Tempo supports two submission modes:</t>

<t><list style="symbols">
  <t><spanx style="verb">pull</spanx>: The client signs a transaction and returns a
<spanx style="verb">type="transaction"</spanx> credential for the server to broadcast.</t>
  <t><spanx style="verb">push</spanx>: The client broadcasts the transaction and returns a
<spanx style="verb">type="hash"</spanx> credential for the server to verify onchain.</t>
</list></t>

<t>Servers <bcp14>SHOULD</bcp14> support <spanx style="verb">pull</spanx> mode. Servers <bcp14>MAY</bcp14> additionally support
<spanx style="verb">push</spanx> mode. Servers that do not support both non-zero modes for a
challenge <bcp14>MUST</bcp14> advertise the supported subset via
<spanx style="verb">methodDetails.supportedModes</spanx>.</t>

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

<t>The default Tempo charge flow uses <spanx style="verb">pull</spanx> mode:</t>

<figure><artwork><![CDATA[
   Client                        Server                     Tempo Network
      |                             |                             |
      |  (1) GET /api/resource      |                             |
      |-------------------------->  |                             |
      |                             |                             |
      |  (2) 402 Payment Required   |                             |
      |      intent="charge"        |                             |
      |<--------------------------  |                             |
      |                             |                             |
      |  (3) Sign transfer tx       |                             |
      |                             |                             |
      |  (4) Authorization: Payment |                             |
      |-------------------------->  |                             |
      |                             |  (5) Broadcast tx           |
      |                             |-------------------------->  |
      |                             |  (6) Transfer complete      |
      |                             |<--------------------------  |
      |  (7) 200 OK + Receipt       |                             |
      |<--------------------------  |                             |
      |                             |                             |
]]></artwork></figure>

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

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

<?line -18?>

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

<dl>
  <dt>TIP-20</dt>
  <dd>
    <t>Tempo's enshrined token standard, implemented as precompiles rather
than smart contracts. TIP-20 tokens use 6 decimal places and provide
<spanx style="verb">transfer</spanx>, <spanx style="verb">transferWithMemo</spanx>, <spanx style="verb">transferFrom</spanx>, and <spanx style="verb">approve</spanx> operations.</t>
  </dd>
  <dt>Tempo Transaction</dt>
  <dd>
    <t>An EIP-2718 transaction with type prefix <spanx style="verb">0x76</spanx>, supporting batched
calls, multiple signature types (secp256k1, P256, WebAuthn), 2D nonces,
and validity windows.</t>
  </dd>
  <dt>2D Nonce</dt>
  <dd>
    <t>Tempo's nonce system where each account has multiple independent nonce
lanes (<spanx style="verb">nonce_key</spanx>), enabling parallel transaction submission.</t>
  </dd>
  <dt>Fee Payer</dt>
  <dd>
    <t>An account that pays transaction fees on behalf of another account.
Tempo Transactions support fee payment via a separate signature
domain (<spanx style="verb">0x78</spanx>), allowing the server to pay for fees while the client
only signs the payment authorization.</t>
  </dd>
</dl>

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

<t>The <spanx style="verb">request</spanx> parameter in the <spanx style="verb">WWW-Authenticate</spanx> challenge contains a
base64url-encoded JSON object. The JSON <bcp14>MUST</bcp14> be serialized using JSON
Canonicalization Scheme (JCS) <xref target="RFC8785"/> before base64url encoding,
per <xref target="I-D.httpauth-payment"/>.</t>

<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 base units (stringified number)</c>
      <c><spanx style="verb">currency</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>TIP-20 token address (e.g., <spanx style="verb">"0x20c0..."</spanx>)</c>
      <c><spanx style="verb">recipient</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Recipient address</c>
      <c><spanx style="verb">description</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Human-readable payment description</c>
      <c><spanx style="verb">externalId</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Merchant's reference (order ID, invoice number, etc.)</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"/>.</t>

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

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">methodDetails.chainId</spanx></c>
      <c>number</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Tempo chain ID (default: 42431)</c>
      <c><spanx style="verb">methodDetails.feePayer</spanx></c>
      <c>boolean</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>If <spanx style="verb">true</spanx>, server pays transaction fees (default: <spanx style="verb">false</spanx>)</c>
      <c><spanx style="verb">methodDetails.memo</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>A <spanx style="verb">bytes32</spanx> hex value. When present, the client <bcp14>MUST</bcp14> use <spanx style="verb">transferWithMemo</spanx> instead of <spanx style="verb">transfer</spanx>.</c>
      <c><spanx style="verb">methodDetails.splits</spanx></c>
      <c>array</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Additional recipients that receive a portion of <spanx style="verb">amount</spanx>. See <xref target="split-payments"/>.</c>
      <c><spanx style="verb">methodDetails.supportedModes</spanx></c>
      <c>array</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Supported non-zero submission modes. Values are <spanx style="verb">"pull"</spanx> and/or <spanx style="verb">"push"</spanx>.</c>
</texttable>

</section>
<section anchor="submission-modes"><name>Submission Modes</name>

<t>The <spanx style="verb">supportedModes</spanx> field allows a server to advertise which non-zero
charge submission modes it supports for a specific challenge.</t>

<t><list style="symbols">
  <t><spanx style="verb">pull</spanx> indicates that the client creates a <spanx style="verb">type="transaction"</spanx>
credential containing a signed Tempo Transaction for the server to
broadcast.</t>
  <t><spanx style="verb">push</spanx> indicates that the client creates a <spanx style="verb">type="hash"</spanx> credential
after broadcasting the transaction itself.</t>
</list></t>

<t>If <spanx style="verb">supportedModes</spanx> is present, it <bcp14>MUST</bcp14> contain at least one of <spanx style="verb">pull</spanx>
or <spanx style="verb">push</spanx>, and clients <bcp14>MUST</bcp14> choose one of the advertised modes.</t>

<t>If <spanx style="verb">supportedModes</spanx> is omitted, clients <bcp14>MAY</bcp14> assume both <spanx style="verb">pull</spanx> and
<spanx style="verb">push</spanx> are supported for that challenge for backwards compatibility with
version 00 implementations. Servers <bcp14>MUST</bcp14> omit <spanx style="verb">supportedModes</spanx> only when
they support both non-zero modes for the challenge. A server that
supports only <spanx style="verb">pull</spanx> or only <spanx style="verb">push</spanx> for a challenge <bcp14>MUST</bcp14> include
<spanx style="verb">supportedModes</spanx> explicitly and omit the unsupported mode.</t>

<t>For zero-amount charges, mode negotiation does not apply. Clients use a
<spanx style="verb">type="proof"</spanx> credential regardless of <spanx style="verb">supportedModes</spanx>.</t>

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

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "1000000",
  "currency": "0x20c0000000000000000000000000000000000000",
  "recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00",
  "methodDetails": {
    "chainId": 42431,
    "feePayer": true,
    "supportedModes": ["pull"]
  }
}
]]></sourcecode></figure>

<t>The client fulfills this by signing a Tempo Transaction with
<spanx style="verb">transfer(recipient, amount)</spanx> or <spanx style="verb">transferWithMemo(recipient, amount, memo)</spanx>
on the specified <spanx style="verb">currency</spanx> (token address),
with <spanx style="verb">validBefore</spanx> no later than the challenge <spanx style="verb">expires</spanx> auth-param. The client <bcp14>MAY</bcp14> use a dedicated
<spanx style="verb">nonceKey</spanx> (2D nonce lane) for payment transactions to avoid blocking
other account activity if the transaction is not immediately settled.</t>

<t>If <spanx style="verb">methodDetails.feePayer</spanx> is <spanx style="verb">true</spanx>, the client signs with
<spanx style="verb">fee_payer_signature</spanx> set to <spanx style="verb">0x00</spanx> and <spanx style="verb">fee_token</spanx> empty, allowing the
server to sponsor fees. If <spanx style="verb">feePayer</spanx> is <spanx style="verb">false</spanx> or omitted, the client
<bcp14>MUST</bcp14> set <spanx style="verb">fee_token</spanx> and pay fees themselves.</t>

</section>
<section anchor="split-payments"><name>Split Payments</name>

<t>The <spanx style="verb">splits</spanx> field enables a single charge to distribute payment across
multiple recipients atomically. This is useful for platform fees, revenue
sharing, and marketplace payouts.</t>

<section anchor="semantics"><name>Semantics</name>

<t>The top-level <spanx style="verb">amount</spanx> represents the total amount the client pays. Each
entry in <spanx style="verb">splits</spanx> specifies a recipient and the amount they receive. The
primary recipient (the top-level <spanx style="verb">recipient</spanx>) receives the remainder:
<spanx style="verb">amount</spanx> minus the sum of all split amounts.</t>

</section>
<section anchor="split-entry-schema"><name>Split Entry Schema</name>

<t>Each entry in the <spanx style="verb">splits</spanx> array is a JSON object:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">amount</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Amount in base units for this recipient</c>
      <c><spanx style="verb">memo</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>A <spanx style="verb">bytes32</spanx> hex value for <spanx style="verb">transferWithMemo</spanx></c>
      <c><spanx style="verb">recipient</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Recipient address</c>
</texttable>

<t>The <spanx style="verb">amount</spanx> field in each split entry <bcp14>MUST</bcp14> be a base-10 integer string
with no sign, decimal point, exponent, or surrounding whitespace. Each
<spanx style="verb">splits[i].amount</spanx> <bcp14>MUST</bcp14> be greater than zero. The syntax and encoding
requirements for <spanx style="verb">splits[i].memo</spanx> are identical to those for
<spanx style="verb">methodDetails.memo</spanx>, but apply only to that split transfer. Address
fields are compared by decoded 20-byte value, not by string form.</t>

</section>
<section anchor="constraints"><name>Constraints</name>

<t>Servers <bcp14>MUST NOT</bcp14> generate a request where the sum of <spanx style="verb">splits[].amount</spanx>
values is greater than or equal to <spanx style="verb">amount</spanx>. Clients <bcp14>MUST</bcp14> reject any
request that violates this constraint. This ensures the primary
recipient always receives a non-zero remainder, avoiding the need to
define zero-value transfer semantics.</t>

<t>Additional constraints:</t>

<t><list style="symbols">
  <t>If present, <spanx style="verb">splits</spanx> <bcp14>MUST</bcp14> contain at least 1 entry. Servers
<bcp14>SHOULD</bcp14> limit splits to 10 entries to keep gas usage within a
single block's budget (~29,000 gas per additional TIP-20
transfer). Servers <bcp14>MAY</bcp14> reject requests exceeding their supported
split count.</t>
  <t>All transfers <bcp14>MUST</bcp14> target the same <spanx style="verb">currency</spanx> token address.</t>
</list></t>

</section>
<section anchor="ordering"><name>Ordering</name>

<t>The order of entries in <spanx style="verb">splits</spanx> is not significant for verification.
Clients <bcp14>SHOULD</bcp14> emit calls in array order. Servers <bcp14>MUST</bcp14> verify that the
required payment effects are present regardless of call ordering.</t>

</section>
<section anchor="example"><name>Example</name>

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "1000000",
  "currency": "0x20c0000000000000000000000000000000000000",
  "recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00",
  "methodDetails": {
    "chainId": 42431,
    "feePayer": true,
    "splits": [
      {
        "amount": "50000",
        "recipient": "0xA1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2"
      },
      {
        "amount": "10000",
        "memo": "0x00000000000000000000000000000000000000000000000000000000deadbeef",
        "recipient": "0xC4D5E6F7A8B9C4D5E6F7A8B9C4D5E6F7A8B9C4D5"
      }
    ]
  }
}
]]></sourcecode></figure>

<t>This requests a total payment of 1.00 pathUSD (1,000,000 base units).
The platform receives 0.05 pathUSD, the affiliate receives 0.01 pathUSD
(with a memo), and the primary recipient receives the remaining
0.94 pathUSD (940,000 base units).</t>

</section>
<section anchor="client-behavior"><name>Client Behavior</name>

<t>When <spanx style="verb">splits</spanx> is present, the client <bcp14>MUST</bcp14> produce a transaction whose
on-chain effects include the following <spanx style="verb">Transfer</spanx> or <spanx style="verb">TransferWithMemo</spanx>
events on the <spanx style="verb">currency</spanx> token address:</t>

<t><list style="numbers" type="1">
  <t>The primary <spanx style="verb">recipient</spanx> receives <spanx style="verb">amount - sum(splits[].amount)</spanx>.</t>
  <t>Each <spanx style="verb">splits[i].recipient</spanx> receives <spanx style="verb">splits[i].amount</spanx>. If
<spanx style="verb">splits[i].memo</spanx> is present, the corresponding transfer <bcp14>MUST</bcp14> use
<spanx style="verb">transferWithMemo</spanx>.</t>
</list></t>

<t>The top-level <spanx style="verb">methodDetails.memo</spanx>, if present, applies to the primary
transfer.</t>

<t>Clients <bcp14>MAY</bcp14> achieve these effects using any valid transaction structure,
including batched calls, smart contract wallet invocations, or
intermediary operations such as token swaps — provided all required
transfer events are emitted atomically.</t>

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

<t>The credential in the <spanx style="verb">Authorization</spanx> header contains a base64url-encoded
JSON object per <xref target="I-D.httpauth-payment"/>.</t>

<section anchor="credential-structure"><name>Credential Structure</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">challenge</spanx></c>
      <c>object</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Echo of the challenge from the server</c>
      <c><spanx style="verb">payload</spanx></c>
      <c>object</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Tempo-specific payload object</c>
      <c><spanx style="verb">source</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14></c>
      <c>Payer identifier as a DID (e.g., <spanx style="verb">did:pkh:eip155:42431:0x...</spanx>)</c>
</texttable>

<t>The <spanx style="verb">source</spanx> field, if present, <bcp14>SHOULD</bcp14> use the <spanx style="verb">did:pkh</spanx> method with the
chain ID applicable to the challenge and the payer's Ethereum address.</t>

</section>
<section anchor="transaction-payload-typetransaction"><name>Transaction Payload (type="transaction")</name>

<t>When <spanx style="verb">type</spanx> is <spanx style="verb">"transaction"</spanx>, <spanx style="verb">signature</spanx> contains the complete signed
Tempo Transaction (type 0x76) serialized as RLP and hex-encoded with
<spanx style="verb">0x</spanx> prefix. The transaction <bcp14>MUST</bcp14> authorize payment in the requested
TIP-20 token sufficient to satisfy the challenge parameters, using one
or more <spanx style="verb">transfer</spanx> and/or <spanx style="verb">transferWithMemo</spanx> calls. When <spanx style="verb">splits</spanx> are
present, the transaction <bcp14>MUST</bcp14> include transfers for each split entry
(see <xref target="split-payments"/>). This payload type corresponds to <spanx style="verb">pull</spanx> mode.</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">signature</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Hex-encoded RLP-serialized signed transaction</c>
      <c><spanx style="verb">type</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c><spanx style="verb">"transaction"</spanx></c>
</texttable>

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

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "kM9xPqWvT2nJrHsY4aDfEb",
    "realm": "api.example.com",
    "method": "tempo",
    "intent": "charge",
    "request": "eyJ...",
    "expires": "2025-02-05T12:05:00Z"
  },
  "payload": {
    "signature": "0x76f901...signed transaction bytes...",
    "type": "transaction"
  },
  "source": "did:pkh:eip155:42431:0x1234567890abcdef1234567890abcdef12345678"
}
]]></sourcecode></figure>

</section>
<section anchor="hash-payload-typehash"><name>Hash Payload (type="hash")</name>

<t>When <spanx style="verb">type</spanx> is <spanx style="verb">"hash"</spanx>, the client has already broadcast the transaction
to the Tempo network. The <spanx style="verb">hash</spanx> field contains the transaction hash for
the server to verify onchain. This payload type corresponds to <spanx style="verb">push</spanx>
mode.</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">hash</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>Transaction hash with <spanx style="verb">0x</spanx> prefix</c>
      <c><spanx style="verb">type</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c><spanx style="verb">"hash"</spanx></c>
</texttable>

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

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "kM9xPqWvT2nJrHsY4aDfEb",
    "realm": "api.example.com",
    "method": "tempo",
    "intent": "charge",
    "request": "eyJ...",
    "expires": "2025-02-05T12:05:00Z"
  },
  "payload": {
    "hash": "0x1a2b3c4d5e6f7890abcdef1234567890abcdef1234567890abcdef1234567890",
    "type": "hash"
  },
  "source": "did:pkh:eip155:42431:0x1234567890abcdef1234567890abcdef12345678"
}
]]></sourcecode></figure>

</section>
<section anchor="proof-payload"><name>Proof Payload (type="proof")</name>

<t>When <spanx style="verb">amount</spanx> is <spanx style="verb">"0"</spanx>, no on-chain transfer is required. Instead of
broadcasting a transaction, the client signs an EIP-712 typed-data
message binding the proof to the challenge identifier. This payload
type is used exclusively for zero-amount charges: clients <bcp14>MUST</bcp14> use
<spanx style="verb">type="proof"</spanx> when <spanx style="verb">amount</spanx> is <spanx style="verb">"0"</spanx>, and <bcp14>MUST NOT</bcp14> use <spanx style="verb">type="proof"</spanx>
when <spanx style="verb">amount</spanx> is non-zero. The <spanx style="verb">supportedModes</spanx> field does not apply
to zero-amount charges.</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">signature</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c>EIP-712 signature with <spanx style="verb">0x</spanx> prefix</c>
      <c><spanx style="verb">type</spanx></c>
      <c>string</c>
      <c><bcp14>REQUIRED</bcp14></c>
      <c><spanx style="verb">"proof"</spanx></c>
</texttable>

<t>The <spanx style="verb">source</spanx> field <bcp14>MUST</bcp14> be present on proof credentials and <bcp14>MUST</bcp14> be a
<spanx style="verb">did:pkh:eip155:&lt;chainId&gt;:&lt;address&gt;</spanx> DID identifying the signer.</t>

<section anchor="eip-712-domain-and-types"><name>EIP-712 Domain and Types</name>

<t>The typed-data domain and types are:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "domain": {
    "name": "MPP",
    "version": "1",
    "chainId": <challenge methodDetails.chainId>
  },
  "types": {
    "Proof": [
      { "name": "challengeId", "type": "string" }
    ]
  },
  "primaryType": "Proof",
  "message": {
    "challengeId": "<challenge.id>"
  }
}
]]></sourcecode></figure>

<t>The <spanx style="verb">challengeId</spanx> in the message <bcp14>MUST</bcp14> be the <spanx style="verb">id</spanx> from the challenge
that was issued to the client. This binds the signature to exactly one
challenge, preventing cross-challenge replay.</t>

</section>
<section anchor="proof-verification"><name>Proof Verification</name>

<t>Servers <bcp14>MUST</bcp14> verify proof credentials as follows:</t>

<t><list style="numbers" type="1">
  <t>Verify <spanx style="verb">credential.source</spanx> is present and parses as
<spanx style="verb">did:pkh:eip155:&lt;chainId&gt;:&lt;address&gt;</spanx></t>
  <t>Verify the chain ID from <spanx style="verb">source</spanx> matches
<spanx style="verb">methodDetails.chainId</spanx> from the challenge</t>
  <t>Recover the signer from <spanx style="verb">payload.signature</spanx> using the EIP-712
domain, types, and message described above</t>
  <t>Verify the recovered signer matches the address in <spanx style="verb">source</spanx></t>
</list></t>

</section>
<section anchor="proof-receipt"><name>Proof Receipt</name>

<t>Upon successful verification, servers return a receipt per
<xref target="I-D.httpauth-payment"/> with <spanx style="verb">reference</spanx> set to the challenge <spanx style="verb">id</spanx>
(since no on-chain transaction exists).</t>

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

<figure><sourcecode type="json"><![CDATA[
{
  "challenge": {
    "id": "kM9xPqWvT2nJrHsY4aDfEb",
    "realm": "api.example.com",
    "method": "tempo",
    "intent": "charge",
    "request": "eyJ...",
    "expires": "2025-02-05T12:05:00Z"
  },
  "payload": {
    "signature": "0xabcdef1234567890...",
    "type": "proof"
  },
  "source": "did:pkh:eip155:42431:0x1234567890abcdef1234567890abcdef12345678"
}
]]></sourcecode></figure>

</section>
</section>
</section>
<section anchor="fee-payment"><name>Fee Payment</name>

<t>When a request includes <spanx style="verb">feePayer: true</spanx>, the server commits to paying
transaction fees on behalf of the client.</t>

<section anchor="server-paid-fees"><name>Server-Paid Fees</name>

<t>When <spanx style="verb">feePayer: true</spanx>:</t>

<t><list style="numbers" type="1">
  <t><strong>Client signs with placeholder</strong>: The client signs the Tempo Transaction
with <spanx style="verb">fee_payer_signature</spanx> set to a placeholder value (<spanx style="verb">0x00</spanx>) and
<spanx style="verb">fee_token</spanx> left empty. The client uses signature domain <spanx style="verb">0x76</spanx>.</t>
  <t><strong>Server receives credential</strong>: The server extracts the client-signed
transaction from the credential payload.</t>
  <t><strong>Server adds fee payment signature</strong>: The server selects a <spanx style="verb">fee_token</spanx> (any
USD-denominated TIP-20 stablecoin) and signs the transaction using
signature domain <spanx style="verb">0x78</spanx>. This signature commits to the transaction
including the <spanx style="verb">fee_token</spanx> and client's address.</t>
  <t><strong>Server broadcasts</strong>: The final transaction contains both signatures:  <list style="symbols">
      <t>Client's signature (authorizing the payment)</t>
      <t>Server's <spanx style="verb">fee_payer_signature</spanx> (committing to pay fees)</t>
    </list></t>
</list></t>

</section>
<section anchor="client-paid-fees"><name>Client-Paid Fees</name>

<t>When <spanx style="verb">feePayer: false</spanx> or omitted, the client <bcp14>MUST</bcp14> set <spanx style="verb">fee_token</spanx> to a
valid USD TIP-20 token address and pay fees themselves. The server
broadcasts the transaction as-is without adding a fee payer signature.</t>

</section>
<section anchor="server-requirements"><name>Server Requirements</name>

<t>When acting as fee payer, servers:</t>

<t><list style="symbols">
  <t><bcp14>MUST</bcp14> maintain sufficient balance of a USD TIP-20 token to pay
transaction fees</t>
  <t><bcp14>MAY</bcp14> use any USD-denominated TIP-20 token with sufficient AMM
liquidity as the fee token</t>
  <t><bcp14>MAY</bcp14> recover fee costs through pricing or other business logic</t>
</list></t>

</section>
<section anchor="client-requirements"><name>Client Requirements</name>

<t><list style="symbols">
  <t>When <spanx style="verb">feePayer: true</spanx>: Clients <bcp14>MUST</bcp14> sign with <spanx style="verb">fee_payer_signature</spanx> set
to <spanx style="verb">0x00</spanx> and <spanx style="verb">fee_token</spanx> empty or <spanx style="verb">0x80</spanx> (RLP null)</t>
  <t>When <spanx style="verb">feePayer: false</spanx> or omitted: Clients <bcp14>MUST</bcp14> set <spanx style="verb">fee_token</spanx> to a
valid USD TIP-20 token and have sufficient balance to pay fees</t>
</list></t>

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

<t>For <spanx style="verb">intent="charge"</spanx> fulfilled via transaction, the client signs a
transaction containing one or more <spanx style="verb">transfer</spanx> or <spanx style="verb">transferWithMemo</spanx> calls.
When <spanx style="verb">splits</spanx> are present, the transaction contains multiple calls (see
<xref target="split-payments"/>). If <spanx style="verb">feePayer: true</spanx>, the server adds its fee payer
signature before broadcasting:</t>

<figure><artwork><![CDATA[
   Client                           Server                        Tempo Network
      |                                |                                |
      |  (1) Authorization:            |                                |
      |      Payment <credential>      |                                |
      |------------------------------->|                                |
      |                                |                                |
      |                                |  (2) If feePayer: true,        |
      |                                |      add fee payment signature |
      |                                |                                |
      |                                |  (3) eth_sendRawTxSync         |
      |                                |------------------------------->|
      |                                |                                |
      |                                |  (4) Transfer executed         |
      |                                |      (~500ms finality)         |
      |                                |<-------------------------------|
      |                                |                                |
      |  (5) 200 OK                    |                                |
      |      Payment-Receipt: <base64url-receipt> |                    |
      |<-------------------------------|                                |
      |                                |                                |
]]></artwork></figure>

<t><list style="numbers" type="1">
  <t>Client submits credential containing signed <spanx style="verb">transfer</spanx> or <spanx style="verb">transferWithMemo</spanx> transaction</t>
  <t>If <spanx style="verb">feePayer: true</spanx>, server adds fee sponsorship (signs with <spanx style="verb">0x78</spanx> domain)</t>
  <t>Server broadcasts transaction to Tempo</t>
  <t>Transaction included in block with immediate finality (~500ms)</t>
  <t>Server returns a receipt whose <spanx style="verb">reference</spanx> field is the transaction digest</t>
</list></t>

<section anchor="hash-settlement"><name>Hash Settlement</name>

<t>For credentials with <spanx style="verb">type="hash"</spanx>, the client has already broadcast
the transaction. The server verifies the transaction onchain:</t>

<figure><artwork><![CDATA[
   Client                        Server                     Tempo Network
      |                             |                             |
      |  (1) Broadcast tx           |                             |
      |------------------------------------------------------>    |
      |                             |                             |
      |  (2) Transaction confirmed  |                             |
      |<------------------------------------------------------    |
      |                             |                             |
      |  (3) Authorization:         |                             |
      |      Payment <credential>   |                             |
      |      (with txHash)          |                             |
      |-------------------------->  |                             |
      |                             |                             |
      |                             |  (4) eth_getTransactionReceipt
      |                             |-------------------------->  |
      |                             |                             |
      |                             |  (5) Receipt returned       |
      |                             |<--------------------------  |
      |                             |                             |
      |                             |  (6) Verify receipt         |
      |                             |                             |
      |  (7) 200 OK                 |                             |
      |      Payment-Receipt:       |                             |
      |      <base64url-receipt>    |                             |
      |<--------------------------  |                             |
      |                             |                             |
]]></artwork></figure>

<t><strong>Limitations:</strong></t>

<t><list style="symbols">
  <t>Clients <bcp14>MUST NOT</bcp14> use <spanx style="verb">type="hash"</spanx> when <spanx style="verb">methodDetails.feePayer</spanx> is
<spanx style="verb">true</spanx>. Servers <bcp14>MUST</bcp14> reject such credentials.</t>
  <t>If <spanx style="verb">methodDetails.supportedModes</spanx> is present and does not include
<spanx style="verb">push</spanx>, clients <bcp14>MUST NOT</bcp14> use <spanx style="verb">type="hash"</spanx> credentials. Servers <bcp14>MUST</bcp14>
reject such credentials.</t>
  <t>Server cannot modify or enhance the transaction.</t>
</list></t>

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

<t>Before broadcasting a transaction credential, servers <bcp14>MUST</bcp14> verify:</t>

<t><list style="numbers" type="1">
  <t>Deserialize the RLP-encoded transaction from <spanx style="verb">payload.signature</spanx></t>
  <t>Verify the transaction contains <spanx style="verb">transfer</spanx> or <spanx style="verb">transferWithMemo</spanx>
calls on the <spanx style="verb">currency</spanx> token address</t>
  <t>Verify the <spanx style="verb">amount</spanx> matches the challenge request amount</t>
  <t>Verify the <spanx style="verb">recipient</spanx> matches the challenge request recipient</t>
  <t>If <spanx style="verb">methodDetails.memo</spanx> is present, verify the transaction uses
<spanx style="verb">transferWithMemo</spanx> with the matching memo value</t>
  <t>If <spanx style="verb">methodDetails.splits</spanx> is present, verify the transaction
includes transfers satisfying each split entry: the primary
recipient receives <spanx style="verb">amount - sum(splits[].amount)</spanx>, each split
recipient receives its specified amount, and any required memo
values are present</t>
  <t>If <spanx style="verb">methodDetails.supportedModes</spanx> is present, verify it includes
<spanx style="verb">pull</spanx></t>
</list></t>

<t>Servers <bcp14>MAY</bcp14> impose additional structural requirements (such as
exact call count or ordering) as local policy before broadcasting.</t>

</section>
<section anchor="hash-verification"><name>Hash Verification</name>

<t>For hash credentials, servers <bcp14>MUST</bcp14> fetch the transaction receipt and
verify that it indicates successful execution. Servers <bcp14>MUST</bcp14> verify
that the receipt contains <spanx style="verb">Transfer</spanx> and/or <spanx style="verb">TransferWithMemo</spanx> event
logs emitted by the <spanx style="verb">currency</spanx> token address whose payment effects
satisfy the challenge parameters, including the primary recipient
amount, any split amounts, and any required memo values.</t>

<t>If <spanx style="verb">methodDetails.supportedModes</spanx> is present, servers <bcp14>MUST</bcp14> verify it
includes <spanx style="verb">push</spanx> before accepting a hash credential.</t>

<t>Servers <bcp14>MAY</bcp14> additionally inspect the transaction call data as a
local-policy check, but call-data decoding is not required for
conformance.</t>

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

<t>Upon successful settlement, servers <bcp14>MUST</bcp14> return a <spanx style="verb">Payment-Receipt</spanx> header
per <xref target="I-D.httpauth-payment"/>. Servers <bcp14>MUST NOT</bcp14> include a
<spanx style="verb">Payment-Receipt</spanx> header on error responses; failures are communicated via
HTTP status codes and Problem Details.</t>

<t>The receipt payload for Tempo charge:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">method</spanx></c>
      <c>string</c>
      <c><spanx style="verb">"tempo"</spanx></c>
      <c><spanx style="verb">reference</spanx></c>
      <c>string</c>
      <c>Transaction hash of the settlement transaction</c>
      <c><spanx style="verb">status</spanx></c>
      <c>string</c>
      <c><spanx style="verb">"success"</spanx></c>
      <c><spanx style="verb">timestamp</spanx></c>
      <c>string</c>
      <c><xref target="RFC3339"/> settlement time</c>
      <c><spanx style="verb">externalId</spanx></c>
      <c>string</c>
      <c><bcp14>OPTIONAL</bcp14>. Echoed from the challenge request</c>
</texttable>

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

<section anchor="transaction-replay"><name>Transaction Replay</name>

<t>Tempo Transactions include chain ID, nonce, and optional <spanx style="verb">validBefore</spanx>/
<spanx style="verb">validAfter</spanx> timestamps that prevent replay attacks:</t>

<t><list style="symbols">
  <t>Chain ID binding prevents cross-chain replay</t>
  <t>Nonce consumption prevents same-chain replay</t>
  <t>Validity windows limit temporal replay windows</t>
</list></t>

</section>
<section anchor="amount-verification"><name>Amount Verification</name>

<t>Clients <bcp14>MUST</bcp14> parse and verify the <spanx style="verb">request</spanx> payload before signing:</t>

<t><list style="numbers" type="1">
  <t>Verify <spanx style="verb">amount</spanx> is reasonable for the service</t>
  <t>Verify <spanx style="verb">currency</spanx> is the expected token address</t>
  <t>Verify <spanx style="verb">recipient</spanx> is controlled by the expected party</t>
  <t>If <spanx style="verb">splits</spanx> is present, verify the sum of split amounts is strictly
less than <spanx style="verb">amount</spanx> and that all split recipients are expected</t>
</list></t>

</section>
<section anchor="split-payment-risks"><name>Split Payment Risks</name>

<t>When <spanx style="verb">splits</spanx> are present, additional risks apply:</t>

<t><strong>Recipient Transparency</strong>: Where a human approval step exists, clients
<bcp14>SHOULD</bcp14> present each split recipient and amount so the user can verify
the payment distribution. Clients <bcp14>SHOULD</bcp14> highlight when the primary
recipient receives a small remainder relative to the total <spanx style="verb">amount</spanx>.</t>

<t><strong>Gas Overhead</strong>: Each additional split adds approximately 29,000 gas
for the TIP-20 precompile transfer execution. A charge with 10 splits
adds approximately 290,000 gas beyond a single-transfer charge. Servers
sponsoring fees via <spanx style="verb">feePayer: true</spanx> <bcp14>MUST</bcp14> budget for the increased gas
limit.</t>

<t><strong>Split Count Bound</strong>: Servers <bcp14>SHOULD</bcp14> limit <spanx style="verb">splits</spanx> to 10 entries.
See <xref target="split-payments"/> for rationale.</t>

</section>
<section anchor="server-paid-fees-1"><name>Server-Paid Fees</name>

<t>Servers acting as fee payers accept financial risk in exchange for
providing a seamless payment experience.</t>

<t><strong>Denial of Service</strong>: Malicious clients could submit valid-looking
credentials that fail onchain, causing the server to pay fees without
receiving payment. Servers <bcp14>SHOULD</bcp14> implement rate limiting and <bcp14>MAY</bcp14> require
client authentication before accepting payment credentials.</t>

<t><strong>Fee Token Exhaustion</strong>: Servers <bcp14>MUST</bcp14> monitor their fee token balance
and reject new payment requests when balance is insufficient.</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">tempo</spanx></c>
      <c>Tempo blockchain TIP-20 token transfer</c>
      <c>This document</c>
</texttable>

<t>Contact: Tempo Labs (<eref target="mailto:contact@tempo.xyz">contact@tempo.xyz</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">tempo</spanx></c>
      <c>One-time TIP-20 transfer</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;
&RFC4648;
&RFC8174;
&RFC8259;
&RFC8785;
<reference anchor="I-D.httpauth-payment" target="https://datatracker.ietf.org/doc/draft-ryan-httpauth-payment/">
  <front>
    <title>The 'Payment' HTTP Authentication Scheme</title>
    <author initials="J." surname="Moxey" fullname="Jake Moxey">
      <organization></organization>
    </author>
    <date year="2026" month="January"/>
  </front>
</reference>


    </references>

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

<reference anchor="EIP-2718" target="https://eips.ethereum.org/EIPS/eip-2718">
  <front>
    <title>Typed Transaction Envelope</title>
    <author initials="M." surname="Zoltu" fullname="Micah Zoltu">
      <organization></organization>
    </author>
    <date year="2020" month="October"/>
  </front>
</reference>
<reference anchor="EIP-55" target="https://eips.ethereum.org/EIPS/eip-55">
  <front>
    <title>Mixed-case checksum address encoding</title>
    <author initials="V." surname="Buterin" fullname="Vitalik Buterin">
      <organization></organization>
    </author>
    <date year="2016" month="January"/>
  </front>
</reference>
<reference anchor="TEMPO-TX-SPEC" target="https://docs.tempo.xyz/protocol/transactions/spec-tempo-transaction">
  <front>
    <title>Tempo Transaction Specification</title>
    <author >
      <organization>Tempo Labs</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

</references>


<?line 766?>

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

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

tempo-charge-credential = "Payment" 1*SP base64url-nopad

; Base64url encoding without padding per RFC 4648 Section 5
base64url-nopad = 1*( ALPHA / DIGIT / "-" / "_" )
]]></sourcecode></figure>

</section>
<section anchor="example-1"><name>Example</name>

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

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
WWW-Authenticate: Payment id="kM9xPqWvT2nJrHsY4aDfEb",
  realm="api.example.com",
  method="tempo",
  intent="charge",
  request="eyJhbW91bnQiOiIxMDAwMDAwIiwiY3VycmVuY3kiOiIweDIwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCJyZWNpcGllbnQiOiIweDc0MmQzNUNjNjYzNEMwNTMyOTI1YTNiODQ0QmM5ZTc1OTVmOGZFMDAiLCJtZXRob2REZXRhaWxzIjp7ImNoYWluSWQiOjQyNDMxLCJzdXBwb3J0ZWRNb2RlcyI6WyJwdWxsIl19fQ",
  expires="2025-01-06T12:00:00Z"
Cache-Control: no-store
]]></sourcecode></figure>

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

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "1000000",
  "currency": "0x20c0000000000000000000000000000000000000",
  "recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00",
  "methodDetails": {
    "chainId": 42431,
    "supportedModes": ["pull"]
  }
}
]]></sourcecode></figure>

<t>This requests a transfer of 1.00 pathUSD (1000000 base units).</t>

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

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

</section>
<section anchor="split-payment-example"><name>Split Payment Example</name>

<t><strong>Challenge with splits:</strong></t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 402 Payment Required
WWW-Authenticate: Payment id="sP1itPaym3ntEx4mple",
  realm="marketplace.example.com",
  method="tempo",
  intent="charge",
  request="eyJhbW91bnQiOiIxMDAwMDAwIiwiY3VycmVuY3kiOiIweDIwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCJtZXRob2REZXRhaWxzIjp7ImNoYWluSWQiOjQyNDMxLCJmZWVQYXllciI6dHJ1ZSwic3BsaXRzIjpbeyJhbW91bnQiOiI1MDAwMCIsInJlY2lwaWVudCI6IjB4QTFCMkMzRDRFNUY2QTFCMkMzRDRFNUY2QTFCMkMzRDRFNUY2QTFCMiJ9XX0sInJlY2lwaWVudCI6IjB4NzQyZDM1Q2M2NjM0QzA1MzI5MjVhM2I4NDRCYzllNzU5NWY4ZkUwMCJ9",
  expires="2025-06-01T12:00:00Z"
Cache-Control: no-store
]]></sourcecode></figure>

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

<figure><sourcecode type="json"><![CDATA[
{
  "amount": "1000000",
  "currency": "0x20c0000000000000000000000000000000000000",
  "recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00",
  "methodDetails": {
    "chainId": 42431,
    "feePayer": true,
    "splits": [
      {
        "amount": "50000",
        "recipient": "0xA1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2"
      }
    ]
  }
}
]]></sourcecode></figure>

<t>This requests a total payment of 1.00 pathUSD. The platform receives
0.05 pathUSD and the merchant receives 0.95 pathUSD. The resulting
transaction must emit the following transfer events:</t>

<t><list style="numbers" type="1">
  <t>950,000 to <spanx style="verb">0x742d...fE00</spanx> — merchant receives remainder</t>
  <t>50,000 to <spanx style="verb">0xA1B2...A1B2</spanx> — platform fee</t>
</list></t>

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

<t>The authors thank the Tempo community for their feedback on this
specification.</t>

</section>


  </back>

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

-->

</rfc>

