Aller au contenu principal

API — Facturation

Les endpoints de facturation gèrent l'abonnement Stripe de votre tenant SendAs.me.

Modèle de facturation

SendAs.me facture 0,99 € par boîte email connectée par mois.

Définition d'une boîte email : Un compte OAuth (Gmail ou Office 365) connecté à une application SendAs.me. La facturation est par connexion OAuth, pas par personne.

  • Un utilisateur qui connecte Gmail = 1 licence
  • Un utilisateur qui connecte Gmail et Office 365 = 2 licences
  • 3 applications avec 5 boîtes OAuth distinctes → 4,95 €/mois

La facturation est gérée via Stripe Billing Meters et s'effectue automatiquement en fin de mois.

GET /stripe/subscription

Retourne les détails de l'abonnement Stripe actuel du tenant.

Requête :

GET /stripe/subscription
X-Api-Secret: votre_api_secret

Réponse 200 (abonnement actif) :

{
"status": "active",
"stripe_subscription_id": "sub_1234567890abcdef",
"stripe_customer_id": "cus_abcdef1234567890",
"current_period_start": "2024-01-01T00:00:00Z",
"current_period_end": "2024-02-01T00:00:00Z",
"cancel_at_period_end": false,
"active_users_count": 5,
"amount_per_user": 0.99,
"currency": "eur",
"estimated_invoice": {
"amount": 4.95,
"currency": "eur",
"period": "2024-01"
},
"payment_method": {
"type": "card",
"brand": "visa",
"last4": "4242",
"exp_month": 12,
"exp_year": 2026
}
}

Réponse 200 (sans abonnement) :

{
"status": "no_subscription",
"stripe_customer_id": null,
"active_users_count": 0,
"amount_per_user": 0.99,
"currency": "eur"
}

Statuts possibles :

StatutDescription
activeAbonnement actif et à jour
trialingPériode d'essai en cours
past_duePaiement en retard — mise à jour du moyen de paiement requise
canceledAbonnement annulé
no_subscriptionAucun abonnement créé

POST /stripe/checkout-setup

Crée une session Stripe Checkout ou Customer Portal pour configurer ou modifier le moyen de paiement.

Requête :

POST /stripe/checkout-setup
X-Api-Secret: votre_api_secret
Content-Type: application/json

Corps :

ChampTypeObligatoireDescription
portal_urlstringOuiURL de retour après la session Stripe (généralement l'URL du portail)
{
"portal_url": "https://app.sendas.me/billing"
}

Réponse 200 :

{
"checkout_url": "https://checkout.stripe.com/pay/cs_live_a1b2c3d4e5f6...",
"session_id": "cs_live_a1b2c3d4e5f6g7h8i9j0",
"expires_at": "2024-01-15T11:30:00Z"
}

Redirigez l'utilisateur vers checkout_url pour compléter la configuration du paiement.

Utilisation dans le portail

Le portail SendAs.me appelle automatiquement cet endpoint lorsque l'utilisateur clique sur "Gérer l'abonnement" ou "Ajouter un moyen de paiement". La session Stripe expire après 30 minutes.

POST /stripe/cancel-subscription

Annule l'abonnement Stripe à la fin de la période de facturation courante. Le tenant conserve l'accès jusqu'à la fin de la période payée.

Requête :

POST /stripe/cancel-subscription
X-Api-Secret: votre_api_secret

Réponse 200 :

{
"status": "cancellation_scheduled",
"cancel_at": "2024-02-01T00:00:00Z",
"message": "Votre abonnement sera annulé le 1er février 2024. Vous conservez l'accès jusqu'à cette date."
}
Annulation non immédiate

L'annulation ne prend pas effet immédiatement. Vous continuez à bénéficier du service jusqu'à la fin de la période pour laquelle vous avez payé. Pour réactiver avant la date d'annulation, contactez le support ou utilisez le portail.

Réponse 400 (pas d'abonnement actif) :

{
"detail": "Aucun abonnement actif à annuler"
}

Webhooks Stripe

SendAs.me écoute les webhooks Stripe pour maintenir l'état de facturation à jour. Les événements traités incluent :

Événement StripeAction SendAs.me
customer.subscription.createdActivation du compte
customer.subscription.updatedMise à jour du statut
customer.subscription.deletedDésactivation du compte
invoice.payment_succeededConfirmation du paiement
invoice.payment_failedNotification de paiement échoué
Configuration requise

Pour que la facturation fonctionne, vous devez configurer l'endpoint webhook Stripe dans votre Dashboard Stripe :

  • URL : https://api.sendas.me/stripe/webhook
  • Événements : Sélectionner tous les événements customer.subscription.* et invoice.*