NewRPP402Pay live previewTry it
RPP402RPP402

Robinhood Payments Protocol

Programmable commerce for autonomous AI.

The open protocol that lets AI agents discover services, negotiate pricing, and exchange programmable value on Robinhood Chain.

  • 6 Primitives
  • 7 RFCs
  • MIT Licensed
  • 0 API Keys
  • Onchain Settlement
The lifecycle

RPP402 turns fragmented agent commerce into verifiable onchain settlement - automatically.

6
Primitives

Discovery to Receipt. Nothing else to learn.

1
Well-known file

One /.well-known/rpp.json and you're discoverable.

0
API keys

Public discovery, cryptographic settlement.

Open standard. RFC-first. MIT licensed.

Read RPP402-000 -Introduction
Commerce Session

One session, start to finish02

The Commerce Session state machine -five transitions from an empty session to a verifiable receipt, defined in RPP402-003.

  1. 1

    Agent opens a Session

    A Commerce Session is created against one Service's endpoint -the session host for this purchase.

    created
  2. 2

    Legs are attached

    The agent requests Quotes and attaches each as a leg. One call per provider -a Session can span several.

    quoting
  3. 3

    Payment is authorized

    A signed Payment Intent covers every leg's total in one asset -a stablecoin, or a tokenized security via an Agentic Account.

    intent_authorized
  4. 4

    Settlement executes

    The intent settles onchain on Robinhood Chain automatically -no separate "pay now" call.

    settling → settled
  5. 5

    Receipt is issued

    A signed, onchain-verifiable Receipt is returned -checkable independently of the issuing Service.

    receipt_issued
Architecture

Robinhood Chain is the settlement layer. RPP402 is the commerce layer.03

RPP402 doesn't reimplement chain settlement -it standardizes what happens above it: how an agent finds a service, prices a purchase, and proves it happened.

SDK

One call per primitive04

@rpp402/sdk mirrors the protocol exactly - discover() is RPP402-001, session.quote() through session.receipt() are RPP402-002 through RPP402-006. Every response is validated against the same JSON Schemas this code is generated against, at runtime, not just typed at compile time.

Three runtimes, one wire format

One conformance suite across all three, so they agree on the wire format byte-for-byte.

TypeScript
import { createClient } from "@rpp402/sdk";

const rpp402 = createClient({ agentWallet: "0xaaaa...1234" });

const service = await rpp402.discover("market-data.example");
const session = await rpp402.session.create(service);

const quote = await session.quote(service, {
  capability: "market-data.quote",
  params: { ticker: "NVDA" },
  settlementAsset: service.supported_assets[0],
});

const intent = await session.intent({
  asset: quote.price.asset,
  authorization: {
    type: "agentic_account_delegation",
    account_id: "aa_...",
    delegation_ref: "del_...",
  },
});

const settlement = await session.settle();
const receipt = await session.receipt();
Specification

Read the spec, not the marketing05

Every primitive is an RFC -Overview, Protocol, JSON Schema, Security, Errors, Reference Implementation. RPP402-000 also compares RPP402 directly to MPP and x402.

Browse all RFCs
RFCTitleStatus
RPP402-000IntroductionActive
RPP402-001DiscoveryActive
RPP402-002QuoteActive
RPP402-003Commerce SessionActive
RPP402-004Payment IntentActive
RPP402-005SettlementActive
RPP402-006ReceiptActive
terminal
$ rpp402 init market-data-service
✓ Created market-data-service

$ cd market-data-service && rpp402 dev
market-data-service serving svc_marketdataservice on :4021

$ rpp402 simulate --capability example.echo --params '{"ticker":"NVDA"}'
quote_00000001   0.001 USDG   expires in 60s
  from market-data-service (svc_marketdataservice)

$ rpp402 receipts verify receipt.json
✓ schema valid
✓ signature is well-formed hex (signer: 0x18b9...967b)
✓ settlement_ref.tx_hash is well-formed
  Structural checks only -cryptographic signature recovery
  needs RPP402-006's EIP-712 payload formalized first.

$ rpp402 doctor
✓ Node.js version        v22.18.0 (need >=20.9)
✓ Inside an RPP402 project  market-data-service
✓ Agent wallet configured
✓ Service reachable      http://localhost:4021/.well-known/rpp.json
✓ Discovery document valid
Developer experiencelive

One CLI, from init to verified receipt06

rpp402 scaffolds a real, zero-dependency service, simulates the protocol against it, and structurally verifies receipts -modeled on the Stripe CLI, Bun, and Wrangler. This transcript is real output from a real run, not a mockup.

Who it's for

RPP402 for

  • Discover services, request quotes, and settle purchases with one SDK call per primitive -no API keys to manage.

    Learn more
Roadmap

What v1 leaves out, on purpose08

Nineteen future RFCs, named and reasoned about, not designed ahead of real usage -grouped by theme, each with why it's deferred.

View full roadmap
  • RPP402-010Subscriptions
  • RPP402-011Streaming
  • RPP402-012Escrow
  • RPP402-013Wallet Delegation
  • RPP402-014Marketplace
  • RPP402-015Machine Reputation
  • RPP402-016Identity
  • RPP402-017Notifications
  • RPP402-018Invoices
  • RPP402-019Spend Limits
  • RPP402-020Analytics
  • RPP402-021Webhooks
  • RPP402-022Policy Engine
  • RPP402-023Usage Metering
  • RPP402-024Enterprise
  • RPP402-025Cross-chain
  • RPP402-026Recurring Billing
  • RPP402-027Treasury
  • RPP402-028MPP / x402 Interoperability
Token

RPP402 on Robinhood Chain

$RPP402 is the community token for the protocol, trading on Uniswap v3. The protocol settles in stablecoins and tokenized assets - the token is the ecosystem around it.

Price
-
Market cap
-
Liquidity
-
Contract · Robinhood Chain
0x94fef3763ed87051267dcd7ffc5df416b6c03a7e
Chart