> ## 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.

# Customer Portal

> Empower customers to self-serve and manage their subscriptions, billing history, license keys, and profile securely.

<Info>
  The Customer Portal is a secure, hosted area where your customers can manage subscriptions, view invoices and access license keys details—without contacting support.
</Info>

<CardGroup cols={2}>
  <Card title="Create Portal Session (API)" icon="code" href="/api-reference/customers/create-customer-portal-session">
    Programmatically create secure, time‑bound portal sessions.
  </Card>

  <Card title="Subscriptions" icon="repeat" href="/features/subscription">
    Manage recurring plans, upgrades, downgrades, and add‑ons.
  </Card>
</CardGroup>

<br />

<Frame>
  <img src="https://mintcdn.com/dodopayments/kCngKZVrb0rZMS1f/images/customer-portal/new-portal.png?fit=max&auto=format&n=kCngKZVrb0rZMS1f&q=85&s=9431b2e24142e47cb39dc84c1a0303fe" alt="Portale clienti rinnovato che mostra abbonamenti attivi, metodi di pagamento e cronologia delle fatture" style={{ maxHeight: '500px', width: 'auto' }} width="2876" height="1568" data-path="images/customer-portal/new-portal.png" />
</Frame>

## What Is the Customer Portal?

The portal provides a trusted, branded self‑service experience for customers to:

* **Accedi alla cronologia di fatturazione**: Visualizza le fatture e scarica le ricevute.
* **Gestisci gli abbonamenti**: Visualizza i dettagli degli abbonamenti, annulla gli abbonamenti immediatamente o alla data di fatturazione successiva.
* **Aggiorna i metodi di pagamento**: Modifica i metodi di pagamento per abbonamenti attivi o riattiva abbonamenti in sospeso.
* **Recupera chiavi di licenza**: Accedi a tutte le chiavi associate agli acquisti.
* **Naviga con facilità**: Usa il pulsante indietro per muoverti tra le sezioni del portale senza perdere contesto.

## Key Benefits

* **Volume di supporto ridotto**: I clienti risolvono autonomamente le richieste comuni di fatturazione
* **Time-to-value più veloce**: Accesso immediato a fatture e chiavi
* **Rischio di abbandono ridotto**: Visibilità chiara sui rinnovi e dettagli del piano
* **Sicuro per progettazione**: Accesso tokenizzato con link a scadenza
* **Esperienza localizzata**: Il portale è disponibile in 21 lingue, con rilevamento automatico basato sulle preferenze del browser del cliente

## Access Methods

Customers can reach the portal using either a static link or a one‑time dynamic link.

### Static link (email‑based access)

Customers can request portal access by entering their email at a static link that never expires.

The static portal link format varies by environment:

**Test Mode** (for testing and development):

```bash theme={null}
https://test.customer.dodopayments.com/login/{business_id}
```

**Live Mode** (for production with real transactions):

```bash theme={null}
https://customer.dodopayments.com/login/{business_id}
```

Replace `{business_id}` with your actual business identifier, then share the appropriate link with customers so they can enter their email and receive secure access to the portal.

<Frame>
  <img src="https://mintcdn.com/dodopayments/kIuKVjhdOQFWlzSx/images/customer-portal/email-login.png?fit=max&auto=format&n=kIuKVjhdOQFWlzSx&q=85&s=bd8ee54177bc23e12e3657c87f487bae" alt="Schermata di accesso basata su email" style={{ maxHeight: '500px', width: 'auto' }} width="2880" height="1550" data-path="images/customer-portal/email-login.png" />
</Frame>

<Steps>
  <Step title="Merchant flow">
    1. Go to Sales → Customer.
    2. Click <i>Share invite</i>.
    3. Copy the <i>Static link</i> and share it with your customer.
  </Step>

  <Step title="Customer flow">
    1. Open the static link.
    2. Enter the email used at purchase.
    3. Receive a secure login link to access the portal.

    <Check>
      Existing customers are recognized automatically.
    </Check>
  </Step>
</Steps>

### Dynamic link (magic link)

A personalized, one‑time magic link that sends customers directly into the portal. The link expires in 24 hours.

<Warning>
  Dynamic links expire after 24 hours. If it expires, generate and send a new link.
</Warning>

