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.

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-000IntroductionDraft
RPP402-001DiscoveryDraft
RPP402-002QuoteDraft
RPP402-003Commerce SessionDraft
RPP402-004Payment IntentDraft
RPP402-005SettlementDraft
RPP402-006ReceiptDraft
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