Vai al contenuto principale

Documentation Index

Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt

Use this file to discover all available pages before exploring further.

Nuove funzionalità

1. Autorizzazioni

Dodo Payments ora include le Autorizzazioni unificate — un livello unico che alimenta la consegna automatica per ogni integrazione di adempimento. Un singolo prodotto può offrire più autorizzazioni per ogni acquisto riuscito o abbonamento attivo.
Cruscotto delle autorizzazioni con l'elenco delle autorizzazioni a sinistra e l'attività di concessione a destra
Cinque nuove integrazioni di piattaforma Fino ad ora, Dodo Payments forniva chiavi di licenza e file digitali automaticamente all’acquisto. Ora le autorizzazioni estendono tale ambito a cinque piattaforme aggiuntive — i clienti paganti possono ottenere l’accesso alla tua comunità, al tuo codice o al tuo contenuto nel momento in cui il pagamento viene confermato, senza adempimento manuale da parte tua:
IntegrazioneCosa offreComportamento di revoca
DiscordAssegna un ruolo scelto nel tuo server Discord dopo che il cliente completa l’OAuthRuolo rimosso alla cancellazione/rimborso
GitHubAggiunge il cliente come collaboratore a un repository privato al livello di autorizzazione che scegliCollaboratore rimosso alla cancellazione/rimborso
TelegramFornisce un invito una tantum per una chat o un canale privato tramite il tuo bot TelegramCliente estromesso dalla chat alla cancellazione/rimborso
FramerSblocca un link di remix di un modello di Framer protetto da un codice di accessoCodice di accesso disattivato alla cancellazione/rimborso
NotionDuplica una pagina modello di Notion nello spazio di lavoro del cliente dopo l’autorizzazione tramite OAuthPagina consegnata archiviata alla cancellazione/rimborso
Queste si aggiungono alle integrazioni esistenti di chiavi di licenza (chiavi uniche con limiti di attivazione e scadenza) e file digitali (URL di download prefirmati per e-book, template, media), ora gestite attraverso lo stesso ciclo di vita della concessione. Cosa ottieni fuori dalla scatola
CapacitàDescrizione
Template riutilizzabiliDefinisci una concessione una volta (limiti di attivazione, pacchetti di file, ruolo di Discord, permesso repo, ecc.) e collegala a qualsiasi prodotto
Concessioni automaticheEmesse su payment.succeeded e subscription.active, idempotenti tra i rinnovi e le riattivazioni
Revoca consapevole del ciclo di vitaRevocata su subscription.cancelled, subscription.on_hold, subscription.expired, refund.succeeded, subscription.plan_changed o revoca manuale API/dashboard — con un revocation_reason popolato
OAuth + flussi diretti della piattaformaOAuth per Discord, GitHub e Notion consenso degli abbonati; chiamate dirette alla piattaforma per Telegram, Framer e file digitali
Rilevamento delle deriveRileva quando un ruolo Discord, un collaboratore di GitHub o una pagina di Notion va fuori sincronia a livello di piattaforma e revoca con revocation_reason: platform_external
Crittografia a riposoTutti i token delle piattaforme (OAuth, bot, installazioni app) memorizzati con AES-256-GCM
Webhook Quattro nuovi eventi di ciclo di vita si attivano per ogni concessione:
EventoQuando si attiva
entitlement_grant.createdViene creata una nuova concessione per un cliente
entitlement_grant.deliveredAccesso del cliente fornito
entitlement_grant.failedLa consegna non è stata completata; ispeziona error_code e error_message
entitlement_grant.revokedAccesso ritirato; ispeziona revocation_reason
Per nuove integrazioni, ascolta entitlement_grant.delivered piuttosto che payment.succeeded. Il successo del pagamento non significa che la consegna è terminata, in particolare per le integrazioni basate su OAuth.
Per saperne di più: Autorizzazioni | Webhook di concessione delle autorizzazioni

