# MPP (Tempo USDC) - paying Dappier

MPP settles on Tempo USDC. For per-call payments your wallet is your identity: there are no bespoke auth headers.

1. Call `https://agents.dappier.com/zcj/e0gmzkzw7jut/<path>` with your normal request.
2. You receive `402 payment_required`. The challenge is in the `www-authenticate` response header (and the `protocols.mpp` body block).
3. Sign a credential for the challenge and retry with it under the `Payment` scheme: `Authorization: Payment <credential>`. A serialized credential already carries the `Payment ` prefix.

Client libraries sign the credential and retry for you, including the Zero CLI (`zero fetch`). The challenge embeds the payment metadata, so the signed credential is all a retry needs.

Buying a plan needs a bearer credential too. `Authorization` is taken by the `Payment` credential, so send the token in the dedicated header: `ZC-Agent-Authorization: Bearer <access token>` together with `Authorization: Payment <credential>`. With an automatic MPP client, pass `ZC-Agent-Authorization` on the initial request and the client preserves it while installing the `Payment` credential:

```bash
link-cli mpp pay -X POST "https://agents.dappier.com/zcj/e0gmzkzw7jut/plans/{planId}/purchase" -H "ZC-Agent-Authorization: Bearer $ACCESS_TOKEN" -H 'Content-Type: application/json' -d '{"amountUsd":"10.000000"}'
```

`Authorization` carries exactly one credential: a comma-combined `Payment ..., Bearer ...` value is refused with `401 invalid_token` (`combined_authorization_unsupported`).

How to sign a credential: https://mpp.dev/protocol/credentials

Every successful paid response carries a `payment-receipt` header (the serialized receipt) you can log for your spend records.

No wallet? See [How to pay](https://agents.dappier.com/zcj/e0gmzkzw7jut/payment.md) for the card rail, or the [agent guide](https://agents.dappier.com/zcj/e0gmzkzw7jut/llms-full.txt) to set up a managed wallet with the Zero CLI.

