Voici comment accepter des paiements en stablecoins tout en étant payé en euros : vous émettez une facture libellée en EUR, le payeur envoie le montant correspondant en USDC vers une adresse créée pour cette seule facture, et un partenaire agréé les convertit et verse les euros sur votre IBAN. L'étape de paiement ne demande qu'un seul appel à l'API. Les décisions importantes se situent autour : combien de temps la facture reste ouverte, ce que vous faites lorsqu'un payeur envoie un montant insuffisant, et comment votre système de commandes apprend que les fonds sont arrivés.
Ce guide détaille ce flux de facturation tel que le voient les deux parties, à partir de captures d'écran du tableau de bord ItisPay avec des données de démonstration.
En bref
- Vous fixez le prix en EUR ; le montant en USDC est calculé au taux en vigueur et affiché sur la facture.
- Chaque facture reçoit sa propre adresse, un compte à rebours et un statut : new, pending, paid_partial, completed, expired ou cancelled.
- Un paiement insuffisant ne fait pas échouer la facture : il est enregistré virement par virement et le statut passe à paid_partial.
- Au titre du MiCA, échanger des crypto-actifs contre des euros est un service agréé, donc le règlement sur votre IBAN passe par un prestataire de services sur crypto-actifs (CASP) autorisé.
Comment accepter des paiements en stablecoins dans l'UE : de quoi avez-vous besoin ?#
Il vous faut trois éléments : un stablecoin émis conformément au MiCA, une entreprise agréée qui le convertit en euros, et un logiciel qui associe chaque paiement à une commande. Recevoir les stablecoins est simple. Les convertir en euros sur votre compte est la partie réglementée.
Le règlement sur les marchés de crypto-actifs (MiCA, règlement (UE) 2023/1114) s'applique aux stablecoins depuis le 30 juin 2024 et intégralement depuis le 30 décembre 2024. Au titre de l'article 48, seul un établissement de crédit ou un établissement de monnaie électronique agréé peut émettre un jeton de monnaie électronique, terme MiCA désignant un stablecoin adossé à une seule monnaie officielle.
USDC remplit ces conditions : le registre MiCA provisoire de l'ESMA recense Circle Internet Financial Europe SAS comme émetteur d'USDC et d'EURC, agréée par l'ACPR française le 1er juillet 2024. USDT ne figure pas dans ce registre des émetteurs agréés (à la date du 5 novembre 2026).
Échanger des crypto-actifs contre des euros est un service sur crypto-actifs. L'article 59 du MiCA ne l'autorise que pour un CASP (prestataire de services sur crypto-actifs) autorisé, ou pour certaines entreprises financières, comme les banques et les entreprises d'investissement, qui le notifient à leur régulateur au titre de l'article 60. Un marchand dispose de deux options : obtenir sa propre licence de CASP, ou passer par un prestataire qui en détient déjà une.
Comment fonctionne une facture en stablecoins, étape par étape ?#
Une facture en stablecoins est une demande de paiement d'un montant fixe, assortie de sa propre adresse et d'une échéance. Votre système la crée, le payeur la règle, et un changement de statut vous indique quand expédier. Voici le parcours complet pour une commande de 250 EUR payée en USDC.
- Vous créez la facture. Votre caisse envoie l'identifiant de commande, le prix en EUR et le stablecoin souhaité (USDC). Dans ItisPay, l'appel est `POST /invoices` ; dans le tableau de bord, c'est un court formulaire.
- Le montant est converti. L'API calcule le montant en USDC à partir du prix en EUR, aux taux en vigueur. Dans la démonstration ci-dessous, 250 EUR deviennent 279,2846 USDC.
- Une adresse est attribuée. La facture reçoit sa propre adresse blockchain sur un réseau précis, ainsi qu'un QR code. Comme l'adresse est liée à la facture, le virement entrant renvoie à la commande.
- Le payeur envoie des USDC. Il voit le montant exact, le réseau et un compte à rebours, et paie depuis son portefeuille ou son compte d'échange.
- Le statut change. La facture démarre au statut new, puis passe par exemple à pending, completed, paid_partial ou expired. Si vous avez indiqué une URL de rappel, les mises à jour de statut sont envoyées à votre serveur sous forme de webhooks.
- Les euros arrivent sur votre IBAN. Le règlement en EUR sur votre IBAN passe par le partenaire agréé, ou vous lui laissez les stablecoins en dépôt.