2. Motivi di cancellazione dell’abbonamento nel Portale Clienti

Quando i clienti cancellano un abbonamento dal Portale Clienti, ora vengono invitati a condividere perché stanno cancellando prima di confermare. La ragione catturata viene memorizzata sull’abbonamento come cancellation_feedback, mostrata nei payload dell’API e del webhook, e disponibile sul cruscotto in modo che tu possa individuare i modelli di attrito a colpo d’occhio.
Modalità di cancellazione del Portale Clienti con il menu a tendina 'Perché stai cancellando?' che mostra ragioni come Troppo costoso, Funzionalità mancanti e Altro
Opzioni di ragione
ValoreEtichetta verso il cliente
too_expensiveTroppo costoso
missing_featuresFunzionalità mancanti
switched_servicePassato a un altro servizio
unusedNon lo uso abbastanza
customer_serviceServizio clienti scadente
low_qualityScarsa qualità
too_complexTroppo complesso
otherAltro
Dove appare
  • Oggetto Abbonamento: Nuovo campo cancellation_feedback (uno dei valori sopra) e cancellation_comment (testo libero opzionale), popolato quando il cliente cancella
  • subscription.cancelled webhook: Entrambi i campi sono inclusi nel payload
  • API: Passa cancellation_feedback e cancellation_comment a PATCH /subscriptions/{id} quando esegui una cancellazione in modo programmatico
// Reading the captured feedback
const subscription = await client.subscriptions.retrieve('sub_123');
console.log(subscription.cancellation_feedback); // e.g., "too_expensive"
console.log(subscription.cancellation_comment);  // e.g., "Switching to a competitor"
Combina cancellation_feedback con Gestione Riscosso Abbonamento per personalizzare le tue email di riconquista — ad esempio, invia un codice sconto ai cancellatori too_expensive e un sondaggio ‘cosa manca?’ ai cancellatori missing_features.
Per saperne di più: Portale Clienti | Webhook di abbonamento

3. Importo minimo configurabile del mandato per INR E-Mandates

Ora puoi configurare il limite di mandato per gli e-mandates INR sugli abbonamenti con carta indiana ricorrente. Precedentemente, ogni abbonamento con carta indiana sotto ₹15,000 utilizzava un mandato a richiesta fisso di ₹15,000. Ora puoi sovrascrivere questo limite a livello del commerciante — e per sessione di checkout o abbonamento se necessario. L’importo del mandato registrato presso la banca del cliente è max(mandate_min_amount_inr_paise, billing_amount), quindi questo valore funge da tetto massimo di autorizzazione mostrato al cliente ogni volta che la fattura è inferiore al limite.
// Per-subscription override
const subscription = await client.subscriptions.create({
  product_id: 'prod_inr_monthly',
  customer: { email: 'customer@example.in' },
  billing: { country: 'IN' /* ... */ },
  mandate_min_amount_inr_paise: 2_000_000 // ₹20,000 ceiling for this subscription
});

// Or via a checkout session
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_inr_monthly', quantity: 1 }],
  mandate_min_amount_inr_paise: 2_000_000,
  return_url: 'https://yoursite.com/return'
});
Priorità di risoluzione
  1. Sovrascrittura per richiesta (mandate_min_amount_inr_paise sulla sessione di checkout, pagamento o abbonamento)
  2. Impostazione a livello di commerciante nelle impostazioni di business
  3. Sistema predefinito di ₹15,000 (1,500,000 paise)
CampoTipoGammaSi applica a
mandate_min_amount_inr_paiseinteger (Paise INR)>= 1Abbonamenti INR con carta indiana su connettori non-Airwallex
Questa impostazione interessa solo gli e-mandates registrati per carte emesse in India (Visa, Mastercard, RuPay) su abbonamenti INR. Gli abbonamenti UPI seguono il loro flusso AutoPay e non sono interessati.
Per saperne di più: Metodi di Pagamento in India | Abbonamenti con Mandati RBI

