Skip to content

Profile Model

Profiles make MPCP concrete for specific rails and asset systems without changing the core protocol.

What a profile is

A deployment profile is a named constraint set that makes MPCP concrete for a specific payment environment without changing the base protocol.


What stays in the base protocol

The following remain fixed in MPCP and are not profile-specific:

  • PolicyGrant — Fleet policy authorization
  • SignedBudgetAuthorization — Session budget envelope
  • SignedPaymentAuthorization — Signed payment binding
  • SettlementIntent — Canonical intent for hashing
  • Canonical hashing — Deterministic JSON serialization and SHA-256
  • Verification chain — PolicyGrant → SBA → SPA → SettlementIntent → Settlement

What belongs in a profile

Profiles define constraints and expectations for a given deployment:

  • Settlement rail — Which rail(s) are allowed (xrpl, evm, stripe, hosted, etc.)
  • Asset model — Native vs issued asset, currency codes, decimals
  • Issuer validation rules — Which issuers are trusted for IOU assets
  • Destination conventions — Allowed payees, address formats
  • Decimal / unit expectations — Minor units, precision
  • Verifier requirements — What the verifier must check
  • Wallet requirements — What the wallet must enforce before signing

Why profiles exist

Profiles serve several goals:

  • Keep MPCP rail-agnostic — The base protocol does not hard-code rails or assets
  • Avoid forking the protocol per ecosystem — Each ecosystem gets a profile instead of a protocol fork
  • Make adoption concrete — Adopters choose a profile and know exactly what to implement
  • Support interoperability — Implementations following the same profile interoperate

Current profiles

Profile Rail Asset Model Notes
Parking xrpl native/simple Short sessions
Charging xrpl, evm variable Longer sessions
Hosted Rail stripe, hosted backend-managed Online approval
XRPL Stablecoin xrpl issued asset / IOU RLUSD-style payments

See Reference Profiles for full details and policy examples.


How to add a new profile

A new profile should define:

  • Rail identifier — The settlement rail(s) allowed
  • Asset representation — How amounts and currencies are expressed
  • Wallet constraints — What the wallet must validate before signing
  • Verifier constraints — What the verifier must check
  • Example policy — A JSON policy conforming to the profile
  • Example bundle — A verifiable settlement bundle

Add the profile JSON to profiles/, document it in Reference Profiles, and provide at least one example bundle that passes mpcp verify.