> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://mpp.dev/api/mcp` to find what you need.

# RedotPay \[Balance and stablecoin rails]

The RedotPay payment method enables MPP payments using either a RedotPay balance proof (`rdt`) or a stablecoin payment proof (transaction hash), carried inside the MPP Credential payload.

This method is implemented as `method="redotpay"`, with a single intent: `intent="charge"`.

## How it works

```mermaid
sequenceDiagram
  participant Client
  participant Server
  participant RedotPay
  Client->>Server: (1) GET /resource
  Server-->>Client: (2) 402 + Challenge (method=redotpay, intent=charge)
  Client->>RedotPay: (3) Obtain payment proof (rdt or transaction hash)
  RedotPay-->>Client: (4) proof
  Client->>Server: (5) GET /resource + Credential (Authorization: Payment ...)
  Server->>RedotPay: (6) Verify proof (merchant callbacks)
  RedotPay-->>Server: (7) verified
  Server-->>Client: (8) 200 OK + Receipt

```

1. **Server** responds with `402` and a Challenge containing amount/currency and RedotPay method details.
2. **Client** obtains a payment proof from RedotPay rails (balance `rdt` or stablecoin transaction hash).
3. **Client** retries the request with `Authorization: Payment ...` containing a Credential with the proof in `payload`.
4. **Server** verifies the proof, enforces replay protection, and returns the resource with a Receipt.

## SDK

The first-party SDK re-exports `Mppx` so users only need one import:

```ts
import { Mppx, charge } from '@redotpay/mpp/server'
import { charge as clientCharge } from '@redotpay/mpp/client'
```

## Intents

[RedotPay charge](/payment-methods/redotpay/charge) — One-time payments with RedotPay payment proofs
