# blockwallets — Encaissez en crypto sans vous y connaître

> Vos clients paient en USDT, USDC, BTC et 14 autres cryptos sur 15 réseaux. L’argent arrive sur votre solde en dollars et vous le retirez vers votre propre portefeuille. Les liens de paiement ne demandent aucun code ; des API compatibles avec Cryptomus, NOWPayments et Coinbase Commerce automatisent le reste. Les clés qui déplacent les fonds ne sont jamais sur un serveur connecté à internet.
>
> HTML: https://blockwallets.io/?lang=fr · English: https://blockwallets.io/index.md?lang=en

## Paiementscrypto

Vos clients paient en USDT, USDC, BTC et 14 autres cryptos sur 15 réseaux. Chaque paiement arrive sur votre solde en dollars. **Aucune connaissance de la blockchain requise, et les clés qui déplacent les fonds ne sont jamais sur un serveur connecté à internet.**
 Demander l’accèsVoir comment l’argent arrive

Bêta privée · 1% par paiement, jusqu’à 0.5% selon le volume mensuel · sans abonnement, retraits gratuits

0ligne de code pour démarrer. Envoyez simplement un lien de paiement

17cryptos acceptées : stablecoins, BTC et jetons natifs

2sources indépendantes confirment chaque paiement

15réseaux. Le client paie sur celui qu’il utilise

Nouveau dans la crypto ?

### Trois choses à savoir.

Pas besoin de comprendre la blockchain pour être payé. Ces trois points suffisent pour démarrer.

Prix en USD

#### La volatilité n’est pas votre problème

Vous fixez vos prix en dollars et êtes crédité en dollars. USDT, USDC et les autres stablecoins comptent à 1:1 ; BTC et les autres cryptos sont convertis à un cours bloqué pendant 30 minutes.

Scanner & payer

#### Le client paie avec les applis qu’il a déjà

Il scanne le QR code avec l’appli de sa plateforme d’échange ou son portefeuille crypto. Sans frontières ni horaires bancaires ; la plupart des paiements arrivent en une minute environ.

Définitif

#### Pas de rétrofacturation

Un transfert confirmé ne peut pas être annulé comme un paiement par carte, donc pas de litiges de rétrofacturation. Rembourser reste votre choix.

Façons d’encaisser

### Commencez par un lien. Automatisez ensuite.

Utilisez un lien de paiement dès aujourd’hui et branchez l’API quand vous avez besoin d’automatiser. Les deux alimentent le même solde.

Sans code
#### Liens de paiement

Indiquez un montant dans votre tableau de bord et obtenez un lien et un QR code. Partagez-le dans une conversation, sur votre site ou votre profil ; le client l’ouvre et paie.
 blockwallets.io/l/pl_940219e083e7b45cea11**Essayer ↗** Abonnement annuel+99.00

Acompte · commande 1042+42.00

Pour les développeurs

#### Intégration API

Appelez un endpoint au moment du paiement et envoyez le client sur notre page de paiement. Quand l’argent arrive, nous prévenons votre serveur : les commandes partent et les soldes se rechargent tout seuls.

POST /v1/payment200

order_1042 · expédiée automatiquement+42.00

topup_88 · ajouté au solde de l’utilisateur+150.00

Comment l’argent arrive

### Du paiement à votre solde, en quatre étapes.

Vous lancez le paiement et attendez l’argent. Les adresses, la surveillance de la chaîne, la double vérification et la notification de votre système, on s’en charge.

order_1042TRON · USDT · adresse dédiée TX7k…q3Fd$42.00

Source Amême transfert · montant · adresse✓ vu

Source Bfournisseur indépendant✓ vu

Prévenir votre serveurPOST /webhooks/blockwallets200 OK

Les deux concordent. Paiement confirmé.

- 1
#### Vous demandez un paiement
Envoyez le montant et votre numéro de commande ; avec un lien de paiement, le tableau de bord le fait pour vous. Le même numéro de commande envoyé deux fois ne crée qu’une seule facture.

- 2
#### Le client scanne et paie
Sur notre page de paiement, il choisit la crypto et le réseau puis scanne. Chaque commande a sa propre adresse, donc paiements et commandes se rapprochent sans mémo.

