Problèmes courants et dépannage
Symptômes, causes et correctifs pour les problèmes que nous pouvons vérifier dans le produit.
Si votre problème n'est pas listé ici, écrivez à support@rowie.io avec des captures d'écran et l'ID de transaction (ou l'ID de session, ou le numéro de facture) dans la mesure du possible.
« Setup required » sur Banking ou Tap to Pay
L'écran Account du POS mobile affiche un badge Setup required sur la ligne Banking, et Tap to Pay / Terminal Readers sont désactivés, jusqu'à ce que Stripe Connect ait terminé l'onboarding et que les charges soient activées.
- Portail vendeur → Banking (barre latérale → groupe FINANCE) → vérifiez le statut.
- Si l'onboarding n'est pas terminé, parcourez le formulaire hébergé de Stripe — il vous indiquera exactement ce qui manque (pièce d'identité, RIB, infos entreprise).
- Les premières configurations peuvent prendre 1 à 2 jours pour la vérification Stripe.
Le test « prêt à encaisser » dans le code de l'app est connectStatus.hasConnectedAccount && connectStatus.chargesEnabled — les deux doivent être vrais.
« Cannot delete location — it still has … »
Le portail bloque la désactivation d'un établissement s'il existe des enregistrements dépendants. Le message exact liste les éléments bloquants. Les vérifications (rowie-api/src/routes/locations.ts) :
- Sessions de table ouvertes ou en cours — soldez-les ou annulez-les d'abord.
- Menus, plans de salle, réservations actives, pages de réservation — réassignez-les à un autre établissement ou supprimez-les d'abord.
- Seul établissement de l'organisation — vous ne pouvez pas supprimer le dernier.
Déplacez les dépendances, puis réessayez.
« Cannot delete menu with open sessions or tabs »
Un menu (catalogue) ne se supprime pas tant qu'il y a des sessions ou des tabs ouverts. Soldez-les ou annulez-les sur la page Tables, puis réessayez la suppression. Le même schéma s'applique à :
- Plans de salle / tables avec sessions actives.
- Événements / paliers de billets avec billets vendus.
- Plans d'abonnement vendeur avec abonnés actifs (annulez-les ou migrez-les d'abord).
- Pools de pourboires qui ne sont pas en brouillon (vous ne pouvez supprimer un pool que lorsqu'il est encore en brouillon).
« Authentication failed » ou écran bloqué après une longue inactivité
Les jetons d'authentification expirent au bout de 15 minutes ; l'app mobile et le portail vendeur rafraîchissent tous les deux automatiquement en cas de 401. Si le rafraîchissement échoue (par ex. le refresh token a aussi expiré au bout de 7 jours, ou vous vous êtes connecté sur un autre appareil et avez été éjecté), vous verrez un toast « Authentication failed » et serez renvoyé à la connexion.
- Mobile uniquement : lorsque vous vous connectez sur un second appareil, le premier reçoit SESSION_KICKED et est déconnecté de force — c'est intentionnel (protection contre le vol de téléphone).
- Le portail vendeur n'impose pas de session unique — vous pouvez garder plusieurs onglets ouverts.
Si vous êtes bloqué à mi-écran : déconnectez-vous puis reconnectez-vous.
Fermeture d'un tab échouée / « Payment failed »
Quand une carte enregistrée est débitée hors session pour fermer un tab et que Stripe la refuse, la session repasse à open pour vous permettre de réessayer. Causes courantes :
- La carte exige une nouvelle authentification / 3DS à chaque débit.
- Règle anti-fraude de l'émetteur sur les débits hors session.
- Fonds insuffisants.
Limitation connue : les clés d'idempotence Stripe pour la fermeture de tab sont stables pendant 24 heures. Si la première tentative a échoué, réessayer avec la même carte renverra immédiatement le même intent refusé. Contournement : prenez un nouveau paiement Tap to Pay au lieu de fermer via la carte enregistrée, ou demandez au client d'enregistrer une nouvelle carte.
« Payment setup required » au paiement
Le POS mobile affiche cela lorsque vous tentez d'encaisser mais que Stripe Connect n'est pas entièrement configuré. Même correctif que pour le badge « Setup required » ci-dessus — terminez l'onboarding Banking.
Reçus : envoi et renvoi
Les reçus Tap to Pay doivent être envoyés explicitement — ils ne sont pas envoyés automatiquement par Stripe pour les transactions card_present.
- Sur l'écran Payment Result juste après un encaissement, saisissez l'e-mail du client et appuyez sur Send receipt.
- Plus tard, ouvrez n'importe quelle transaction dans History → Send receipt.
Si les reçus n'arrivent pas, vérifiez d'abord les spams, puis vérifiez que l'e-mail sur la transaction est correct.
Les données temps réel semblent obsolètes
L'app utilise Socket.IO pour pousser les mises à jour (commandes, sessions, tabs, menus, réservations, factures, pay runs). TanStack Query est configuré avec un temps de péremption infini et sans polling — les invalidations viennent des événements socket.
Si quelque chose semble obsolète :
- Tirez pour rafraîchir l'écran (mobile) ou rechargez la page (portail vendeur).
- Déconnectez-vous puis reconnectez-vous pour forcer une nouvelle connexion socket.
- Vérifiez que l'URL d'API est joignable depuis votre appareil.
Le socket du portail vendeur se reconnecte automatiquement avec des jetons frais (callback d'auth dynamique). Le client mobile tente jusqu'à 10 reconnexions avec un backoff entre 1 et 5 s.
Limite de débit (HTTP 429) sur les pages publiques menu / table / booking
L'API limite le débit de création de préordres, sessions et réservations publiques par IP + ID de session pour atténuer la fraude (ajouté après l'incident d'avril 2026). Le trafic client normal n'atteindra pas cette limite. Si un test de charge ou une boucle de retry accidentelle la déclenche, attendez que la fenêtre se libère (une minute) puis réessayez.
Le bouton Tap to Pay est grisé
- Apple Tap to Pay entitlement : la première fois sur un nouveau compte Stripe Connect, Apple met 1 à 2 jours à activer l'appareil.
- Banking inactif : voir « Setup required » ci-dessus.
- Mauvais appareil : Tap to Pay nécessite un iPhone XS ou plus récent sous iOS 16.4+ avec un code, ou un Android compatible NFC (SDK 26+).
Compte signalé pour vérification
Lorsque les heuristiques anti-fraude se déclenchent (taux de débits bloqués ou échoués au-dessus des seuils), le review_status du compte passe à needs_review et les payouts automatiques sont mis en pause. Contactez le support — une fois que l'équipe Rowie approuve le compte depuis la file d'attente admin, les payouts reprennent. L'utilisation en lecture seule du produit continue de fonctionner.