4. Impostazione di Business Inclusiva delle Commissioni di Valuta Adattiva

Valuta Adattiva è la funzione che ti permette di addebitare i clienti nella loro valuta locale. Per impostazione predefinita, la commissione di valuta adattiva del 2-4% è a carico del cliente e aggiunta oltre il tuo prezzo mostrato. Con la nuova impostazione Commissioni Inclusive, puoi invertire questo: mantenere invariato il prezzo mostrato per il cliente e assorbire la commissione tu stesso. Dove configurare Vai a Impostazioni → Business, assicurati che Prezzi Adattivi sia attivato e attiva Commissioni Inclusive nella sezione Valuta Adattiva. Sovrascrittura per richiesta Puoi anche sovrascrivere il predefinito del commerciante per singoli checkout, pagamenti e abbonamenti su richiesta utilizzando il boolean adaptive_currency_fees_inclusive:
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
  adaptive_currency_fees_inclusive: true, // override business default
  return_url: 'https://yoursite.com/return'
});
ModalitàCliente vedeCommerciante si risolve
Esclusivo (predefinito)Prezzo locale + tassa 2-4% in piùPrezzo base completo
InclusivoPrezzo locale (invariato)Prezzo base meno la tassa 2-4%
Le transazioni INR → INR sono sempre trattate come inclusive indipendentemente dall’impostazione aziendale o dalla sovrascrittura per richiesta.
Per saperne di più: Valuta Adattiva

5. App Desktop Dodo Payments

L’app ufficiale Dodo Payments Desktop è ora generalmente disponibile per macOS, Windows e Linux. Esegui il tuo cruscotto pagamenti come un’app nativa veloce — senza bisogno di una scheda browser.
PiattaformaDownload
macOS (Apple Silicon)Dodo.Payments_<version>_aarch64.dmg
macOS (Intel)Dodo.Payments_<version>_x64.dmg
WindowsDodo.Payments_<version>_x64-setup.exe (o .msi)
Linux (Debian/Ubuntu)Dodo.Payments_<version>_amd64.deb
Linux (Fedora/RHEL)Dodo.Payments-<version>-1.x86_64.rpm
Linux (AppImage, auto-aggiornamento)Dodo.Payments_<version>_amd64.AppImage
Cosa c’è dentro
  • Piccolo binario nativo — costruito con Tauri sul webview nativo del sistema, ~5 MB in totale (senza Chromium incluso)
  • Firmato e notarizzato — le versioni di macOS sono firmate con Apple Developer ID e notarizzate, quindi senza avvisi di Gatekeeper
  • Aggiornamento automatico — verifica ogni 4 ore e applica automaticamente aggiornamenti firmati da GitHub Releases (funziona su macOS, Windows e Linux AppImage)
  • Vassoio di sistema + barra menu — nascondi nel vassoio su macOS, menù completi File/Modifica/Vista/Aiuto con scorciatoie da tastiera (⌘⇧H vai al cruscotto, ⌘L copia URL corrente, ⌘⌥I strumenti per sviluppatori)
  • Supporto deep-link — i link di autenticazione magic-link si aprono direttamente nell’app
  • Multi-finestra — apri più cruscotti uno accanto all’altro
Preleva l’ultimo installer per la tua piattaforma dalla pagina Rilasci App Desktop. Il repository è completamente open source.

6. Pagamenti Stablecoin (USDC, USDP, USDG)