- 3
#### Nous vérifions que l’argent est bien arrivé
Nous consultons la chaîne chaque minute et attendons assez de confirmations ; puis une deuxième source de données indépendante doit voir le même transfert. Les faux paiements ne passent pas.

- 4
#### L’argent est à vous
Il est crédité sur votre solde en dollars et vous pouvez demander un retrait à tout moment (chaque retrait est vérifié par une personne ; une nouvelle adresse de retrait attend 24 heures avant son premier versement). Avec l’API, votre serveur reçoit au même moment une notification signée, renvoyée pendant environ deux jours et demi s’il est indisponible.

Mon argent est-il en sécurité ?

0 
### 0 clé privée sur un serveur connecté à internet. Les clés qui déplacent les fonds restent dans un environnement de signature isolé.

Nos serveurs en ligne ne détiennent qu’une clé en lecture seule : ils créent des adresses de réception et voient les soldes, mais ne peuvent rien envoyer. Les clés qui déplacent les fonds ne servent que dans un environnement de signature isolé de nos services en ligne. Les regroupements ne partent que vers des adresses fixes de portefeuille froid ; les versements aux marchands sont approuvés par une personne et ne vont qu’à l’adresse de retrait enregistrée par le marchand.

#### En ligne, il ne peut que recevoir

Les serveurs ne détiennent qu’une clé en lecture seule (`xpub`). Une clé privée collée par erreur est refusée.

#### Vos adresses sont verrouillées

Les portefeuilles de réception sont figés dans la configuration de déploiement ; ni le tableau de bord ni la base de données ne peuvent les modifier.

#### Deux sources doivent concorder

Un paiement ne compte que si deux sources de données indépendantes le voient. Un nœud malveillant ne peut pas le falsifier.

#### Votre argent n’a pas à rester

Demandez un retrait à tout moment, ou laissez les demandes se créer automatiquement à partir d’un solde choisi ou chaque jour. Chaque retrait est vérifié par une personne, une nouvelle adresse attend 24 heures avant son premier versement, et chaque versement affiche sa trace sur la chaîne.

#### Destinations limitées

Les transactions qui déplacent des fonds sont signées dans un environnement isolé des services en ligne. Les regroupements ne partent que vers des adresses fixes de portefeuille froid ; les versements aux marchands sont approuvés par une personne et ne vont qu’à l’adresse de retrait enregistrée par le marchand.

#### S’arrêter plutôt que risquer

S’il manque une seule protection, ce réseau suspend les paiements.

Développeurs

### Deux bouts de code. C’est toute l’intégration.

Créez un paiement et récupérez le lien de la page de paiement ; recevez la notification, vérifiez la signature, livrez. Testez gratuitement sur testnet d’abord.

- 
#### Deux appels seulement
Créez avec un montant et un numéro de commande ; vérifiez la notification et livrez selon le numéro de commande.- 
#### Gratuit sur testnet
Les identifiants de test fonctionnent sur des testnets publics, et la page de paiement a un bouton « simuler le paiement ».- 
#### Les nouvelles tentatives sont sûres
Le même `order_id` renvoie toujours la même facture.- 
#### Vous venez d’une autre passerelle ?
API compatibles avec Cryptomus, NOWPayments et Coinbase Commerce : mêmes chemins, paramètres, signatures et webhooks. Changez le domaine et les clés. - https://api.cryptomus.com/v1/payment

+ https://blockwallets.io/v1/payment
Guide d’intégration complet →

