Facturation

Système complet de facturation pour Larapen : gérez les factures, paiements, avoirs, factures récurrentes, dépenses, catalogue de produits et demandes de devis depuis un seul panneau d’administration.

Gestion des factures

Créez, envoyez et suivez les factures avec lignes d’articles, taxes, remises et numérotation automatique.

Facturation récurrente

Configurez des factures récurrentes avec des fréquences flexibles : hebdomadaire, mensuelle, trimestrielle ou annuelle.

Système de devis

Recevez des demandes de devis des visiteurs, créez des propositions et convertissez les devis acceptés en factures.

Suivi des dépenses

Suivez les dépenses par catégorie avec un workflow d’approbation optionnel et téléchargement de reçus.

Avoirs

Émettez des avoirs sur les factures pour les remboursements et ajustements avec un historique complet.

PDF & liens publics

Générez des factures et devis en PDF. Partagez des liens publics basés sur des jetons pour que les clients puissent consulter et payer.

Cas d’utilisation

Freelance / Consultant

Vous gérez un site portfolio sur Larapen et devez facturer vos clients pour le travail effectué.

  • Créez des clients avec adresses de facturation et conditions de paiement.
  • Ajoutez vos services au catalogue de produits (ex. « Développement web : horaire »).
  • Créez des factures, ajoutez des lignes d’articles et envoyez par e-mail avec un lien de paiement public.
  • Suivez les paiements et générez des reçus PDF.

Agence avec clients sous contrat

Vous gérez plusieurs clients avec des forfaits mensuels et avez besoin d’une facturation récurrente automatisée.

  • Configurez des factures récurrentes pour chaque client avec une fréquence mensuelle.
  • Les factures sont générées automatiquement et optionnellement envoyées au client.
  • Suivez les soldes impayés et les factures en retard depuis le tableau de bord de facturation.

Entreprise de services avec devis personnalisés

Les clients potentiels soumettent des demandes de devis via votre site web avant l’engagement.

  • Intégrez le formulaire de demande de devis sur votre front-end avec des catégories (ex. « Web Design », « SEO »).
  • Examinez les demandes dans le panneau d’administration et créez des propositions détaillées.
  • Envoyez le devis par e-mail avec un lien public. Une fois accepté, convertissez-le en facture.

Petite entreprise avec suivi des dépenses

Vous avez besoin d’un moyen simple de suivre les dépenses professionnelles en parallèle des revenus.

  • Organisez les dépenses par catégorie (Bureau, Voyages, Logiciels, etc.).
  • Téléchargez les reçus et exigez optionnellement l’approbation d’un responsable.
  • Visualisez revenus vs. dépenses sur le tableau de bord de facturation.

Prérequis

PrérequisVersion
Larapen Core≥ 1.0.0
PHP≥ 8.2
DomPDFInclus via barryvdh/laravel-dompdf
Aucune dépendance. Cet add-on n’a aucune dépendance envers d’autres add-ons Larapen. Il fonctionne de manière autonome. Cependant, si un add-on de passerelle de paiement (Stripe, PayPal, etc.) est actif, les factures peuvent être payées en ligne.

Installation

Étape 1 : Placer l’add-on

Copiez ou créez un lien symbolique du dossier billing dans extensions/addons/billing.

Étape 2 : Activer l’add-on

Allez dans Admin → Add-ons et activez « Facturation ».

Étape 3 : Exécuter les migrations

Étape 4 : Définir les permissions

Attribuez les permissions de facturation aux rôles administrateurs sous Admin → Utilisateurs → Rôles & Permissions.

Étape 5 : Configurer

Allez dans Admin → Facturation → Paramètres pour configurer les détails de l’entreprise, la numérotation des factures, les paramètres de taxes et les préférences de notifications.

Configuration

Toute la configuration se trouve dans config/billing.php et peut être remplacée via le panneau de paramètres d’administration (stockée dans la base de données via SettingService).

