E-commerce

Paiements crypto pour l'e-commerce

Comment une boutique en ligne peut ajouter la crypto comme moyen de paiement : place à la caisse, statuts de commande, paiements partiels, remboursements et ce qui est prêt.

Pour une boutique en ligne, la crypto est un moyen de paiement supplémentaire à côté des cartes, pas un remplacement. Elle atteint des clients dont les cartes ne fonctionnent pas dans votre boutique, supprime les rétrofacturations par carte et vous permet de recevoir des stablecoins en dollars. Ce guide explique où elle s'insère à la caisse, comment faire correspondre les statuts de paiement aux états de commande, comment gérer les cas délicats et ce qui est prêt, ou non, chez Qvard aujourd'hui.

Ce que la crypto apporte à une boutique, et ce qu'elle n'apporte pas

Soyez précis dans vos attentes, car la crypto n'est pas un interrupteur de croissance.

  • Des clients que vos circuits de paiement par carte n'atteignent pas. Des acheteurs dont les cartes bancaires sont refusées dans les boutiques étrangères, ou qui se trouvent dans des pays que votre processeur ne dessert pas, peuvent tout de même payer avec un stablecoin en dollars.
  • Pas de rétrofacturation par carte. L'expéditeur ne peut pas annuler un transfert crypto ; les paiements par carte contestés ne sont donc pas un risque pour ces commandes. Un remboursement devient un transfert que vous décidez d'envoyer.
  • Des ventes transfrontalières sans les frictions liées aux cartes. La même page de paiement fonctionne pour un client partout.
  • Une part modeste des commandes. Traitez-la comme une option supplémentaire sur la page de paiement. Dans la plupart des boutiques elle ne remplacera pas les cartes, et elle ne doit pas compliquer le parcours par carte.

Si vous vendez des biens numériques, lisez paiements crypto pour les boutiques de biens numériques ; les règles de livraison qui s'y trouvent valent pour tout produit instantané.

Où elle s'insère à la caisse

Ajoutez « Payer en crypto » comme un moyen de paiement de plus, à côté des existants, et non comme une boutique à part. Un agencement clair :

  1. Le client remplit le panier et l'adresse comme d'habitude et choisit « Payer en crypto ».
  2. Votre serveur crée la commande à l'état « en attente » et un paiement associé.
  3. Vous redirigez le client vers la page de paiement hébergée, où il choisit un actif et un réseau et paie depuis son portefeuille.
  4. Lorsque le paiement est terminé, votre serveur reçoit un webhook et fait avancer la commande.

Affichez le prix dans la devise de votre boutique et encaissez en dollars américains : le paiement est créé en dollars et le client paie l'équivalent dans l'actif qu'il choisit, à un taux fixé pendant une heure. Si votre boutique n'est pas en dollars, convertissez le total de la commande avant de créer le paiement.

Créez le paiement et utilisez votre numéro de commande

Créez le paiement depuis votre backend avec un seul POST vers https://api.qvard.com/api/v1/payment. La requête contient votre clé dans l'en-tête Authorization: Bearer et un corps JSON avec le numéro de commande dans id, le montant dans price en dollars américains et, en option, un paymentSystemId pour ouvrir la page avec un actif et un réseau déjà sélectionnés. La réponse est 201 avec un redirectUrl.

Utilisez votre propre numéro de commande comme id : il revient dans le webhook, c'est donc la clé qui relie le paiement à la commande. Si la requête est répétée avec le même id pour le même moyen de paiement, vous récupérez le paiement existant ; un double clic ou une requête réessayée n'en crée donc pas deux. Le parcours complet avec code se trouve dans comment accepter les paiements crypto sur un site web.

Faites correspondre statuts de paiement et états de commande

Un paiement a quatre statuts, et votre commande a besoin d'une règle claire pour chacun :

  • wait : le paiement est créé et le client n'a pas payé. La commande attend le paiement.
  • partial : un montant inférieur au total est arrivé. Mettez la commande en attente, dites combien il manque et laissez le client envoyer le reste, ou annulez et remboursez.
  • completed : le montant complet est arrivé. C'est le statut qui déclenche le webhook, et le seul qui doit libérer la marchandise.
  • rejected : le paiement a été rejeté. Proposez un autre moyen de payer.

L'exemple montre la correspondance sous forme de petit tableau. Deux règles la rendent sûre : ne ramenez jamais une commande payée à un état antérieur et ne traitez jamais une commande pour un statut autre que completed. Le gestionnaire du webhook doit en outre être idempotent et répondre exactement par HTTP 200 ; voir comment sécuriser les webhooks de paiement crypto.