```
<span class="cl"><span class="t-k">import</span> crypto <span class="t-k">from</span> <span class="t-s">"node:crypto"</span>;</span><span class="cl"></span><span class="cl"><span class="t-k">const</span> body = JSON.<span class="t-f">stringify</span>({</span><span class="cl">  order_id: <span class="t-s">"order_1042"</span>,       <span class="t-c">// idempotency key</span></span><span class="cl">  amount: <span class="t-s">"42.00"</span>,              <span class="t-c">// any amount, in USD</span></span><span class="cl">  currency: <span class="t-s">"USD"</span>,</span><span class="cl">  url_callback: <span class="t-s">"https://shop.example.com/webhooks/crypto"</span>,</span><span class="cl">});</span><span class="cl"><span class="t-k">const</span> sign = crypto.<span class="t-f">createHash</span>(<span class="t-s">"md5"</span>)</span><span class="cl">  .<span class="t-f">update</span>(Buffer.<span class="t-k">from</span>(body).<span class="t-f">toString</span>(<span class="t-s">"base64"</span>) + process.env.BW_API_KEY)</span><span class="cl">  .<span class="t-f">digest</span>(<span class="t-s">"hex"</span>);</span><span class="cl"></span><span class="cl"><span class="t-k">const</span> res = <span class="t-k">await</span> <span class="t-f">fetch</span>(<span class="t-s">"https://blockwallets.io/v1/payment"</span>, {</span><span class="cl">  method: <span class="t-s">"POST"</span>,</span><span class="cl">  headers: {</span><span class="cl">    merchant: process.env.BW_MERCHANT,</span><span class="cl">    sign,</span><span class="cl">    <span class="t-p">"content-type"</span>: <span class="t-s">"application/json"</span>,</span><span class="cl">  },</span><span class="cl">  body,</span><span class="cl">});</span><span class="cl"><span class="t-k">return</span> <span class="t-f">redirect</span>((<span class="t-k">await</span> res.<span class="t-f">json</span>()).result.url);</span>
```

```
<span class="cl"><span class="t-k">import</span> crypto <span class="t-k">from</span> <span class="t-s">"node:crypto"</span>;</span><span class="cl"></span><span class="cl"><span class="t-k">export</span> <span class="t-k">async</span> function <span class="t-k">POST</span>(req: Request) {</span><span class="cl">  <span class="t-k">const</span> { sign, ...data } = JSON.<span class="t-f">parse</span>(<span class="t-k">await</span> req.<span class="t-f">text</span>());</span><span class="cl">  <span class="t-k">const</span> json = JSON.<span class="t-f">stringify</span>(data).<span class="t-f">replaceAll</span>(<span class="t-s">"/"</span>, <span class="t-s">"\\/"</span>);</span><span class="cl">  <span class="t-k">const</span> expected = crypto.<span class="t-f">createHash</span>(<span class="t-s">"md5"</span>)</span><span class="cl">    .<span class="t-f">update</span>(Buffer.<span class="t-k">from</span>(json).<span class="t-f">toString</span>(<span class="t-s">"base64"</span>) + process.env.BW_API_KEY)</span><span class="cl">    .<span class="t-f">digest</span>(<span class="t-s">"hex"</span>);</span><span class="cl">  <span class="t-k">if</span> (sign !== expected) <span class="t-k">return</span> <span class="t-k">new</span> <span class="t-f">Response</span>(<span class="t-s">"bad sign"</span>, { status: <span class="t-n">401</span> });</span><span class="cl"></span><span class="cl">  <span class="t-k">if</span> (data.status === <span class="t-s">"paid"</span> || data.status === <span class="t-s">"paid_over"</span>) {</span><span class="cl">    <span class="t-k">await</span> <span class="t-f">credit</span>(data.order_id, data.payment_amount_usd);</span><span class="cl">  }</span><span class="cl">  <span class="t-k">return</span> <span class="t-k">new</span> <span class="t-f">Response</span>(<span class="t-s">"ok"</span>);</span><span class="cl">}</span>
```

```
<span class="cl"><span class="t-k">POST</span> /webhooks/crypto</span><span class="cl"><span class="t-h">Content-Type:</span> application/json</span><span class="cl"></span><span class="cl">{</span><span class="cl">  <span class="t-p">"type"</span>: <span class="t-s">"payment"</span>,</span><span class="cl">  <span class="t-p">"uuid"</span>: <span class="t-s">"6f1c2a7e…"</span>,</span><span class="cl">  <span class="t-p">"order_id"</span>: <span class="t-s">"order_1042"</span>,</span><span class="cl">  <span class="t-p">"amount"</span>: <span class="t-s">"42.00"</span>,</span><span class="cl">  <span class="t-p">"payment_amount_usd"</span>: <span class="t-s">"42.00"</span>,</span><span class="cl">  <span class="t-p">"status"</span>: <span class="t-s">"paid"</span>,</span><span class="cl">  <span class="t-p">"is_final"</span>: true,</span><span class="cl">  <span class="t-p">"network"</span>: <span class="t-s">"tron"</span>,</span><span class="cl">  <span class="t-p">"payer_currency"</span>: <span class="t-s">"USDT"</span>,</span><span class="cl">  <span class="t-p">"txid"</span>: <span class="t-s">"9c1e…"</span>,</span><span class="cl">  <span class="t-p">"sign"</span>: <span class="t-s">"5f0c9b…e9a1"</span></span><span class="cl">}</span>
```

