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

# EVM and x402 support \[Use one SDK for MPP and x402 payments on any EVM blockchain]

MPP now supports `charge` payments on any EVM network, including Ethereum, Base, and Polygon. `mppx` also supports x402 [`exact`](https://docs.x402.org/schemes/exact) flows through the same payment-method interface.

Use `evm.charge` when you want one integration for MPP Challenges and compatible x402 payment requests. The server advertises both protocols, then verifies whichever Credential the client returns.

## Server

Configure one EVM charge method. Add `x402.facilitator` when the endpoint accepts x402 `exact` payments.

```ts [server.ts]
import { Mppx, evm } from 'mppx/server'

const mppx = Mppx.create({
  methods: [
    // [!code hl:start]
    evm.charge({
      currency: evm.assets.baseSepolia.USDC,
      recipient: '0xYourAddress',
      x402: {
        facilitator: 'https://example.com/facilitator',
      },
    }),
    // [!code hl:end]
  ],
})

const paid = mppx.evm.charge({
  amount: '0.01',
  description: 'Premium API access',
})
```

## Client

The client signs MPP Challenges and compatible x402 Challenges. It selects a protocol from the payment methods available to the request.

```ts [client.ts]
import { Fetch, evm } from 'mppx/client'
import { privateKeyToAccount } from 'viem/accounts'

const fetch = Fetch.from({
  methods: [
    // [!code hl:start]
    evm.charge({
      account: privateKeyToAccount(
        '0x0123456789012345678901234567890123456789012345678901234567890123',
      ),
      currencies: [evm.assets.baseSepolia.USDC],
      maxAmount: '1.00',
    }),
    // [!code hl:end]
  ],
})

const response = await fetch('https://mpp.dev/api/ping/paid')
console.log(response.status)
// @log: 200
```

## Learn more

* [Use MPP with x402](/guides/use-mpp-with-x402)
* [`evm.charge` payment method](/payment-methods/evm/charge#evm-charge)
