---
title: "Envoyer votre première requête payante avec x402"
description: "Envoyez une requête à x402.erpc.global, lisez le prix dans la réponse 402, payez-le avec un client x402 et recevez le résultat RPC avec un reçu de règlement."
canonical: "https://erpc.global/fr/doc/x402/quickstart/"
locale: "fr"
---

# Envoyer votre première requête payante avec x402

Ce guide fait passer une requête Solana par x402 : lire le prix, le payer, puis recevoir la réponse avec un reçu de règlement. Les 15 autres chaînes fonctionnent de la même façon, chacune sur sa propre route.

Il vous faut un portefeuille qui contient de l'USDC sur Solana, ou de l'USDC ou de l'EURC sur Base, ainsi qu'un client x402 : le logiciel qui lit la réponse 402, signe un paiement depuis votre portefeuille et renvoie la requête avec ce paiement. Pour les clients x402, consultez la documentation x402 sur [x402.org](https://x402.org/).

## 1. Envoyer la requête

Envoyez la requête RPC sans paiement :

```bash
curl -i https://x402.erpc.global/v1/solana-mainnet \
  --header 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'
```

La réponse est 402 Payment Required. Ses en-têtes indiquent la méthode et le prix :

```http
HTTP/2 402
x-payment-required: eyJ4NDAyVmVyc2lvbiI6Mi…
x-rpc-methods: getSlot
x-rpc-weight: 1000
x-rpc-price-usd: 0.001
```

Le corps liste les options de paiement dans `accepts`, une pour chaque stablecoin accepté pour payer la requête. `amount` est exprimé dans la plus petite unité du stablecoin, donc 1000 correspond à 0.001 USDC, ou à 0.001 EURC :

```json
{
  "error": { "code": "payment_required", "message": "Payment required", "request_id": "…" },
  "x402Version": 2,
  "accepts": [
    { "scheme": "exact", "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", "amount": "1000", "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", … },
    { "scheme": "exact", "network": "eip155:8453", "amount": "1000", "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", … },
    { "scheme": "exact", "network": "eip155:8453", "amount": "1000", "asset": "0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42", … }
  ],
  "pricing": { "methods": ["getSlot"], …, "weight": 1000, "rawWeight": 42, …, "price": "$0.001", … },
  …
}
```

## 2. Payer avec un client x402

Transmettez la réponse 402 à votre client x402. Il choisit une option que votre portefeuille peut payer, signe un paiement de ce montant et l'encode pour l'en-tête X-Payment. Le paiement ne demande ni SOL ni ETH pour les frais de réseau.

## 3. Renvoyer la requête avec le paiement

Renvoyez le même corps, avec le paiement dans l'en-tête X-Payment :

```bash
curl -i https://x402.erpc.global/v1/solana-mainnet \
  --header 'Content-Type: application/json' \
  --header 'X-Payment: <PAYMENT_PAYLOAD>' \
  --data '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'
```

Ne modifiez pas le corps. Le prix est calculé à partir du corps : si un corps modifié a un autre prix, le paiement ne correspond plus et la réponse est `price_mismatch`.

Une fois le paiement vérifié et réglé, la réponse RPC revient avec le reçu de règlement dans l'en-tête X-Payment-Response :

```http
HTTP/2 200
x-payment-response: <RECEIPT>
```

```json
{ "jsonrpc": "2.0", "id": 1, "result": … }
```

Un paiement ne couvre qu'une seule requête. Si vous envoyez à nouveau le même paiement, il est refusé avec 402 `payment_invalid` ou 409 `duplicate_payment`, et la requête n'est pas transmise une seconde fois.

## Réponses

Une requête à laquelle x402.erpc.global répond par une erreur avant de demander un paiement ne coûte rien.

| Statut | `error.code` | Ce qui s'est passé |
| --- | --- | --- |
| 402 | `payment_required` | Aucun paiement n'a été envoyé. Le corps indique le prix et les options de paiement. |
| 402 | `payment_invalid` | Le paiement n'a pas été validé. Signez un nouveau paiement et renvoyez la requête. |
| 402 | `price_mismatch` | Le paiement ne correspond à aucune option proposée par la réponse 402 de cette requête, par exemple sur le prix. |
| 402 | `payment_amount_too_low` | Le montant est inférieur au plus petit paiement que x402.erpc.global règle. |
| 402 | `settlement_failed` | Le règlement a été signalé comme ayant échoué. La réponse propose à nouveau les options de paiement. |
| 409 | `duplicate_payment` | Le paiement a déjà été utilisé. |
| 400 | `method_not_supported`, `invalid_request` | La route ne vend pas la méthode, ou n'accepte pas le corps. Rien n'est facturé. |
| 413 | `batch_too_large` | Le batch contient plus de 100 appels. Rien n'est facturé. |
| 500 | `configuration_error` | La route ne peut pas traiter de requêtes pour le moment. Rien n'est facturé. |
| 503 | `payment_unavailable` | Aucune option de paiement ne peut être proposée pour le moment. Rien n'est facturé. Réessayez après le nombre de secondes indiqué par Retry-After. |
| 503 | `service_busy` | Trop de requêtes en même temps. Rien n'est facturé. Réessayez après le nombre de secondes indiqué par Retry-After. |
| 502 | `settlement_failed` | Le résultat du règlement est inconnu : le paiement a peut-être abouti, et aucun reçu n'est joint. Vérifiez sur Solana ou sur Base si le paiement que vous avez signé a abouti avant d'en signer un nouveau. |
| 502, 504 | `upstream_error`, `upstream_timeout` | Le paiement a été réglé, mais la chaîne n'a pas répondu, ou pas à temps. Le reçu est tout de même joint. Renvoyer la requête demande un nouveau paiement. |

Sur Solana, un appel qui lirait trop de données, comme un `getProgramAccounts` sans filtre sur un programme volumineux, reçoit une réponse HTTP 200 avec une erreur JSON-RPC avant toute demande de paiement. Il ne coûte donc rien.

## Étapes suivantes

- [Comment x402 calcule le prix d'une requête](https://erpc.global/fr/doc/x402/pricing/) : le prix d'un appel, le minimum de \$0.001 et les batchs.
- [Vue d'ensemble de x402](https://erpc.global/fr/doc/x402/overview/) : la route de chaque chaîne et les options de paiement.
- [Document OpenAPI](https://x402.erpc.global/doc) : la forme des requêtes et des réponses de chaque route.
