# Accepter le paiement par virement sur votre site

> Intégrer le paiement par virement dans une boutique en ligne : parcours acheteur, création de facture par API, webhook de confirmation et erreurs à éviter.

Source : https://virement.tn/blog/accepter-le-paiement-par-virement-sur-votre-site — dernière mise à jour : 2026-09-19

Sur une boutique en ligne, le paiement par carte passe par une passerelle qui répond « payé » ou « refusé » en quelques secondes. Le virement fonctionne autrement : il est exécuté par l'acheteur dans sa banque, après la commande. Voici comment l'intégrer sans risque.

## Ce qui change par rapport à la carte

- **Pas de page de paiement hébergée, pas de redirection.** L'acheteur reste sur votre site.
- **Pas de réponse « payé » immédiate.** L'appel API qui crée la facture répond que la commande est *engagée*.
- **La confirmation arrive plus tard**, par webhook, quand la banque de l'acheteur confirme le virement.

Autrement dit : la commande n'est libérée que sur ce webhook.

## Le parcours en cinq étapes

1. **L'acheteur choisit « payer par virement.tn »** sur votre page de paiement.
2. **Votre formulaire lui demande deux champs** : son numéro de téléphone et son code de validation (6 caractères, à usage unique, valable 24 h, disponible dans son espace virement.tn). Ce code remplace la saisie d'un numéro de carte : il prouve le consentement.
3. **Votre serveur crée la facture** via l'API, en authentifiant l'appel avec votre clé dans l'en-tête `X-Api-Key`. La réponse indique que la facture est confirmée : la commande est engagée.
4. **L'acheteur exécute le virement** depuis l'application de sa banque, vers votre RIB vérifié.
5. **La banque confirme, virement.tn envoie le webhook signé** à votre serveur. C'est le signal de libérer la commande.

## Ce qu'il faut avoir avant de commencer

- Un **compte marchand** virement.tn actif.
- Un **RIB vérifié** : sans lui, la création de facture est refusée.
- Une **clé API**, générée depuis Paramètres → Clés API (rôle Gérant requis). La clé et le secret de signature du webhook ne s'affichent qu'une fois : conservez-les côté serveur.

## Les erreurs à éviter

- **Libérer la commande à la réponse de l'API.** C'est l'erreur la plus grave : le virement n'a pas encore eu lieu.
- **Appeler l'API depuis le navigateur.** Votre clé API doit rester sur votre serveur.
- **Ne pas vérifier la signature du webhook.** Sans cela, n'importe qui peut simuler une confirmation.
- **Ne pas rendre le traitement idempotent.** Par prudence, faites en sorte que recevoir deux fois la même confirmation ne casse rien (libérer une commande déjà libérée doit être sans effet).
- **Oublier le cas « jamais payé ».** Prévoyez l'expiration ou l'annulation des commandes en attente de virement.

## Pourquoi proposer le virement en plus de la carte

- **Aucun frais de carte.**
- **Aucune donnée de carte** à manipuler ni à protéger.
- Une option naturelle pour les clients qui préfèrent ne pas saisir leur carte en ligne.

Vous n'avez pas à choisir : le virement peut compléter la carte. Notre comparatif [virement, carte ou prélèvement](/blog/virement-carte-ou-prelevement-quel-moyen-d-encaissement) aide à décider selon vos ventes.

## Pour aller plus loin

La [page d'intégration](/integration-partenaires) résume le principe. La référence technique complète — endpoints, formats, environnement sandbox — est fournie directement aux partenaires en cours d'intégration.

## Questions fréquentes

### Quand libérer une commande payée par virement ?

À la réception du webhook de confirmation, jamais à la réponse de l'appel de création de facture. À la fin de cet appel, la commande est engagée mais pas encore payée.

### L'acheteur doit-il saisir un numéro de carte ?

Non. Il fournit son numéro de téléphone et un code de validation qu'il trouve dans son espace virement.tn, puis règle par virement depuis sa banque.

### Combien de temps un code de validation reste-t-il valable ?

24 heures. Il est à usage unique.
