The x/mpp module is a native RP1 charge rail for small, auditable machine payments. V1 settles native Cosmos bank transfers only.
Charge lifecycle
MsgCreateChargerecords creator, recipient, amount, denom, realm, description, expiry, optional external ID, and optional body digest.PaymentChallengereturns MPP-ready challenge data, including the chain ID, recipient, charge ID, base-unit amount, and RP1 prefix.- A gateway can turn that data into an off-chain HTTP
402 Payment Requiredresponse. MsgPayChargechecks the expected amount, denom, and recipient before transferring native coins atomically.- The gateway queries the charge or receipt and returns its off-chain API, tool, data, or MCP response.
Creators can cancel charges. Authorized requesters can refund a paid charge under the module’s lifecycle rules. Query surfaces list charges by ID, creator, recipient, status, and payment challenge.
Deliberate V1 boundary
Stripe SPTs, PaymentIntents, HTTP response handling, gateway credentials, webhooks, and MCP transport stay off-chain. RP1 stores and settles the native charge reference; it is not an in-consensus Stripe integration.
Integrator checklist
- Bind a charge to the exact service request with
body_digestwhere appropriate. - Honor expiry and status; never reuse a paid or cancelled charge.
- Verify the committed receipt before returning a paid service result.
- Keep gateway secrets and provider credentials out of the chain transaction and browser.