CléPar défautDescription
admin_per_page15Éléments par page dans les listes d’administration
invoice_prefixINV-Préfixe pour les numéros de facture générés automatiquement
invoice_next_number1Prochain numéro de séquence de facture
payment_terms_days30Conditions de paiement par défaut en jours
credit_note_prefixCN-Préfixe pour les numéros d’avoir
credit_note_next_number1Prochain numéro de séquence d’avoir
company_nameNom de votre entreprise (apparaît sur les factures)
company_addressAdresse de l’entreprise pour les factures
company_phoneNuméro de téléphone de l’entreprise
company_emailAdresse e-mail de l’entreprise
company_tax_numberNuméro de taxe/TVA affiché sur les factures
tax_enabledtrueActiver les calculs de taxes
default_tax_rate_idnullTaux de taxe par défaut pour les nouveaux articles
recurring_enabledtrueActiver la fonctionnalité de factures récurrentes
recurring_auto_sendfalseEnvoyer automatiquement les factures récurrentes générées
expenses_enabledtrueActiver le suivi des dépenses
expenses_require_approvalfalseExiger l’approbation pour les nouvelles dépenses
pdf_logoChemin vers l’image du logo pour les documents PDF
pdf_footer_textTexte de pied de page personnalisé sur les documents PDF

Paramètres de notification

CléPar défautDescription
notify_invoice_senttrueNotifier le client lorsque la facture est envoyée
notify_payment_receivedtrueNotifier le client lorsqu’un paiement est enregistré
notify_invoice_overduetrueNotifier le client lorsque la facture est en retard
notify_recurring_generatedtrueNotifier l’administrateur lorsqu’une facture récurrente est générée
notify_credit_note_issuedtrueNotifier le client lorsqu’un avoir est émis

Paramètres de devis

CléPar défautDescription
quote_validity_days30Période de validité par défaut des devis
quote_per_page12Éléments par page sur la liste front-end des devis
quote_admin_per_page15Éléments par page dans les listes d’administration des devis
allowed_attachment_typespdf, doc, docx, xls, xlsx, jpg, jpeg, pngTypes de fichiers autorisés pour les pièces jointes des demandes de devis
max_attachment_size10240Taille maximale des pièces jointes en Ko
notify_new_quote_requesttrueNotifier l’administrateur lors d’une nouvelle demande de devis
notify_quote_submission_confirmationtrueEnvoyer une confirmation au demandeur
notify_quote_request_reviewingtrueNotifier le demandeur lorsque le statut passe à « en cours d’examen »
notify_quote_senttrueNotifier le demandeur lorsque le devis est envoyé
notify_quote_request_acceptedtrueNotifier le demandeur lorsque la demande est acceptée
notify_quote_request_rejectedtrueNotifier le demandeur lorsque la demande est rejetée

Admin : Tableau de bord

Le tableau de bord de facturation (/admin/billing) fournit un aperçu rapide de votre situation financière.

Cartes récapitulatives

  • Chiffre d’affaires total : somme de toutes les factures payées
  • En attente : solde total dû sur les factures impayées
  • En retard : total des factures dépassées
  • Total des dépenses : somme de toutes les dépenses approuvées
  • Nombre de factures : total des factures créées
  • Nombre de clients : total des clients
  • Paiements ce mois : total des paiements du mois en cours

Graphique des revenus

Un diagramme en barres sur 12 mois montrant les tendances mensuelles des revenus.

Panneaux d’activité

  • Factures récentes : dernières factures avec badges de statut
  • Paiements récents : dernières entrées de paiement
  • Factures en retard : factures dépassées
  • Récurrences à venir : factures récurrentes bientôt générées

Admin : Clients

Gérez les clients de facturation à /admin/billing/customers. Les clients peuvent optionnellement être liés à un compte utilisateur Larapen.

Champs client