Accetta pagamenti stablecoin a livello globale con regolamento in USD. I clienti pagano dal loro portafoglio stablecoin preferito sulla rete di loro scelta; ricevi fiat USD senza esposizione alla volatilità delle criptovalute, senza rimborsi e senza necessità di infrastrutture bancarie da parte del cliente. Valute e reti supportate
StablecoinReti
USDCEthereum, Solana, Polygon, Base
USDPEthereum, Solana
USDGEthereum
Copertura
DettaglioValore
Valuta di fatturazioneUSD
Paesi supportatiGlobale (esclusa l’India)
AbbonamentiNon supportato (solo pagamenti una tantum)
Importo minimo$0.50
RegolamentoUSD
Configurazione Passa crypto in allowed_payment_method_types quando crei una sessione di checkout:
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_123', quantity: 1 }],
  allowed_payment_method_types: ['crypto', 'credit', 'debit'],
  return_url: 'https://example.com/success'
});
Al cliente viene mostrato un indirizzo di portafoglio e un codice QR con l’importo stablecoin calcolato al tasso di cambio in tempo reale; una volta che la blockchain conferma la transazione, il tuo webhook payment.succeeded si attiva e il cliente viene reindirizzato alla tua pagina di successo.
I pagamenti stablecoin sono irrevocabili per design — non ci sono rimborsi. Consigliamo sempre di offrire credit e debit come metodi di riserva per i clienti senza un portafoglio stablecoin.
Per saperne di più: Pagamenti Stablecoin

7. Importa Chiavi di Licenza Esistenti

Ora puoi importare chiavi di licenza da un altro sistema in Dodo Payments usando la API Crea Chiave di Licenza. Questo sblocca la migrazione senza interruzioni da qualsiasi fornitore esterno di chiavi di licenza, così i tuoi clienti esistenti possono continuare ad attivare, convalidare e disattivare le loro chiavi contro Dodo Payments senza nuova emissione.
const licenseKey = await client.licenseKeys.create({
  customer_id: 'cus_abc123',
  product_id: 'prod_456',
  key: 'YOUR-EXISTING-LICENSE-KEY',
  activations_limit: 5,
  expires_at: '2026-12-31T23:59:59Z',
});
Le chiavi importate sono contrassegnate con source: "import" (rispetto a source: "auto" per le chiavi generate automaticamente al pagamento), in modo da poter distinguere l’inventario migrato dalle chiavi emesse organicamente quando si interroga GET /license_keys. Il payment_id sulle chiavi importate è null perché non sono collegate a una transazione Dodo Payments.
Le chiavi di licenza create o aggiornate tramite l’API non attivano notifiche email ai clienti. Se hai bisogno di notificare i clienti su una chiave importata, gestiscilo separatamente nella tua applicazione.
Migrazione da Polar.sh o Lemon Squeezy? La dodo-migrate CLI automatizza le importazioni in massa di prodotti, clienti, sconti e chiavi di licenza in un unico comando.
Per saperne di più: Chiavi di Licenza | API Crea Chiave di Licenza

8. require_phone_number per le sessioni di checkout

Obbliga i clienti a fornire un numero di telefono durante il checkout impostando feature_flags.require_phone_number: true quando crei una sessione di checkout. Il numero di telefono diventa un campo obbligatorio nel modulo di checkout, con la convalida del modulo che mostra “Il numero di telefono è obbligatorio” se il cliente lo lascia vuoto.
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
  feature_flags: {
    allow_phone_number_collection: true,
    require_phone_number: true
  },
  return_url: 'https://yoursite.com/return'
});
FlagPredefinitoComportamento
allow_phone_number_collectiontrueMostra il campo del numero di telefono al checkout
require_phone_numberfalseRende obbligatorio il campo del numero di telefono
require_phone_number: true richiede allow_phone_number_collection: true. L’API rifiuta le sessioni in cui require_phone_number è vero mentre la raccolta del telefono è disabilitata.
Utile per SaaS B2B, industrie regolamentate o qualsiasi flusso in cui hai bisogno di un canale di contatto verificato per supporto, revisione delle frodi o conformità.
Per saperne di più: Funzionalità di checkout | API Crea sessione di checkout

Correzioni di bug e miglioramenti

  • Correzioni di bug minori e miglioramenti di stabilità in tutta la piattaforma
Last modified on May 14, 2026