#### Copiez un seul prompt dans votre IA
 
Collez-le dans ChatGPT, Claude, Cursor ou n’importe quel assistant de code. Il lit notre documentation, fait fonctionner le parcours de test sur testnet, puis vous remet une liste de recette.
 Ouvrir dans ChatGPT ↗Ouvre une conversation qui lit llms-full.txt Ouvrir dans Claude ↗Ouvre une conversation qui lit llms-full.txt
Générer un prompt pour votre stack →

Intègre les paiements crypto blockwallets à mon projet. 1. Lis d'abord https://blockwallets.io/llms-full.txt et https://blockwallets.io/agents.md. Suis-les plutôt que ce dont tu te souviens d'autres passerelles de paiement. 2. Commence avec des identifiants de test sur testnet (mode test dans le tableau de bord blockwallets ; la page de paiement a un bouton "simuler le paiement"). Ne touche pas aux clés de production avant que tout le parcours de test fonctionne. 3. Crée un paiement avec POST https://blockwallets.io/v1/payment (amount, currency "USD", order_id, url_callback) et envoie le client vers result.url. 4. Vérifie chaque webhook avant de lui faire confiance : retire "sign", encode le reste en JSON avec chaque "/" échappé en "\/" (comme json_encode($data, JSON_UNESCAPED_UNICODE) de PHP : les caractères non ASCII restent tels quels), passe-le en base64, ajoute l'API key, calcule le md5 en hex et compare-le à "sign". 5. Considère les statuts "paid" et "paid_over" comme payés. Le même order_id renvoie toujours la même facture, donc les nouvelles tentatives sont sûres ; ne crédite chaque commande qu'une seule fois. 6. Garde le merchant ID et l'API key dans des variables d'environnement, jamais dans le code. Quand tu as fini, donne-moi cette liste de recette avec chaque point coché ou expliqué : - [ ] Un paiement de test est créé et result.url ouvre la page de paiement - [ ] "Simuler le paiement" envoie un webhook et sa signature est vérifiée - [ ] Un webhook dont le corps ou le sign a été modifié est rejeté - [ ] La commande est marquée payée une seule fois, même si le webhook revient - [ ] Les identifiants viennent des variables d'environnement - [ ] Ce que je dois changer pour passer en production Réseaux

### Quel que soit le moyen de paiement, vous recevez des dollars.

Les stablecoins sont crédités au pair, sans taux de change ni écart. BTC, LTC et les jetons natifs sont cotés à un cours bloqué pendant 30 minutes.

| Réseau | Cryptos | Délai d’arrivée | Minimum |
| --- | --- | --- | --- |
| TRON | USDTTRX | ~1 min | $1.00 |
| BNB Smart Chain | USDTUSDCUSD1FDUSDBNB | ~1 min | $1.00 |
| Ethereum | USDTUSDCDAIETH | ~1–18 min | $5.00 |
| Base | USDCDAIETH | ~1–25 min | $1.00 |
| Polygon PoS | USDTUSDCPOL | ~1 min | $1.00 |
| Arbitrum One | USDTUSDCDAIETH | ~1–30 min | $1.00 |
| OP Mainnet | USDTUSDCETH | ~1–25 min | $1.00 |
| Avalanche C-Chain | USDTUSDCAVAX | ~1 min | $1.00 |
| X Layer | USDTUSDCOKB | ~1–20 min | $1.00 |
| Dogecoin | DOGE | ~1–40 min | $1.00 |
| Solana | USDTUSDCSOL | ~1 min | $1.00 |
| TON | USDTTON | ~1 min | $1.00 |
| Litecoin | LTC | ~3–15 min | $1.00 |
| Bitcoin | BTC | ~10–30 min | $5.00 |
| Bitcoin Cash | BCH | ~10–60 min | $1.00 |