ChampRequisDescription
company_nameNonNom de l’entreprise ou de l’organisation
contact_nameOuiPersonne de contact principale
contact_emailOuiE-mail pour l’envoi des factures
contact_phoneNonNuméro de téléphone
tax_numberNonNuméro de taxe/TVA
websiteNonURL du site web du client
billing_addressNonObjet JSON avec les champs d’adresse
shipping_addressNonObjet JSON avec les champs d’adresse
default_currencyOuiCode de devise par défaut (ex. USD)
payment_terms_daysOuiConditions de paiement (par défaut : 30 jours)
notesNonNotes internes sur ce client

Détail du client

La page de détail du client (/admin/billing/customers/{id}) affiche :

  • Informations du client et coordonnées
  • Statistiques : total facturé, total payé, solde impayé
  • Liste de toutes les factures de ce client

Admin : Produits

Le catalogue de produits (/admin/billing/products) stocke les lignes d’articles réutilisables pour les factures. Les produits sont gérés via des boîtes de dialogue modales (pas de pages de création/modification séparées).

ChampRequisDescription
nameOuiNom du produit (traduisible)
descriptionNonDescription du produit (traduisible)
skuNonRéférence article (unique)
typeOuiproduct ou service
unit_priceOuiPrix unitaire par défaut
unitNonUnité de mesure (hrs, pcs, kg, etc.)
currencyOuiCode de devise
tax_rate_idNonTaux de taxe par défaut pour ce produit

Options d’unité disponibles : Unité, Pcs, Hrs, Jours, Mois, Kg, G, L, ML, M, Km, Boîte, Pack, Set, Service, Lot.

Admin : Taux de taxe

Configurez les taux de taxe à /admin/billing/tax-rates. Les taux de taxe sont gérés via des boîtes de dialogue modales.

ChampRequisDescription
nameOuiNom du taux de taxe (traduisible), ex. « TVA 20% »
rateOuiTaux en pourcentage (décimal, ex. 20.0000)
is_compoundNonSi cette taxe se compose sur d’autres taxes
is_defaultNonDéfinir comme taux de taxe par défaut pour les nouveaux articles

Admin : Factures

Le centre de gestion des factures à /admin/billing/invoices. Les factures peuvent être filtrées par client, statut et recherchées par numéro ou contenu.

Créer une facture

Naviguez vers Facturation → Factures → Créer. Le formulaire de facture comprend :

  • Client : sélectionner parmi les clients existants
  • Devise : par défaut la devise du client
  • Date d’émission et Date d’échéance : date d’échéance calculée automatiquement à partir des conditions de paiement
  • Lignes d’articles : ajout depuis le catalogue de produits ou saisie d’articles personnalisés. Chaque article a : description (traduisible), quantité, unité, prix unitaire, taux de taxe
  • Remise : remise optionnelle en pourcentage ou montant fixe
  • Notes et Conditions : champs de texte traduisibles

Les numéros de facture sont générés automatiquement en utilisant le préfixe et le numéro de séquence configurés (ex. INV-0001).

Cycle de vie de la facture

StatutDescription
draftLa facture est en cours de préparation. Peut être modifiée librement.
sentLa facture a été envoyée au client. Plus modifiable.
partialUn paiement partiel a été reçu.
paidLa facture a été entièrement payée.
overdueLa facture a dépassé sa date d’échéance et est impayée.
cancelledLa facture a été annulée.
refundedLe paiement de la facture a été remboursé (via avoir).
Restriction de modification : Les factures ne peuvent être modifiées que lorsqu’elles sont en statut draft. Une fois envoyées, les factures sont verrouillées.

Actions disponibles

  • Envoyer : marque comme envoyée + envoie un e-mail au client avec un lien public
  • Modifier le statut : changer manuellement le statut de la facture
  • Dupliquer : crée une copie comme nouveau brouillon de facture
  • Télécharger le PDF : génère et diffuse un PDF
  • Depuis un devis : convertir un devis accepté en facture (crée le client si nécessaire)