<Frame>
  <img src="https://mintcdn.com/dodopayments/kIuKVjhdOQFWlzSx/images/customer-portal/magic-link.png?fit=max&auto=format&n=kIuKVjhdOQFWlzSx&q=85&s=8e63714f40468bd6e42c811e194f2698" alt="Accesso diretto tramite link magico" style={{ maxHeight: '500px', width: 'auto' }} width="2880" height="1554" data-path="images/customer-portal/magic-link.png" />
</Frame>

<Steps>
  <Step title="Merchant flow">
    1. Go to Sales → Customer.
    2. Click <i>Share invite</i>.
    3. Copy the <i>Dynamic link</i> and share it with your customer.
  </Step>

  <Step title="Customer flow">
    1. Open the dynamic link.
    2. Access the Customer Portal directly without entering an email.
  </Step>
</Steps>

## Portal Features

The revamped Customer Portal provides a clean, unified interface with a left sidebar and organized sections for all account management needs.

<CardGroup cols={2}>
  <Card title="Active Subscriptions" icon="repeat">
    View all active subscriptions with plan name, price, renewal date, and validity. Click "Manage subscription" to view details, edit billing info, or cancel.
  </Card>

  <Card title="Payment Methods" icon="credit-card">
    View all saved payment methods (cards, UPI, etc.) at a glance. Edit payment methods directly from subscription details.
  </Card>

  <Card title="Billing History" icon="file-invoice">
    View all transactions in a detailed table with date, status, pricing type, entitlements, and downloadable invoices.
  </Card>

  <Card title="Billing Information" icon="user">
    View and edit your name, email, phone number, and billing address from the subscription details page.
  </Card>
</CardGroup>

### Portal Overview

The main portal page displays all active subscriptions, saved payment methods, and billing history in a single scrollable view.

<Frame>
  <img src="https://mintcdn.com/dodopayments/kCngKZVrb0rZMS1f/images/customer-portal/new-portal.png?fit=max&auto=format&n=kCngKZVrb0rZMS1f&q=85&s=9431b2e24142e47cb39dc84c1a0303fe" alt="Pagina principale del portale clienti che mostra abbonamenti attivi e metodi di pagamento" style={{ maxHeight: '500px', width: 'auto' }} width="2876" height="1568" data-path="images/customer-portal/new-portal.png" />
</Frame>

### Payment Methods & Billing History

Scroll down to view saved payment methods and a complete billing history with status indicators and downloadable invoices.

<Frame>
  <img src="https://mintcdn.com/dodopayments/kCngKZVrb0rZMS1f/images/customer-portal/payment-methods-invoices.png?fit=max&auto=format&n=kCngKZVrb0rZMS1f&q=85&s=1aed6644dbb338cda755798eda99a6f2" alt="Metodi di pagamento e cronologia delle fatture con download delle fatture" style={{ maxHeight: '500px', width: 'auto' }} width="2880" height="1560" data-path="images/customer-portal/payment-methods-invoices.png" />
</Frame>

## Supporto Linguistico

Il Portale Clienti è disponibile in **21 lingue**, così i tuoi clienti possono gestire i loro abbonamenti, metodi di pagamento e cronologia delle fatture nella lingua che preferiscono.

### Come funziona la selezione della lingua

* **Rilevamento automatico**: Alla prima visita, il portale rileva la lingua preferita del cliente dalle impostazioni del browser e carica la traduzione corrispondente se disponibile. L'inglese è usato come fallback.
* **Sostituzione manuale**: I clienti possono cambiare la lingua attiva in qualsiasi momento dal selettore di lingua nell'intestazione del portale (disponibile sia su desktop che su mobile).
* **Preferenza persistente**: La lingua selezionata è memorizzata nel cookie `NEXT_LOCALE` (valido per 1 anno) in modo che il portale ricordi la scelta tra le sessioni.

### Lingue Supportate

| Linguaggio        | Codice | Linguaggio  | Codice |
| ----------------- | ------ | ----------- | ------ |
| Inglese (default) | `en`   | Indonesiano | `id`   |
| Arabo             | `ar`   | Italiano    | `it`   |
| Catalano          | `ca`   | Giapponese  | `ja`   |
| Cinese            | `zh`   | Coreano     | `ko`   |
| Olandese          | `nl`   | Malese      | `ms`   |
| Francese          | `fr`   | Polacco     | `pl`   |
| Tedesco           | `de`   | Portoghese  | `pt`   |
| Ebraico           | `he`   | Romeno      | `ro`   |
| Russo             | `ru`   | Spagnolo    | `es`   |
| Svedese           | `sv`   | Thai        | `th`   |
| Turco             | `tr`   |             |        |