Les cryptos en surbrillance sont des stablecoins, chacune créditée à 1:1 en dollars. Le délai le plus court vaut pour les paiements de moins de $1,000. À partir de $1,000, puis de $5,000, nous attendons davantage de confirmations : les gros paiements peuvent prendre jusqu’au délai le plus long.

Tarifs

### Uniquement par paiement. Moins cher à mesure que vous grandissez.

Une même grille de paliers pour tous les marchands, abaissée automatiquement selon le volume du mois précédent. Rien à négocier.

1%par paiement
 
Jusqu’à 0.5%. Le client paie les frais de réseau.
 Sans abonnementSans frais d’ouvertureRetraits gratuitsSans volume minimum

Moins de $50,0001%

$50,000+0.9%

$100,000+0.8%

$250,000+0.7%

$500,000+0.6%

$1,000,000+0.5%

FAQ

### Réponses courtes.

#### Quelles cryptos puis-je accepter ?

17 cryptos sur 15 réseaux : USDT, USDC, USD1, FDUSD, DAI, BTC, LTC, DOGE et BCH, ainsi que les jetons natifs TRX, BNB, ETH, POL, AVAX, OKB, SOL et TON. Réseaux : TRON, BNB Smart Chain, Ethereum, Base, Polygon PoS, Arbitrum One, OP Mainnet, Avalanche C-Chain, X Layer, Dogecoin, Solana, TON, Litecoin, Bitcoin et Bitcoin Cash. Les stablecoins sont crédités à 1:1 en dollars ; les autres cryptos sont converties à un cours bloqué pendant 30 minutes.

#### Combien ça coûte ?

1% par paiement, abaissé automatiquement selon le volume du mois précédent : 0.9% dès $50,000, jusqu’à 0.5%. Sans abonnement ni frais d’ouverture, retraits gratuits. Le client paie les frais de réseau.

#### Dois-je comprendre la blockchain ?

Non. Saisissez un montant dans le tableau de bord pour obtenir un lien de paiement et un QR code ; le client scanne et paie, et l’argent arrive sur votre solde en dollars. blockwallets gère les adresses, les confirmations et le rapprochement.

#### Comment retirer ?

Demandez un retrait vers votre propre portefeuille depuis le tableau de bord à tout moment, ou laissez les demandes se créer automatiquement dès que votre solde atteint le montant choisi, ou chaque jour. Chaque retrait est vérifié par une personne, et une nouvelle adresse de retrait attend 24 heures avant son premier versement. Les retraits sont gratuits et chacun affiche sa transaction sur la chaîne.

#### Où sont les clés privées ?

Les clés qui peuvent déplacer les fonds ne sont jamais sur un serveur ouvert au public : elles ne servent que dans un environnement de signature isolé des services en ligne. Les regroupements ne partent que vers des adresses fixes de portefeuille froid ; les versements aux marchands sont approuvés par une personne et ne vont qu’à l’adresse de retrait enregistrée par le marchand. Les serveurs connectés à internet n’ont qu’une clé publique en lecture seule (xpub) : ils créent des adresses de réception et lisent les soldes, mais ne peuvent pas envoyer de fonds.

#### Qu’est-ce qui change en quittant Cryptomus, NOWPayments ou Coinbase Commerce ?

Seulement le domaine de l’API et les clés. Nous avons une API compatible pour chacune des trois : les chemins, les paramètres, l’algorithme de signature et le format du webhook sont ceux de l’original, votre code reste donc le même.

#### Y a-t-il un mode test ?

Oui. Le mode test a ses propres identifiants sur des testnets publics, et la page de paiement a un bouton « simuler le paiement » : vous testez création, paiement, webhook et vérification de signature sans argent réel.

### Lancez-vous.
 
Nous ouvrons blockwallets aux marchands progressivement. Parlez-nous un peu de votre activité et nous vous écrirons pour créer votre compte. Nouveau dans la crypto ? Posez vos questions dans les notes.
 
Frais : 1% par paiement, ramenés à 0.9% dès que le volume du mois précédent atteint $50,000, et jusqu’à 0.5% à mesure que vous grandissez. [Voir les tarifs →](https://blockwallets.io/pricing?lang=fr)
 - **1**Nous lisons chaque demande et répondons par e-mail.- **2**Une fois accepté, testez tout en mode test, sans argent réel.- **3**Passez en production quand vous êtes prêt. Demandez un retrait à tout moment.