Génération de PDF

Les factures PDF sont générées avec InvoicePdfService et DomPDF. Le PDF comprend :

  • Logo et détails de l’entreprise (depuis les paramètres)
  • Informations de facturation du client
  • Tableau des lignes d’articles avec quantités, prix, taxes et totaux
  • Sous-total, taxes, remise et total général
  • Notes et conditions
  • Texte de pied de page personnalisé

Admin : Paiements

Enregistrez les paiements à /admin/billing/payments. Les paiements sont liés aux factures et mettent automatiquement à jour le solde de la facture.

ChampRequisDescription
invoice_idOuiLa facture à laquelle ce paiement s’applique
amountOuiMontant du paiement
currencyOuiDevise du paiement
payment_methodOuiEspèces, Virement bancaire, Chèque, Carte de crédit, PayPal, Stripe ou Autre
referenceNonNuméro de référence de transaction
payment_dateOuiDate de réception du paiement
notesNonNotes internes

Lorsqu’un paiement est enregistré, le amount_paid et le balance_due de la facture sont recalculés. Si le solde atteint zéro, la facture est automatiquement marquée comme paid.

Admin : Avoirs

Gérez les avoirs à /admin/billing/credit-notes. Les avoirs sont liés à une facture et un client existants.

Cycle de vie de l’avoir

StatutDescription
draftL’avoir est en cours de préparation.
issuedL’avoir a été émis au client.
appliedLe crédit a été appliqué pour réduire le solde du client.
voidL’avoir a été annulé.

Chaque avoir a ses propres lignes d’articles (description, quantité, prix unitaire, taux de taxe) et un numéro généré automatiquement avec le préfixe configuré (ex. CN-0001).

La génération de PDF est disponible pour les avoirs en utilisant le même InvoicePdfService.

Admin : Factures récurrentes

Configurez la facturation récurrente à /admin/billing/recurring-invoices.

Champs de facture récurrente

ChampRequisDescription
customer_idOuiClient à facturer
titleOuiTitre du modèle
frequencyOuiHebdomadaire, Mensuelle, Trimestrielle, Semestrielle ou Annuelle
intervalOuiMultiplicateur (ex. 2 = tous les 2 mois)
start_dateOuiDate de début de la récurrence
next_invoice_dateOuiProchaine date de génération
end_dateNonDate de fin (null = illimité)
occurrences_limitNonNombre maximum de factures à générer (null = illimité)
auto_sendNonEnvoyer automatiquement les factures générées
itemsOuiLignes d’articles stockées en JSON

Fonctionnement

  • Une commande planifiée s’exécute quotidiennement à 06:00 et vérifie les factures récurrentes où next_invoice_date ≤ aujourd’hui.
  • Pour chaque facture récurrente échue, une nouvelle BillingInvoice est créée à partir des articles du modèle.
  • La next_invoice_date est avancée en fonction de la fréquence et de l’intervalle.
  • Si auto_send est activé, la facture est immédiatement marquée comme envoyée et le client est notifié.
  • La génération s’arrête lorsque end_date est atteinte ou occurrences_limit est remplie.

Vous pouvez également déclencher manuellement la génération via le bouton Générer maintenant sur la page de détail d’une facture récurrente.

Admin : Dépenses

Suivez les dépenses professionnelles à /admin/billing/expenses. Les dépenses sont gérées via des boîtes de dialogue modales.

ChampRequisDescription
category_idNonCatégorie de dépense
vendorNonNom du fournisseur
referenceNonNuméro de référence/reçu
amountOuiMontant de la dépense
currencyOuiCode de devise
expense_dateOuiDate de la dépense
notesNonDescription ou notes
receiptNonTéléchargement du reçu

Statuts des dépenses

