> ## Documentation Index
> Fetch the complete documentation index at: https://docs.myproceeds.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Add payments to your API

> Create a service, add a paywall, and price your first endpoint in five minutes.

This is the fastest path from "I have an API" to "I'm charging USDC for it." You'll create a service that wraps your origin, add a paywall on a single route, and copy the generated payment URL.

## Before you start

You need:

* An HTTP API with a public base URL — for example `https://api.example.com`
* A Proceeds account
* A wallet you control on a supported network — see [Supported blockchains](/guides/supported-blockchains)
* Testnet USDC if you're starting in testnet mode — drip some from the [Testnet USDC Faucet](https://testmint.myproceeds.xyz/)

## 1. Create a service

A service is the container for related paywalls. One service per API product is the right default.

In the dashboard, go to **Paywalls** and click **New Service**. Fill in:

| Field        | Value                                                                                                    |
| ------------ | -------------------------------------------------------------------------------------------------------- |
| Service Name | A short identifier — for example, `weather-api`                                                          |
| Description  | Optional                                                                                                 |
| Base URL     | The origin Proceeds proxies to — for example, `https://api.example.com`                                  |
| Mode         | `Testnet` while you build, `Mainnet` when you ship                                                       |
| Networks     | At least one — see [Supported blockchains](/guides/supported-blockchains)                                |
| Auth Method  | How Proceeds authenticates to your upstream — see [Forward upstream auth](/guides/forward-upstream-auth) |

<Note>
  A service requires a name, a base URL, and at least one network. Everything else can be edited later.
</Note>

## 2. Add a paywall

A paywall protects one route. Inside your service, click **New Paywall**:

| Field                | Value                                                      |
| -------------------- | ---------------------------------------------------------- |
| Name                 | Human-readable label                                       |
| Slug                 | URL-safe identifier — appears in the generated payment URL |
| Allowed HTTP Methods | `GET`, `POST`, `PUT`, `PATCH` — pick at least one          |
| Target URL           | The upstream path the paywall proxies to                   |
| Price                | The amount in USDC                                         |
| Networks             | Subset of the service's networks                           |
| Custom Headers       | Forwarded to upstream — optional                           |
| Query Parameters     | Forwarded to upstream — optional                           |
| Enabled              | Defaults to on                                             |

<Tip>
  Use realistic slugs (`current-weather`, `historical-forecast`) — they show up in your transactions and events.
</Tip>

## 3. Copy the generated payment URL

Every paywall exposes an x402 endpoint, and Tempo-enabled paywalls also expose an MPP endpoint:

```
https://myproceeds.xyz/api/x402/pay/{serviceId}/{slug}
https://myproceeds.xyz/api/mpp/pay/{serviceId}/{slug}
```

Replace `{serviceId}` and `{slug}` with the values from your dashboard. This is the URL you give to clients — they'll never see your origin.

## 4. Verify the paywall returns 402

Call the URL with no payment headers. Proceeds should respond with `402 Payment Required` and a challenge.

```bash theme={null}
curl -i https://myproceeds.xyz/api/x402/pay/{serviceId}/{slug}
```

A `402` response means your service is configured correctly and ready to accept payment.

## Next

<CardGroup cols={2}>
  <Card title="Test your paywall" icon="vial" href="/quickstart/test-your-paywall">
    Pay the challenge and confirm the upstream response is proxied back.
  </Card>

  <Card title="Monitor payments" icon="chart-line" href="/quickstart/monitor-payments">
    Watch transactions and events as real requests come in.
  </Card>
</CardGroup>