## Modifiche al Piano (Upgrade/Downgrade)

Quando i prodotti sono organizzati in **Collezioni di Prodotti**, i clienti possono effettuare l'upgrade o il downgrade tra i piani direttamente dal Portale Clienti.

<Tip>
  **Vuoi abilitare l'upgrade/downgrade per gli abbonamenti esistenti?** Aggiungi i tuoi prodotti di abbonamento a una Collezione di Prodotti. Una volta raggruppati, i clienti possono passare tra i piani nella stessa collezione tramite il Portale Clienti.
</Tip>

### Azioni Disponibili

| Azione        | Descrizione                                                   | Quando Disponibile                                         |
| ------------- | ------------------------------------------------------------- | ---------------------------------------------------------- |
| **Upgrade**   | Passa a un piano di livello superiore nella stessa collezione | L'azienda ha abilitato gli aggiornamenti degli abbonamenti |
| **Downgrade** | Passa a un piano di livello inferiore nella stessa collezione | L'azienda ha abilitato gli aggiornamenti degli abbonamenti |

### Come Funzionano le Modifiche al Piano

1. Il cliente visualizza il proprio abbonamento attuale nel portale
2. Le opzioni di upgrade/downgrade disponibili sono mostrate in base alla collezione di prodotti
3. Il cliente seleziona il nuovo piano
4. Viene calcolata la proroga e il pagamento viene elaborato immediatamente (se applicabile)
5. L'abbonamento viene aggiornato al nuovo piano

<Info>
  Le modifiche al piano sono disponibili solo tra prodotti all'interno della stessa collezione. I prodotti devono essere tipi di fatturazione basati su abbonamento o utilizzo.
</Info>

### Controlli Aziendali

Le aziende possono configurare il comportamento delle modifiche ai piani nelle Impostazioni Abbonamenti:

* **Consenti Aggiornamenti Abbonamenti**: Abilita o disabilita la capacità per i clienti di effettuare l'upgrade o il downgrade dei loro abbonamenti

<Card title="Product Collections" icon="layer-group" href="/features/product-collections">
  Scopri come impostare collezioni di prodotti e configurare percorsi di upgrade/downgrade.
</Card>

## Dettagli dell'Abbonamento

Quando i clienti fanno clic su "Gestisci abbonamento" su qualsiasi abbonamento attivo, vengono portati alla pagina dei dettagli dell'abbonamento. Questa pagina mostra:

* **Dettagli del piano**: Nome dell'abbonamento, prezzo, data di rinnovo e periodo di validità
* **Metodo di pagamento**: La carta o il metodo di pagamento collegato all'abbonamento, con un pulsante "Modifica"
* **Informazioni di fatturazione**: Nome, email, numero di telefono e indirizzo di fatturazione con un pulsante "Modifica"
* **Storico delle fatture**: Una tabella dettagliata di tutti i pagamenti per questo abbonamento
* **Annulla Abbonamento**: Un pulsante prominente per annullare l'abbonamento

<Frame>
  <img src="https://mintcdn.com/dodopayments/kCngKZVrb0rZMS1f/images/customer-portal/subscription-details.png?fit=max&auto=format&n=kCngKZVrb0rZMS1f&q=85&s=4ae46f6878c9343b2e963c516952c9d3" alt="Pagina dei dettagli dell'abbonamento che mostra informazioni sul piano, metodo di pagamento, informazioni di fatturazione e opzione di annullamento" style={{ maxHeight: '500px', width: 'auto' }} width="2880" height="1560" data-path="images/customer-portal/subscription-details.png" />
</Frame>

## Annullare un Abbonamento

I clienti possono annullare il loro abbonamento direttamente dalla pagina dei dettagli dell'abbonamento. Facendo clic su "Annulla Abbonamento" si apre una finestra di conferma con due opzioni:

* **Annulla al prossimo appuntamento di fatturazione**: L'abbonamento rimane attivo fino alla fine del periodo di fatturazione corrente, quindi viene annullato automaticamente.
* **Annulla ora**: L'abbonamento è annullato immediatamente.