StatutDescription
pendingEn attente d’approbation (lorsque l’approbation est requise)
approvedLa dépense a été approuvée
rejectedLa dépense a été rejetée
Workflow d’approbation : Lorsque expenses_require_approval est activé dans les paramètres, les nouvelles dépenses commencent en pending. Un administrateur avec la permission billing.expenses.edit peut les approuver ou les rejeter.

Catégories de dépenses

Organisez les dépenses par catégorie à /admin/billing/expense-categories. Les catégories ont un name et une description traduisibles, et peuvent être activées/désactivées.

Admin : Système de devis

Le système de devis gère le cycle de vie complet, de la demande du client à la proposition acceptée jusqu’à la facture.

Demandes de devis

Consultez et gérez les demandes de devis entrantes à /admin/billing/quotes/requests.

Champs de la demande

ChampDescription
reference_numberRéférence unique générée automatiquement (ex. QR-0001)
category_idCatégorie optionnelle (depuis la table unifiée des catégories)
company_nameEntreprise du demandeur
contact_nameNom du demandeur
contact_emailE-mail du demandeur
titleTitre du projet (traduisible)
descriptionDescription du projet (traduisible)
requirementsExigences détaillées (traduisible)
budget_min / budget_maxFourchette budgétaire
timelineDélai prévu
priorityBasse, Normale, Haute ou Urgente
attachmentPièce jointe optionnelle

Statuts des demandes

StatutDescription
pendingNouvelle demande en attente d’examen
reviewingLa demande est en cours d’examen
quotedUn devis a été envoyé
acceptedDemande/devis accepté par le demandeur
rejectedDemande refusée
cancelledDemande annulée

Propositions de devis

Créez des propositions à /admin/billing/quotes/quotes. Chaque devis est lié à une demande de devis.

Champs du devis

ChampDescription
quote_numberNuméro unique généré automatiquement
request_idDemande de devis liée
titleTitre du devis (traduisible)
scopePérimètre des travaux (traduisible)
termsConditions générales (traduisible)
itemsLignes d’articles avec description, quantité, unité, prix unitaire
amountMontant total du devis
currencyCode de devise
valid_untilDate d’expiration du devis

Statuts des devis

StatutDescription
draftLe devis est en cours de préparation
sentDevis envoyé au demandeur avec un lien public
acceptedDevis accepté : peut être converti en facture
rejectedDevis rejeté par le demandeur
expiredLa période de validité du devis est dépassée
Devis → Facture : Une fois un devis accepté, utilisez l’action « Créer une facture depuis le devis » pour générer automatiquement une facture avec toutes les lignes d’articles du devis. Si le demandeur n’est pas un client de facturation existant, un client est créé automatiquement.

Catégories de devis

Gérez les catégories de devis à /admin/billing/quotes/categories. Ce sont des entrées de catégories standard de la table unifiée categories, limitées aux demandes de devis. Les catégories apparaissent sur le formulaire public de demande de devis.

Admin : Paramètres

Tous les paramètres de facturation sont gérés à /admin/billing/settings. Le formulaire de paramètres est groupé en sections :

  • Informations de l’entreprise : nom, adresse, téléphone, e-mail, numéro de taxe
  • Paramètres de facturation : préfixe, prochain numéro, conditions de paiement
  • Paramètres d’avoir : préfixe, prochain numéro
  • Paramètres de taxe : activer/désactiver, taux de taxe par défaut
  • Paramètres de récurrence : activer/désactiver, envoi automatique
  • Paramètres de dépenses : activer/désactiver, exiger l’approbation
  • Paramètres de devis : jours de validité, pièces jointes, par page
  • Paramètres PDF : logo, texte de pied de page
  • Notifications : activer/désactiver chaque type de notification

Les paramètres sont stockés dans la base de données via le SettingService (préfixés avec billing_) et mis en cache pour les performances.

Front-end : Formulaire de demande de devis

URL & Routes

