Upgrade e portale fatturazione
Stripe Checkout per cambi piano e Customer Portal per gestire i pagamenti.
Aggiorna il tenant tramite Stripe Checkout o gestisci un abbonamento esistente nel Stripe Customer Portal. Entrambi i flussi richiedono autenticazione JWT della dashboard (JwtAuthGuard + contesto tenant).
Flusso di sottoscrizione
Elenca i piani disponibili
GET /billing/plans Authorization: Bearer <jwt>Restituisce i piani attivi con limiti email mensili, grant token IA e price ID Stripe.
Avvia checkout
POST /billing/checkout Authorization: Bearer <jwt> X-Tenant-Id: clxxxxxxxx Content-Type: application/json{ "planSlug": "pro", "successUrl": "https://tua-app.com/billing/success", "cancelUrl": "https://tua-app.com/billing/cancel" }Risposta:
{ "url": "https://checkout.stripe.com/..." }— reindirizza il browser dell'admin a quell'URL.Stripe completa il pagamento
Stripe invia
checkout.session.completedaPOST /billing/webhook. MailingCore attiva l'abbonamento e accredita i token IA mensili del piano.Verifica sottoscrizione
GET /billing/subscription Authorization: Bearer <jwt> X-Tenant-Id: clxxxxxxxxConferma slug piano, stato e date del periodo corrente prima di riprendere invii ad alto volume.
Customer Portal
Per aggiornare metodo di pagamento, fatture, cancellazione o riattivazione:
POST /billing/portal
Authorization: Bearer <jwt>
X-Tenant-Id: clxxxxxxxx
Risposta: { "url": "https://billing.stripe.com/..." }. L'URL di ritorno punta per default alla dashboard.
Quando fare upgrade
| Situazione | Azione |
|---|---|
X-Quota-Warning: true sugli invii | Valuta l'upgrade prima del 110% di grazia — vedi Applicazione quota |
| HTTP 429 quota mensile superata | POST /billing/checkout con planSlug superiore, o attendi il ciclo successivo |
| Più domini, membri o template | Confronta i tier in Piani e prezzi |
Scorciatoia dashboard
La route Billing della dashboard replica questi endpoint: visualizza utilizzo, avvia checkout o apri il Customer Portal senza curl.