<Frame>
  <img src="https://mintcdn.com/dodopayments/kCngKZVrb0rZMS1f/images/customer-portal/cance-sub.png?fit=max&auto=format&n=kCngKZVrb0rZMS1f&q=85&s=66eb6e380c991826c431fd0c563cbfa6" alt="Finestra di dialogo per l'annullamento dell'abbonamento con opzioni per annullare alla prossima data di fatturazione o annullare immediatamente" style={{ maxHeight: '500px', width: 'auto' }} width="2880" height="1550" data-path="images/customer-portal/cance-sub.png" />
</Frame>

### Motivi di Cancellazione

Prima di confermare la cancellazione, ai clienti viene chiesto **"Perché stai annullando?"** e vengono invitati a scegliere un motivo da un elenco curato. Il motivo è memorizzato sull'abbonamento e visualizzato nei payload del webhook e nell'API, così puoi analizzare i driver di abbandono e personalizzare i tuoi flussi di riconquista.

<Frame>
  <img src="https://mintcdn.com/dodopayments/RlXcM7JO-E_w40Np/images/customer-portal/cancellation-reasons.png?fit=max&auto=format&n=RlXcM7JO-E_w40Np&q=85&s=979394da2a9aa3907cbf9f4e225f9a4b" alt="Finestra di cancellazione con il menu a discesa 'Perché stai annullando?' mostrando motivi come Troppo costoso, Mancano funzionalità e Altro" style={{ maxHeight: '500px', width: 'auto' }} width="2880" height="1564" data-path="images/customer-portal/cancellation-reasons.png" />
</Frame>

| Valore             | Etichetta per il cliente    |
| ------------------ | --------------------------- |
| `too_expensive`    | Troppo costoso              |
| `missing_features` | Mancano funzionalità        |
| `switched_service` | Passato a un altro servizio |
| `unused`           | Non abbastanza utilizzato   |
| `customer_service` | Servizio clienti scarso     |
| `low_quality`      | Bassa qualità               |
| `too_complex`      | Troppo complesso            |
| `other`            | Altro                       |

Il valore selezionato è scritto nel campo `cancellation_feedback` dell'abbonamento. Può anche essere catturato un testo libero opzionale `cancellation_comment`.

```typescript theme={null}
// Read the captured feedback after a customer cancels
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"
```

Entrambi i campi sono anche inclusi nel payload del webhook `subscription.cancelled`, e puoi popolarli programmaticamente su `PATCH /subscriptions/{id}` quando programmi o esegui una cancellazione tramite l'API.

<Tip>
  Combina `cancellation_feedback` con [Gestione Dunning degli Abbonamenti](/features/recovery/subscription-dunning) per personalizzare le email di riconquista — ad esempio, invia un codice sconto ai cancellatori `too_expensive` e un sondaggio "cosa manca?" ai cancellatori `missing_features`.
</Tip>

## Aggiornamento dei Metodi di Pagamento

I clienti possono aggiornare i loro metodi di pagamento direttamente dalla pagina dei dettagli dell'abbonamento cliccando su "Modifica" accanto al metodo di pagamento. Questa funzionalità è particolarmente importante per riattivare abbonamenti messi in attesa a causa di pagamenti falliti.

### Riattivazione di Abbonamenti in Attesa

Quando un abbonamento è messo in stato `on_hold` a causa di un pagamento fallito, i clienti devono aggiornare il loro metodo di pagamento per riattivarlo. Il processo di aggiornamento automaticamente:

1. **Crea un addebito** per i pagamenti rimanenti
2. **Genera una fattura** per l'addebito
3. **Elabora il pagamento** utilizzando il nuovo metodo di pagamento
4. **Riattiva l'abbonamento** allo stato `active` al pagamento riuscito

<Warning>
  Gli abbonamenti in stato `on_hold` non si rinnoveranno automaticamente. I clienti devono aggiornare il loro metodo di pagamento per coprire i pagamenti e riattivare l'abbonamento.
</Warning>

<Info>
  Dopo aver aggiornato con successo il metodo di pagamento per un abbonamento `on_hold`, i clienti vedranno una pagina di conferma e riceveranno notifiche email sul pagamento riuscito e la riattivazione dell'abbonamento.