RouteURLDescription
front.billing.quotes.index/quote-requests/newAfficher le formulaire de demande de devis
front.billing.quotes.submitPOST /quote-requests/submitSoumettre la demande de devis

Des variantes localisées sont également enregistrées (ex. /fr/quote-requests/new).

Champs du formulaire

Les visiteurs peuvent remplir les champs suivants :

  • Coordonnées : nom, e-mail, téléphone, nom de l’entreprise
  • Catégorie : sélection parmi les catégories de devis configurées
  • Détails du projet : titre, description, exigences (traduisible)
  • Budget : fourchette minimum et maximum avec devise
  • Délai : calendrier prévu du projet
  • Priorité : Basse, Normale, Haute ou Urgente
  • Pièce jointe : téléchargement de fichier optionnel (validé par rapport aux types autorisés et à la taille maximale)

Après la soumission

  • Un enregistrement BillingQuoteRequest est créé avec un numéro de référence unique.
  • L’administrateur reçoit une NewQuoteRequestNotification (si activée).
  • Le demandeur reçoit une QuoteSubmissionConfirmationNotification (si activée).
  • L’adresse IP du visiteur est enregistrée.
Intégration au menu : L’add-on fournit une entrée front_menu dans addon.json avec le libellé « Demander un devis » et la route front.billing.quotes.index. Cela peut être ajouté à n’importe quel menu de navigation.

Front-end : Vue publique de la facture

URL & Routes

RouteURLDescription
front.billing.invoice.show/billing/invoice/{token}Voir la facture (public, sans authentification)
front.billing.invoice.pdf/billing/invoice/{token}/pdfTélécharger le PDF

Chaque facture possède un public_token unique de 64 caractères généré à la création. Ce jeton est inclus dans l’e-mail envoyé au client, lui permettant de consulter et télécharger la facture sans se connecter.

La vue publique affiche : détails de l’entreprise, détails du client, lignes d’articles, totaux, statut de paiement et notes/conditions.

Front-end : Vue publique du devis

URL & Routes

RouteURLDescription
front.billing.quote.show/billing/quote/{token}Voir le devis (public, sans authentification)
front.billing.quote.pdf/billing/quote/{token}/pdfTélécharger le PDF

Les devis possèdent également un public_token unique. La vue publique affiche : périmètre des travaux, lignes d’articles, montant total, période de validité et conditions.

Front-end : Paiement en ligne

URL & Routes

RouteURLDescription
front.billing.invoice.checkout/billing/invoice/{token}/payPage de paiement
front.billing.invoice.payPOST /billing/invoice/{token}/payTraiter le paiement

Le modèle BillingInvoice implémente le contrat Payable, le rendant compatible avec tout add-on de passerelle de paiement (Stripe, PayPal, etc.). Le contrat fournit :

  • getPayableAmount() : retourne le solde dû
  • getPayableDescription() : numéro et description de la facture
  • getPayableCurrency() : devise de la facture
  • getPayableCustomerEmail() : e-mail du client
  • getPayableCustomerName() : nom d’affichage du client
  • getPayableUserId() : ID utilisateur lié (le cas échéant)
  • getPayableIdentifier() : identifiant unique du paiement
  • getPaymentSuccessUrl() : URL de redirection après un paiement réussi
  • getPaymentCancelUrl() : URL de redirection après un paiement annulé

Lorsque le paiement réussit, la méthode markAsPaid() de la facture est appelée. En cas d’échec, markPaymentFailed() est appelée.

Notifications

L’add-on comprend 11 classes de notification, toutes dans Addons\Billing\Notifications :

Notifications de factures & paiements

NotificationDestinataireDéclencheur
InvoiceSentNotificationClientFacture marquée comme envoyée
PaymentReceivedNotificationClient / AdminPaiement enregistré
InvoiceOverdueNotificationClientFacture en retard (via commande planifiée)
RecurringInvoiceGeneratedNotificationAdminFacture récurrente génère une nouvelle facture
CreditNoteIssuedNotificationClientAvoir émis