Node.jsorder-status.js
// Qvard payment status -> your order state. Only "completed" releases goods.
const ORDER_STATE = {
  wait:      'pending_payment',   // created, the customer has not paid yet
  partial:   'on_hold',           // less than required arrived: ask for the rest or refund
  completed: 'paid',              // full amount arrived: start fulfilment
  rejected:  'payment_failed'     // rejected: offer another way to pay
};

function nextState(current, qvardStatus) {
  const target = ORDER_STATE[qvardStatus];
  if (!target) return current;                    // unknown status: change nothing
  if (current === 'paid') return current;         // never move a paid order backwards
  return target;
}

Paiements partiels, commandes expirées et remboursements

Ce sont les cas qui coûtent le plus de temps aux boutiques :

  • Des clients qui paient moins. Des frais de retrait de la plateforme d'échange sont souvent prélevés sur le montant, et le paiement arrive insuffisant. Décidez si vous demandez la différence ou remboursez, et affichez-le sur la page de commande.
  • Des clients qui paient tard. Le taux est fixé pendant une heure. Traitez un paiement qui arrive bien après l'abandon de la commande comme un cas de support plutôt que de l'automatiser.
  • Le stock. Si vous réservez du stock pour des commandes non payées, libérez-le à l'expiration de la commande.
  • Les remboursements. Vous ne pouvez pas non plus annuler un paiement crypto ; un remboursement est un transfert que vous envoyez au portefeuille du client. Mettez la règle dans vos conditions et demandez l'adresse de remboursement au client plutôt que de l'extraire du paiement.
  • Le retour sur le site. Les URL de retour après paiement ne sont pas encore disponibles ; le client revient donc sur votre site de lui-même. Donnez-lui une page de commande qui affiche le statut réel plutôt qu'une page de remerciement qui suppose le succès.

Prix, frais et comptabilité

Gardez simple tout ce qui touche à l'argent.

  • Prix en dollars, encaissement en dollars. Enregistrez la valeur de la commande en dollars au moment de la commande et gardez l'id du paiement à côté pour le rapprochement.
  • Ce que cela coûte. Il n'y a pas d'abonnement. La commission est propre à votre projet et, selon la page des tarifs, part de 1 % et peut descendre jusqu'à 0,1 %.
  • Retirer l'argent. Les fonds restent sur votre solde Qvard et vous les retirez vers votre propre portefeuille ; le retrait ne coûte que les frais de réseau. Le retrait vers un compte bancaire en monnaie fiat n'est pas disponible ; si vous avez besoin d'espèces, prévoyez une sortie via un service que vous utilisez déjà.
  • Impôts et comptabilité. Le traitement fiscal et comptable des encaissements en crypto dépend de votre pays ; vérifiez-le avec votre comptable avant le lancement.

Ce qui est prêt aujourd'hui

Qvard fonctionne via son API : votre boutique crée le paiement et reçoit le webhook. Il n'existe pas encore de plugin prêt à l'emploi pour les plateformes de boutique, les liens de paiement et un sandbox séparé sont en développement, et les clients reviennent sur votre site d'eux-mêmes. Si votre plateforme est WordPress, voir paiements crypto sur WordPress pour du code fonctionnel. Pour les actifs et réseaux acceptés, voir les monnaies prises en charge ; pour les formats de requête, la documentation développeur ; et pour voir ce que verra votre client, ouvrez une facture de démonstration.

FAQ

La crypto remplacera-t-elle les cartes dans ma boutique ?

Non. Elle fonctionne mieux comme option supplémentaire pour les clients dont les cartes ne marchent pas dans votre boutique ou qui préfèrent les stablecoins. Laissez le parcours par carte tel quel.

Quand dois-je marquer une commande comme payée ?

Seulement lorsque Qvard envoie le webhook avec le statut completed. Un client revenu sur votre site n'est pas une preuve de paiement, et un statut partial signifie qu'un montant inférieur au montant requis est arrivé.

Comment fonctionnent les remboursements avec la crypto ?

L'expéditeur ne peut pas annuler un paiement crypto ; un remboursement est donc un transfert que vous envoyez au portefeuille du client. Définissez la règle dans vos conditions et demandez l'adresse de remboursement au client.

Existe-t-il un plugin pour ma plateforme de boutique ?

Pas encore. Aujourd'hui l'intégration passe par l'API : une requête crée un paiement et un webhook reçoit le résultat.

Articles similaires

Articles similaires