</Info>

### Flusso di Aggiornamento del Metodo di Pagamento

<Steps>
  <Step title="Access subscription details">
    Clicca "Gestisci abbonamento" su qualsiasi abbonamento attivo dalla home page del portale.
  </Step>

  <Step title="Click Edit on payment method">
    Clicca il pulsante "Modifica" accanto al metodo di pagamento per aprire l'interfaccia di aggiornamento del metodo di pagamento.
  </Step>

  <Step title="Select or add payment method">
    Scegli un metodo di pagamento salvato esistente o aggiungine uno nuovo inserendo i dettagli della carta in modo sicuro.
  </Step>

  <Step title="Confirm changes">
    Conferma l'aggiornamento. Per gli abbonamenti `on_hold`, questo creerà automaticamente un addebito per i pagamenti rimanenti.
  </Step>

  <Step title="Complete payment (if on hold)">
    Se l'abbonamento è in attesa, i clienti verranno reindirizzati a completare il pagamento per i restanti importi dovuti. Al pagamento riuscito, l'abbonamento viene automaticamente riattivato.
  </Step>

  <Step title="Confirmation">
    I clienti ricevono la conferma che il metodo di pagamento è stato aggiornato e, se applicabile, che l'abbonamento è stato riattivato.
  </Step>
</Steps>

## Esempi di Integrazione

Crea una sessione del Portale Cliente a tempo determinato per un cliente specifico tramite API, quindi reindirizza l'utente all'URL della sessione.

<CodeGroup>
  ```typescript Node.js theme={null}
  const session = await client.customers.customerPortal.create('cus_123');

  // Redirect the user to the hosted Customer Portal
  window.location.href = session.link;
  ```
</CodeGroup>

## Portale Cliente Unificato

Oltre ai portali cliente specifici per azienda, Dodo Payments offre un **Portale Cliente Unificato** su [customer.dodopayments.com](https://customer.dodopayments.com) dove i clienti possono vedere e gestire tutti i loro acquisti e abbonamenti attraverso diverse aziende che utilizzano Dodo Payments.

<Frame>
  <img src="https://mintcdn.com/dodopayments/eNGWg9ca-WxQ9nMf/images/changelog/unified-customer-portal.png?fit=max&auto=format&n=eNGWg9ca-WxQ9nMf&q=85&s=bceabb06ca0f00aa2a458f4af95a5cda" alt="Portale Cliente Unificato" style={{ maxHeight: '500px', width: 'auto' }} width="1640" height="953" data-path="images/changelog/unified-customer-portal.png" />
</Frame>

### Funzionalità del Portale Unificato

* **Visibilità trasversale**: Visualizza tutti gli acquisti e gli abbonamenti di qualsiasi merchant di Dodo Payments in un unico posto
* **Gestione centralizzata**: Gestisci gli abbonamenti delle diverse aziende da un unico dashboard
* **Storico di fatturazione unificato**: Accedi a fatture e storico dei pagamenti di tutti gli acquisti
* **Single sign-on**: Accedi una volta con l'email per accedere agli acquisti da tutti i merchant di Dodo Payments

<Tip>
  Il Portale Cliente Unificato integra i portali specifici dell'azienda. I clienti possono utilizzare sia il portale del merchant con marchio che il portale unificato in base alle loro preferenze.
</Tip>

## Risoluzione dei Problemi

* **Link scaduto**: Genera e invia un nuovo link dinamico.
* **Email non riconosciuta**: Chiedi al cliente di utilizzare l'email associata con il loro acquisto
* **Abbonamento in attesa**: Se un abbonamento è in attesa, i clienti devono aggiornare il loro metodo di pagamento tramite il portale per saldare i debiti e riattivare l'abbonamento. Il processo di aggiornamento addebiterà automaticamente i pagamenti rimanenti.
* **Aggiornamento del metodo di pagamento fallito**: Se il pagamento fallisce durante l'aggiornamento di un abbonamento `on_hold`, l'abbonamento resterà in attesa. I clienti possono provare di nuovo con un metodo di pagamento diverso.

<Card title="Design & Theme Customization" icon="palette" href="/features/design">
  Personalizza l'aspetto del tuo portale cliente con temi predefiniti, tipografia, colori e anteprima live dalla pagina Design.
</Card>