Notifications de devis

NotificationDestinataireDéclencheur
NewQuoteRequestNotificationAdminNouvelle demande de devis soumise
QuoteSubmissionConfirmationNotificationDemandeurAprès la soumission du formulaire
QuoteRequestReviewingNotificationDemandeurStatut changé en « en cours d’examen »
QuoteSentNotificationDemandeurDevis envoyé avec lien public
QuoteRequestAcceptedNotificationDemandeurDemande acceptée
QuoteRequestRejectedNotificationDemandeurDemande rejetée

Chaque notification peut être activée/désactivée individuellement dans Facturation → Paramètres.

Mise à jour

Étape 1 : Remplacer les fichiers

Remplacez le dossier billing dans extensions/addons/ par la nouvelle version.

Étape 2 : Exécuter les migrations

Étape 3 : Vider les caches

Étape 4 : Vérifier

  • Vérifiez que toutes les pages de facturation se chargent correctement dans le panneau d’administration.
  • Vérifiez que les statistiques du tableau de bord sont exactes.
  • Testez la création d’une nouvelle facture et la génération d’un PDF.
  • Vérifiez que les commandes planifiées fonctionnent toujours correctement.

Dépannage

La génération de PDF de facture échoue

  • Assurez-vous que barryvdh/laravel-dompdf est installé : composer require barryvdh/laravel-dompdf.
  • Vérifiez que le chemin du logo PDF (dans les paramètres) pointe vers un fichier image valide.
  • Vérifiez que le répertoire storage est accessible en écriture.

Les factures récurrentes ne se génèrent pas

  • Assurez-vous que le planificateur Laravel fonctionne : * * * * * cd /path-to-project && php artisan schedule:run >> /dev/null 2>&1
  • Vérifiez que la facture récurrente est active (is_active = true).
  • Vérifiez que next_invoice_date n’est pas dans le futur.
  • Vérifiez que end_date et occurrences_limit n’ont pas été atteints.
  • Exécutez manuellement pour déboguer : php artisan billing:generate-recurring

Les notifications de retard ne sont pas envoyées

  • Vérifiez que notify_invoice_overdue est activé dans les paramètres de facturation.
  • Vérifiez que le statut de la facture est sent ou partial (seuls ces statuts passent en retard).
  • Vérifiez la configuration du courrier dans .env (paramètres SMTP).
  • Exécutez manuellement pour déboguer : php artisan billing:check-overdue

Le paiement en ligne n’est pas disponible

  • Au moins un add-on de passerelle de paiement (Stripe, PayPal, etc.) doit être installé et actif.
  • La facture doit implémenter le contrat Payable (intégré).
  • La facture doit avoir un balance_due > 0 et un public_token valide.

Le formulaire de demande de devis n’est pas visible

  • Assurez-vous que l’add-on de facturation est activé.
  • Vérifiez que la route front.billing.quotes.index est accessible.
  • Si vous utilisez un lien de menu, vérifiez que l’élément de menu pointe vers la bonne route.

Le client n’est pas lié à un compte utilisateur

  • Le champ user_id sur les clients de facturation est optionnel.
  • Lors de la conversion d’un devis en facture, un nouveau client de facturation est créé automatiquement s’il n’en existe pas pour le demandeur.
  • Vous pouvez lier manuellement un client à un utilisateur via le formulaire de modification du client.

Les calculs de taxes semblent incorrects

  • La taxe est calculée par ligne d’article, pas sur le total de la facture.
  • Vérifiez que le bon taux de taxe est attribué à chaque ligne d’article.
  • Vérifiez si les taux de taxe composés sont utilisés correctement : les taxes composées s’appliquent en plus des autres taxes.
  • Assurez-vous que tax_enabled est défini sur true dans les paramètres de facturation.

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Besoin d'aide ? Créez un ticket de support

Créer un Ticket