| Étape | Acteur | Ce qui se passe |
|---|---|---|
| Créer | Système du marchand | Identifiant de commande, prix en EUR et stablecoin envoyés à l'API |
| Convertir | ItisPay | Montant en USDC calculé au taux en vigueur |
| Payer | Le payeur | Montant exact en USDC envoyé à l'adresse de la facture |
| Confirmer | ItisPay | Virement détecté, statut mis à jour, webhook envoyé |
| Régler | Partenaire agréé | USDC échangés, EUR versés sur l'IBAN du marchand |
La répartition indiquée dans les deux dernières lignes est importante du point de vue de la conformité. ItisPay est la couche logicielle : factures, statuts, notifications, rapprochement. La détention des fonds, leur change et le versement en euros relèvent du partenaire agréé.
Que voit le payeur sur la page de paiement ?#
Le payeur voit un écran unique contenant tout ce qu'il faut pour payer sans avoir à vous poser de question : qui lui réclame le paiement, le montant exact en USDC, l'adresse, le réseau et le temps restant. La partie droite de la capture d'écran ci-dessus correspond à cette vue.
En haut figure un compte à rebours, de 1 heure 59 minutes dans la démo. Sous celui-ci se trouvent le nom de la boutique, l'adresse accompagnée d'une instruction d'envoyer le montant exact en USDC sur le réseau indiqué, un bouton de copie du montant, et les détails du paiement : montant de la facture en EUR, devise, réseau et statut, qui commence par « en attente de paiement ».
Faites attention à la ligne du réseau. L'USDC existe sur plusieurs blockchains, et un transfert envoyé sur un autre réseau que celui indiqué sur la facture ne sera pas crédité à la facture et pourrait ne pas être récupérable. Si vous concevez votre propre page de paiement, affichez le réseau en gros caractères à côté du montant.
La page de paiement n'affiche les détails complets que tant que le paiement reste possible. Le point de terminaison public des factures d'ItisPay renvoie toutes les informations pour les factures au statut new, pending ou paid_partial. Une fois une facture completed, expired ou cancelled, il ne renvoie que l'identifiant et le statut, de sorte qu'un ancien lien n'affiche plus d'adresse de paiement.
Comment le montant en USDC est-il calculé à partir d'un prix en euros ?#
Vous fixez vos prix en euros, et la facture affiche l'équivalent en USDC au taux du moment de sa création. Le payeur est invité à régler ce montant exact, de sorte que votre comptabilité part d'un montant en EUR connu.
Dans l'API d'ItisPay, vous envoyez `fiat_amount` avec `fiat_currency` défini sur EUR, qui est actuellement la seule devise fiduciaire prise en charge, et l'API renvoie le montant en cryptomonnaie. Vous pouvez aussi facturer un montant fixe en cryptomonnaie, mais pas les deux à la fois sur une même facture.
Le point de terminaison des taux renvoie les taux en vigueur en EUR si vous souhaitez afficher une estimation avant le paiement. L'USDC suit le dollar américain : le montant en USDC correspondant à un prix en EUR évolue donc avec le taux EUR/USD, et une durée de validité courte limite l'écart que peut prendre le taux avant que le payeur ne paie.
Pendant combien de temps une facture en cryptomonnaie doit-elle rester ouverte ?#
Assez longtemps pour que le payeur ouvre un portefeuille et envoie les fonds, mais assez peu pour que le taux indiqué sur la facture reste équitable. Dans le tableau de bord d'ItisPay, le champ d'expiration est prérempli à 120 minutes ; par l'API, vous le définissez pour chaque facture avec `expire_min`.
Adaptez la durée à la situation. Un paiement en ligne où le payeur est déjà devant l'écran peut utiliser une expiration plus courte. Une facture B2B envoyée par e-mail à une équipe financière qui règle par lots a besoin d'un délai plus long. Lorsque le temps est écoulé, le statut passe à expired et la page de paiement cesse d'afficher l'adresse. Si une commande est annulée avant paiement, annulez la facture via l'API plutôt que de laisser le délai expirer, afin que vos registres indiquent pourquoi elle a été clôturée.
Que se passe-t-il lorsque le payeur envoie un montant insuffisant ou la mauvaise cryptomonnaie ?#
Un paiement partiel ne fait pas échouer la facture. Elle passe au statut paid_partial et enregistre le transfert, tandis que la page de paiement reste ouverte pour le solde. Les factures ItisPay acceptent plusieurs transactions par facture, chacune avec son propre montant, son propre hash de transaction et son propre statut.
De petits écarts surviennent. Certaines plateformes d'échange déduisent leurs frais de retrait du montant envoyé, et les payeurs arrondissent parfois le chiffre : 279,28 arrive donc au lieu de 279,2846. Le paramètre `allowed_error_percent` (de 0 à 100) correspond à l'erreur de paiement, en pourcentage, que la facture tolère ; si vous ne le renseignez pas, une valeur par défaut du système s'applique. Trop serré, vous courez après des centimes ; trop large, vous abandonnez de la marge sur les grosses commandes.
La facture enregistre aussi le montant effectivement reçu. `actual_crypto_amount_paid` contient le montant reçu, et `currency_paid` indique lorsque le payeur a utilisé une autre cryptomonnaie que celle demandée sur la facture, par exemple USDT au lieu d'USDC. Définissez vos règles pour ces cas avant qu'il ne s'en présente un premier.
| Statut | Signification | Verdict |
|---|---|---|
| new | Facture créée, rien n'a encore été reçu | Non |
| pending | Paiement en cours, pas encore réglé comme payé | Non |
| paid_partial | Une partie du montant a été reçue | Dépend |
| completed | Facture payée | Oui |
| expired | Le délai est écoulé avant le paiement intégral | Non |
| cancelled | Clôturée par vous, par exemple une commande annulée | Non |
La colonne Verdict répond à une seule question : pouvez-vous expédier la commande ? Pour paid_partial, la réponse dépend de votre politique : attendre le solde, demander au payeur de compléter le montant, ou accepter le montant et ajuster la commande.
Comment les stablecoins se transforment-ils en euros sur votre IBAN ?#
Par l'intermédiaire du partenaire agréé, qui verse les euros sur votre IBAN ou conserve les stablecoins si vous souhaitez les garder. ItisPay fournit l'API, la facturation et le rapprochement ; le règlement en EUR passe par notre partenaire agréé dans l'UE, prestataire de services sur crypto-actifs (CASP) et établissement de paiement.
Avant le premier paiement, le partenaire effectue une vérification KYB sur votre entreprise, un contrôle de connaissance de l'entreprise portant sur la propriété, les dirigeants et l'activité. Les contrôles KYC, AML et les IBAN sont gérés par le partenaire, de sorte que l'échange réglementé est réalisé par une entreprise agréée plutôt que par vous. Si vous avez également besoin de comptes en euros entrants par client ou par marché, les IBAN virtuels proviennent du même partenaire.
L'argent peut aussi repartir par le même chemin qu'à l'arrivée. L'API de versements d'ItisPay envoie un versement en monnaie fiduciaire vers un compte bancaire, ou un versement en cryptomonnaie vers un portefeuille, à partir de votre solde disponible ; cela couvre les remboursements, les paiements aux fournisseurs et les paiements B2B en stablecoins.
Une règle s'applique en toile de fond. Le règlement (UE) 2023/1113 sur les transferts de fonds, applicable depuis le 30 décembre 2024, exige que les CASP transmettent et vérifient les informations sur l'expéditeur et le bénéficiaire pour chaque transfert de crypto-actifs (art. 14 et 16). Il ajoute des contrôles pour les transferts supérieurs à 1 000 EUR impliquant un portefeuille auto-hébergé. Ces contrôles relèvent du partenaire agréé, et non de votre processus de paiement, mais demandez au partenaire comment ils affectent les paiements de montants plus élevés.
Comment connecter les paiements en stablecoins par API ?#
Une requête authentifiée crée une facture, et un point de terminaison webhook reçoit chaque changement de statut. La plupart des intégrations n'ont besoin de rien de plus. Les requêtes transmettent votre clé dans un en-tête `Api-key` ; conservez-la sur votre serveur, jamais dans le code du navigateur ni dans un dépôt public.
| Champ | Obligatoire | Rôle |
|---|---|---|
| order_id | Oui | Votre référence de commande, unique par commande |
| currency | Oui | La crypto-monnaie à recevoir, par exemple USDC |
| fiat_amount et fiat_currency | Un des deux | Prix en EUR ; le montant en crypto-monnaie est calculé |
| crypto_amount | Un des deux | Un montant fixe dans la crypto-monnaie à la place |
| expire_min | Non | Minutes avant l'expiration de la facture |
| allowed_error_percent | Non | Écart de paiement autorisé en pourcentage, de 0 à 100 |
| callback_url | Non | Adresse de destination des webhooks de changement de statut |
Testez avant la mise en production. Un point de terminaison de simulation déclenche un webhook de changement de statut pour une facture existante, afin que vous puissiez vérifier que votre serveur gère correctement les statuts completed, expired et paid_partial. Si votre serveur était indisponible à l'arrivée d'un webhook, un point de terminaison de renvoi répète le dernier callback, par identifiant de facture ou identifiant de commande.
Pour l'équipe finance, la liste des factures constitue la vue de rapprochement. L'API filtre les factures par statut, devise et date de création, jusqu'à 100 par page. Le tableau de bord affiche les mêmes données : montant en USDC et en EUR, part du montant reçue, réseau, adresse et date de création, avec une recherche par identifiant de facture, identifiant de commande ou nom de commande.

