Générateur de devis
Le générateur de devis transforme vos lignes de prestation — client, désignation, quantités, prix HT et TVA — en un devis PDF prêt à envoyer, avec les mentions obligatoires françaises et une durée de validité. Il s’adresse aux artisans, indépendants et TPE qui établissent des devis en France.
Exécuter en ligne
Exécutez cette tâche sur nos serveurs, avec votre compte. Les outils gratuits tournent dans votre navigateur ; celui-ci est facturé sur votre solde KIT au prix affiché ci-dessus.
Les mentions qu’un devis doit porter
En France, un devis engage : il doit indiquer la date, la durée de validité de l’offre, l’identité et le SIRET du prestataire, le détail des prestations, les prix unitaires HT, le taux et le montant de TVA, puis le total HT et TTC. Pour un auto-entrepreneur en franchise, la mention « TVA non applicable, art. 293 B du CGI » remplace la ligne de taxe. Le générateur réserve un emplacement à chacune de ces mentions, afin que rien ne soit oublié avant l’envoi au client.
De vos lignes à une page prête à envoyer
Vous renseignez le client, les lignes de prestation et les taux ; l’outil calcule les totaux et compose une page A4 lisible, avec votre en-tête. Le résultat est un PDF que vous pouvez relire, enregistrer et transmettre par e-mail, sans logiciel de traitement de texte ni tableur. La mise en page reste sobre et professionnelle, adaptée aussi bien à une prestation de service qu’à une vente de fournitures.
Numérotation, validité et suite du devis
Un devis se numérote et se date ; sa durée de validité, souvent de trente jours, protège votre prix face aux variations de coûts. Une fois le devis accepté et signé « bon pour accord » par le client, il sert de base à la facture correspondante. Vous gardez la maîtrise de la numérotation et pouvez reprendre les mêmes lignes pour éditer ensuite la facture, sans ressaisir le détail des prestations.
Ce que coûte chaque devis
La génération d’un devis est facturée à l’usage: $0.040 par requête, plus $0.001 par document produit. Aucun abonnement — vous payez ce que vous générez, au prix affiché. Le service s’utilise sur le web, depuis cette page, et il existe aussi une API pour les intégrations; une application mobile, l’e-mail et Telegram suivront. Les prix du service sont indiqués en dollars US; l’euro n’apparaît que dans le devis lui-même.
Cas d’usage
Menuiserie Rousseau & Fils
Thomas Rousseau chiffre une bibliothèque sur mesure : trois lignes de prestation, un acompte de 30 %, une validité de trente jours. Il obtient un devis PDF propre à faire signer « bon pour accord », total affiché 2 480,00 € TTC.
Nadia Benali, graphiste indépendante
Auto-entrepreneuse en franchise de TVA, Nadia établit un devis pour la refonte d’un logo. La ligne de taxe est remplacée par « TVA non applicable, art. 293 B du CGI », et le total ressort à 650 € net.
Atelier Garnier SARL
Pour répondre vite à un appel d’offres, l’atelier prépare plusieurs devis à partir d’un même modèle, via l’API, et les envoie dans la journée sous une numérotation cohérente.
Questions fréquentes
Ce devis a-t-il une valeur légale ?
Le document reprend les mentions attendues d’un devis en France, mais sa validité tient à son contenu : identité et SIRET exacts, prestations détaillées, prix et durée de validité. L’outil met en forme ce que vous saisissez ; il ne remplace ni votre vérification ni, le cas échéant, un conseil professionnel.
Puis-je gérer la franchise de TVA en auto-entrepreneur ?
Oui. Lorsque vous n’êtes pas assujetti, la mention « TVA non applicable, art. 293 B du CGI » prend la place du taux, et le total s’affiche sans taxe.
Combien coûte la génération d’un devis ?
$0.040 par requête et $0.001 par document, sans abonnement. Vous ne payez que les devis réellement générés, au tarif publié en dollars US.
Mes données de facturation sont-elles conservées ?
Les informations que vous saisissez sont envoyées à nos serveurs le temps de composer le PDF, puis supprimées. Nous ne les conservons pas et personne ne les consulte pour un autre usage.
Faut-il créer un compte ?
Il n'y a pas d'offre gratuite — les paliers gratuits sont détournés et ralentissent tout le monde. L'accès fonctionne avec un solde prépayé ForHosting KIT : rechargez à partir de $10.00 (il n'expire jamais) et chaque requête est facturée à son prix publié, donc un appel sans solde renvoie HTTP 402. Pas d'abonnement, pas de jetons, pas de crédits inventés, et une tâche en échec n'est jamais facturée.
L’assistance est-elle disponible en français ?
Non. Une vraie personne vous répond, en espagnol ou en anglais. Nous préférons vous le dire clairement plutôt que de vous promettre un support en français qui n’existe pas.
Puis-je transformer le devis accepté en facture ?
Oui. Une fois le devis signé « bon pour accord », vous reprenez ses lignes pour éditer la facture correspondante, sans ressaisir chaque prestation.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/pdf/quote \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pdf":"https://ejemplo.com/documento.pdf"}'const res = await fetch("https://api.kit.forhosting.com/pdf/quote", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pdf": "https://ejemplo.com/documento.pdf"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/quote",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pdf": "https://ejemplo.com/documento.pdf"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/quote", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pdf":"https://ejemplo.com/documento.pdf"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pdf":"https://ejemplo.com/documento.pdf"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/quote", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"pdf": "https://ejemplo.com/documento.pdf"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.quote",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 25 |
max_pages | 200 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
422 | task_failed | La tâche a échoué : elle ne vous est pas facturée. |