monsiteo aide

Facturation et abonnement

État de l'abonnement et factures, souscription par Stripe Checkout, portail client, résiliation, reprise, et liaison Novadesko via l'API.

Les paiements sont gérés par Stripe. L'API ne manipule jamais de numéro de carte : elle renvoie des liens vers les pages sécurisées de Stripe (Checkout pour souscrire, portail client pour gérer le moyen de paiement et les factures). L'état de l'abonnement est ensuite mis à jour par les webhooks Stripe.

Les formules et leurs limites :

Gratuit Site Site + Novadesko Sur mesure
Prix mensuel (TTC) 0 € / mois 9 € / mois 24 € / mois Sur devis
Prix annuel (TTC) Gratuit 90 € / an 240 € / an Sur devis
Sites 1 1 3 Selon le projet
Pages par site 5 30 100 Selon le projet
Domaine personnalisé Non Oui Oui Selon le projet
Mention « Créé avec Monsiteo » Affichée Retirée Retirée Selon le projet
Générations IA par mois 3 50 200 Selon le projet
Stockage des images 200 Mo 2 Go 10 Go Selon le projet
Novadesko (facturation) Non Non Inclus Selon le projet

État de l'abonnement#

GET /v1/billing · Jeton

curl https://api.monsiteo.com/v1/billing \
  -H "Accept: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
{
  "plan": "site",
  "limits": { "name": "Site", "formula": 1, "monthly": 9, "yearly": 90, "stripe_monthly": "price_...", "stripe_yearly": "price_...", "sites": 1, "pages": 30, "custom_domain": true, "branding": false, "ai_generations": 50, "storage_mb": 2048, "novadesko": false },
  "trial_eligible": false,
  "subscription": {
    "id": 12,
    "plan": "site",
    "interval": "month",
    "status": "active",
    "on_trial": false,
    "trial_ends_at": "2026-10-24T14:02:11+00:00",
    "current_period_end": "2026-11-24T14:02:11+00:00",
    "cancel_at_period_end": false,
    "ends_at": null
  },
  "payments": [
    {
      "id": 55,
      "number": "MS-2026-0042",
      "status": "paid",
      "amount": 9,
      "currency": "EUR",
      "description": "Abonnement Monsiteo Site",
      "pdf_url": "https://pay.stripe.com/invoice/acct_.../pdf",
      "date": "2026-10-24T14:05:37+00:00"
    }
  ]
}
Champ Description
plan Formule effective (free sans abonnement valide).
limits Limites de la formule effective.
trial_eligible true si le compte n'a jamais eu d'abonnement : la prochaine souscription commencera par 14 jours d'essai gratuit. Un seul essai par compte.
subscription Abonnement en cours (essai, actif ou impayé), ou null.
subscription.interval month ou year.
subscription.status trialing (essai), active, past_due (paiement en échec, relances en cours). Les statuts canceled et expired ne sont jamais renvoyés ici (l'abonnement n'est plus « en cours »).
subscription.cancel_at_period_end Résiliation demandée : l'abonnement s'arrêtera à ends_at.
payments Les 50 derniers paiements, du plus récent au plus ancien : status vaut paid ou failed, amount en euros TTC, pdf_url mène à la facture Stripe.

Bon à savoir Pendant un impayé (past_due), les fonctions payantes restent accessibles le temps des relances automatiques de Stripe. Si le paiement n'aboutit pas après la dernière relance, Stripe met fin à l'abonnement (selon les réglages de relance du compte Stripe) et le compte repasse en Gratuit.

Souscrire (Checkout)#

POST /v1/billing/checkout · Jeton

Renvoie l'URL d'une session Stripe Checkout. Redirigez l'utilisateur vers cette URL : il y saisit son moyen de paiement, son adresse de facturation (obligatoire) et éventuellement son numéro de TVA et un code promo. Il revient ensuite sur https://app.monsiteo.com/#/billing?checkout=success (ou checkout=cancel s'il abandonne).

Paramètre Type Obligatoire Règles
plan chaîne oui site ou site_novadesko
interval chaîne non month (par défaut) ou year
curl -X POST https://api.monsiteo.com/v1/billing/checkout \
  -H "Accept: application/json" -H "Content-Type: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd" \
  -d '{"plan":"site","interval":"year"}'
{ "url": "https://checkout.stripe.com/c/pay/cs_test_a1B2c3D4..." }

Si le compte est éligible, l'abonnement démarre par 14 jours d'essai : aucun montant n'est prélevé avant la fin de l'essai. La formule est appliquée dès que Stripe confirme la souscription par webhook, en général quelques secondes après le retour.

Erreurs : 422 si plan ou interval est invalide, ou « Formule inconnue ou non configurée dans Stripe. ».

Attention Pour changer de formule ou de rythme de paiement quand un abonnement est déjà en cours, passez par le portail client plutôt que par une nouvelle session Checkout, afin de ne pas créer un second abonnement chez Stripe.

Portail client Stripe#

POST /v1/billing/portal · Jeton

Renvoie l'URL du portail client Stripe : moyen de paiement, adresse et numéro de TVA, historique et téléchargement des factures, et selon la configuration du portail, changement de formule. Retour vers https://app.monsiteo.com/#/billing.

curl -X POST https://api.monsiteo.com/v1/billing/portal \
  -H "Accept: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
{ "url": "https://billing.stripe.com/p/session/test_YWNjdF8x..." }

Résilier#

POST /v1/billing/cancel · Jeton

Demande l'arrêt de l'abonnement à la fin de la période en cours (ou à la fin de l'essai). Les fonctions payantes restent disponibles jusque-là, puis le compte repasse en Gratuit : les sites restent en ligne sur leur adresse .monsiteo.com, avec les limites de la formule Gratuit.

curl -X POST https://api.monsiteo.com/v1/billing/cancel \
  -H "Accept: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
{ "ok": true, "ends_at": "2026-11-24T14:02:11+00:00" }

Sans abonnement en cours : {"ok": false, "ends_at": null}.

Annuler la résiliation#

POST /v1/billing/resume · Jeton

Tant que la date de fin n'est pas atteinte, annule la résiliation : l'abonnement continue normalement.

curl -X POST https://api.monsiteo.com/v1/billing/resume \
  -H "Accept: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
{ "ok": true }

Novadesko#

La formule Site + Novadesko inclut un compte Novadesko (logiciel de facturation) relié au compte Monsiteo. La liaison est lancée automatiquement à la souscription ; ces routes permettent de suivre son état ou de la relancer.

Lire l'état de la liaison#

GET /v1/novadesko · Jeton

{ "included": true, "status": "linked", "company_id": "8812", "login_url": "https://app.novadesko.com" }
Champ Description
included La formule actuelle inclut-elle Novadesko ?
status none (jamais demandé), pending (en cours, traité par l'équipe si besoin), linked (relié), failed (échec, l'équipe est prévenue).
company_id Identifiant de la société côté Novadesko, une fois relié.
login_url Adresse de connexion à Novadesko.

Relancer la liaison#

POST /v1/novadesko/link · Jeton

curl -X POST https://api.monsiteo.com/v1/novadesko/link \
  -H "Accept: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
{ "status": "linked", "message": null }

message contient la dernière erreur éventuelle quand status vaut pending ou failed. Erreur 402 si la formule n'inclut pas Novadesko : « Novadesko est inclus dans la formule Site + Novadesko. ».

Mis à jour le 26 octobre 2026