---
title: "Subscriptions"
description: "Facturación recurrente. Cada aplicación es un módulo sobre un único modelo de datos."
canonical: "https://obop.dev/es/apps/subscriptions/"
lang: "es"
---

# Subscriptions

## Para qué sirve

Define recurring plans and track customer subscriptions with trial, active, past due and cancelled states, including the next invoice date. It does not create invoices by itself.

## Qué hace y qué no hace el paquete

Recurring plans and customer subscriptions with a trial, active, past due and cancelled flow. It records the next invoice date; it does not create invoices on its own.

## Modelos

### `subscriptions_plan`

A recurring offer customers can subscribe to

Grupo de lectura: `subscriptions.user`. Grupo de escritura: `subscriptions.manager`.

| Campo | Tipo | Clase de datos | Datos personales | Grupo | Los agentes ven | Descripción |
|---|---|---|---|---|---|---|
| `name` | text | `none` | no | `subscriptions.user` | en claro | Plan name, for example Team yearly |
| `code` | text | `none` | no | `subscriptions.user` | en claro | Short code of the plan |
| `interval` | select (monthly, quarterly, yearly) | `none` | no | `subscriptions.user` | en claro | How often the customer is billed: monthly, quarterly, yearly |
| `price` | money | `none` | no | `subscriptions.user` | en claro | Standard price per billing interval (minor currency units, e.g. cents) |
| `trial_days` | number | `none` | no | `subscriptions.user` | en claro | Length of the free trial in days |
| `active` | bool | `none` | no | `subscriptions.user` | en claro | Whether new customers can pick the plan |

### `subscriptions_subscription`

A customer's recurring subscription to a plan

Grupo de lectura: `subscriptions.user`. Grupo de escritura: `subscriptions.manager`.

| Campo | Tipo | Clase de datos | Datos personales | Grupo | Los agentes ven | Descripción |
|---|---|---|---|---|---|---|
| `customer_id` | ref → party | `none` | no | `subscriptions.user` | en claro | The customer who subscribed |
| `plan_id` | ref → subscriptions_plan | `none` | no | `subscriptions.user` | en claro | The plan subscribed to |
| `started_on` | date | `none` | no | `subscriptions.user` | en claro | Date the subscription began (YYYY-MM-DD) |
| `trial_ends_on` | date | `none` | no | `subscriptions.user` | en claro | Date the free trial ends (YYYY-MM-DD) |
| `next_invoice_on` | date | `none` | no | `subscriptions.user` | en claro | Date the next invoice is due (YYYY-MM-DD) |
| `recurring_amount` | money | `none` | no | `subscriptions.user` | en claro | Amount billed each interval after discounts (minor currency units, e.g. cents) |
| `currency` | text | `none` | no | `subscriptions.user` | en claro | ISO 4217 currency code, for example EUR |
| `seats` | number | `none` | no | `subscriptions.user` | en claro | Number of licences or users covered |
| `cancel_reason` | longtext | `none` | no | `subscriptions.user` | en claro | Why the customer cancelled |
| `state` | select (trial, active, past_due, cancelled) | `none` | no | `subscriptions.user` | en claro | Subscription status: trial, active, past_due, cancelled |

## Flujos de trabajo

### `subscriptions_subscription`

| Acción | Mueve | Quién puede ejecutarla | Aprobación |
|---|---|---|---|
| `subscriptions_subscription.activate` | state: trial → active | `subscriptions.manager` | no |
| `subscriptions_subscription.mark_past_due` | state: active → past_due | `subscriptions.manager` | no |
| `subscriptions_subscription.recover` | state: past_due → active | `subscriptions.manager` | no |
| `subscriptions_subscription.cancel_trial` | state: trial → cancelled | `subscriptions.manager` | sí |
| `subscriptions_subscription.cancel` | state: active → cancelled | `subscriptions.manager` | sí |
| `subscriptions_subscription.cancel_overdue` | state: past_due → cancelled | `subscriptions.manager` | sí |

## Grupos de permisos

Grupos que usa esta aplicación:

- `subscriptions.manager`
- `subscriptions.user`

## Pasos con aprobación

Pasos que un agente solo puede proponer:

- `subscriptions_subscription.cancel_trial`
- `subscriptions_subscription.cancel`
- `subscriptions_subscription.cancel_overdue`

## Qué pueden y qué no pueden hacer los agentes

Un agente puede leer, buscar, crear y actualizar registros de esta aplicación, y ejecutar las acciones que no requieren aprobación, dentro de los grupos de permisos de su token.

Solo puede proponer estos pasos, y una persona debe aprobarlos: `subscriptions_subscription.cancel_trial`, `subscriptions_subscription.cancel`, `subscriptions_subscription.cancel_overdue`, `subscriptions_plan.delete`, `subscriptions_subscription.delete`.

## Dependencias

- `base`

## Instalación

Instálala desde la aplicación Customize (Marketplace) o desde la línea de comandos:

```bash
obop modules install-from subscriptions
```

Requiere una base de datos y derechos de administrador.

## Crea la tuya

[La guía de módulos explica cómo se escriben aplicaciones como esta](/es/docs/reference/module-manifest/)
