> ## Documentation Index
> Fetch the complete documentation index at: https://commet.co/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Portal del Cliente

> Portal de autoservicio para que tus clientes gestionen sus suscripciones.

Página de autoservicio donde los clientes gestionan su suscripción, ven su uso, cambian de plan y compran créditos. Se crea automáticamente con cada suscripción.

## Qué pueden hacer los clientes

* Ver la suscripción actual y el ciclo de cobro
* Ver el uso de todas las features
* Hacer upgrade o downgrade de plan (requiere un [Plan Group](/docs/es/plan-groups))
* Comprar [Credit Packs](/docs/es/credit-packs), top-ups de balance y [Add-ons](/docs/es/add-ons)
* Administrar métodos de pago guardados y datos de cobro
* Ver el historial de recibos
* Cancelar la suscripción

Las compras están disponibles en suscripciones activas, en trial y en planes gratuitos. A los clientes en planes gratuitos se les pide agregar un método de pago en su primera compra.

## Métodos de pago guardados

Tus clientes pueden guardar varias tarjetas y elegir su método de pago predeterminado. Una tarjeta nueva queda como predeterminada, salvo que el cliente la guarde como alternativa. La primera tarjeta guardada siempre queda como predeterminada.

Mientras haya una suscripción vigente:

* El cliente debe elegir otro predeterminado antes de eliminar el actual.
* No puede eliminar el último método guardado ni el último que permita cobrar con la conexión de pago de la suscripción.

Sin una suscripción vigente, el cliente puede eliminar cualquier método guardado. No puede cambiar el predeterminado ni eliminar métodos mientras haya un pago o reintento automático en curso.

Commet también puede usar los métodos guardados en los [reintentos automáticos de pago](/docs/es/handle-failed-payments#métodos-de-pago-guardados).

## Generar la URL del portal

Las URLs del portal no son de un solo uso — el cliente puede volver a abrir el link mientras la sesión siga viva. Una sesión expira a los **30 minutos** de inactividad, se renueva automáticamente mientras el cliente está activo y tiene un tope de **2 horas** desde su creación. Genera una URL nueva en cada visita.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    const portal = await commet.portal.getUrl({ customerId: 'user_123' })

    redirect(portal.portalUrl)
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    portal = commet.portal.get_url(customer_id='user_123')

    redirect(portal.portal_url)
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    portal, err := client.Portal.GetURL(ctx, &commet.GetPortalURLParams{
        CustomerID: "user_123",
    })

    // redirect(portal.PortalURL)
    ```
  </Tab>

  <Tab title="Java">
    ```java theme={null}
    var portal = commet.portal().getUrl(RequestPortalAccessParams.builder().customerId("user_123").build());

    // redirect(portal.portalUrl())
    ```
  </Tab>

  <Tab title="PHP">
    ```php theme={null}
    $portal = $commet->portal->getUrl(customerId: 'user_123');

    redirect($portal->portalUrl);
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST https://commet.co/api/v1/portal/request-access \
      -H "x-api-key: $COMMET_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"customerId": "user_123"}'
    ```
  </Tab>
</Tabs>

Puedes identificar a los clientes con `customerId` (ID de Commet o tu ID externo) o `email`.

## Helper de Next.js

`@commet/next` (solo Node.js) provee un route handler de una línea que genera URLs del portal y redirige automáticamente.

```typescript title="app/api/commet/portal/route.ts" theme={null}
import { CustomerPortal } from '@commet/next'

export const GET = CustomerPortal({
  apiKey: process.env.COMMET_API_KEY!,
  getCustomerId: async (req) => {
    return 'user_123'
  },
})
```

```tsx theme={null}
<a href="/api/commet/portal">Gestionar cobros</a>
```

## Dominios personalizados

Sirve el portal desde tu propio dominio (ej. `billing.acme.com`) en lugar de `commet.co`. Ve a **Settings** → **Custom Domains**, agrega el dominio y configura los registros DNS que se muestran — los links del portal usan tu dominio una vez verificado.

Cada dominio personalizado sirve una superficie: **portal** o **checkout**. Las páginas de checkout soportan dominios personalizados de la misma forma.

## Relacionado

* [Gestionar Suscripciones](/docs/es/manage-subscriptions)
* [Plan Groups](/docs/es/plan-groups)
* [Credit Packs](/docs/es/credit-packs)


## Related topics

- [Pagos únicos](/docs/es/one-time-payments.md)
- [Manejar pagos fallidos](/docs/es/handle-failed-payments.md)
- [Upgrade y Downgrade de Planes](/docs/es/upgrade-and-downgrade-plans.md)
- [Cambios de plan](/docs/es/what-happens-when-a-customer-changes-plans.md)
- [Integrar con Flask](/docs/es/integrate-with-flask.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.