Pour un panorama plus large de l'automatisation des paiements en crypto-actifs au-delà des factures, consultez notre guide sur l'acceptation automatique des paiements en crypto-actifs.
Où les factures en stablecoins atteignent-elles leurs limites ?#
Les factures en stablecoins conviennent aux payeurs qui détiennent déjà des USDC : entreprises du secteur crypto, clients B2B transfrontaliers et clients que les acquéreurs de cartes refusent. Elles ne remplacent que partiellement le paiement par carte, et quelques limites doivent guider vos conditions.
Limites de la méthode
- Les remboursements sont de nouveaux transferts. Il n'existe pas de rétrofacturation à la manière des cartes ; c'est vous qui renvoyez les fonds, vers une adresse que le payeur confirme.
- Un paiement envoyé sur le mauvais réseau n'est pas crédité sur la facture et peut être perdu. Indiquez clairement le réseau.
- Les clients sans portefeuille ni compte d'échange ne peuvent pas payer de cette façon. Conservez un second moyen de paiement.
- L'USDT ne figure pas dans le registre de l'ESMA des émetteurs de jetons de monnaie électronique autorisés. L'ESMA a demandé aux prestataires de services sur crypto-actifs (CASP), en janvier 2025, de cesser d'échanger contre des fonds les stablecoins non conformes ; prévoyez donc des USDC.
La demande est réelle mais concentrée. La présidente de la BCE, Christine Lagarde, a déclaré dans un discours prononcé lors du Banco de España LatAm Economic Forum, le 8 mai 2026, que les paiements transfrontaliers interentreprises « représentent déjà environ 60 % du volume des paiements en stablecoins », ajoutant que cela ne représente que « 0,01 % des flux mondiaux interentreprises ». Si vos payeurs font partie de ce groupe, l'ajout d'un flux de factures vaut la peine.
Comment accepter les paiements en stablecoins : configurer avant la première facture#
Pour accepter les paiements en stablecoins sans mauvaise surprise, décidez de quatre points avant d'écrire du code : le délai d'expiration pour chaque canal de vente, la marge d'erreur de paiement acceptée, votre politique pour paid_partial et pour les paiements dans la mauvaise crypto-monnaie, et la personne de l'équipe finance responsable du rapprochement. Ensuite, développez le gestionnaire de webhooks, testez-le avec des statuts simulés et effectuez un petit paiement réel de bout en bout.
Si vous souhaitez accepter des stablecoins et recevoir des euros sans construire vous-même l'infrastructure, ItisPay fournit l'API, la facturation et le rapprochement. L'agrément, la vérification KYC et le règlement vers votre IBAN passent par notre partenaire CASP + établissement de paiement agréé dans l'UE, et la plupart des équipes passent du KYB à la première transaction en moins d'une semaine.
Cet article est fourni à titre informatif uniquement et ne constitue pas un conseil juridique ou réglementaire.


