---
title: "Subscriptions"
description: "Facturation récurrente. Chaque application est un module sur un même modèle de données."
canonical: "https://obop-platform.sliplane.app/fr/apps/subscriptions/"
lang: "fr"
---

# Subscriptions

## À quoi elle sert

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.

## Ce que fait et ne fait pas le paquet

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.

## Modèles

### `subscriptions_plan`

A recurring offer customers can subscribe to

Groupe de lecture: `subscriptions.user`. Groupe d'écriture: `subscriptions.manager`.

| Champ | Type | Classe de données | Données personnelles | Groupe | Vu par les agents | Description |
|---|---|---|---|---|---|---|
| `name` | text | `none` | non | `subscriptions.user` | en clair | Plan name, for example Team yearly |
| `code` | text | `none` | non | `subscriptions.user` | en clair | Short code of the plan |
| `interval` | select (monthly, quarterly, yearly) | `none` | non | `subscriptions.user` | en clair | How often the customer is billed: monthly, quarterly, yearly |
| `price` | money | `none` | non | `subscriptions.user` | en clair | Standard price per billing interval (minor currency units, e.g. cents) |
| `trial_days` | number | `none` | non | `subscriptions.user` | en clair | Length of the free trial in days |
| `active` | bool | `none` | non | `subscriptions.user` | en clair | Whether new customers can pick the plan |

### `subscriptions_subscription`

A customer's recurring subscription to a plan

Groupe de lecture: `subscriptions.user`. Groupe d'écriture: `subscriptions.manager`.

| Champ | Type | Classe de données | Données personnelles | Groupe | Vu par les agents | Description |
|---|---|---|---|---|---|---|
| `customer_id` | ref → party | `none` | non | `subscriptions.user` | en clair | The customer who subscribed |
| `plan_id` | ref → subscriptions_plan | `none` | non | `subscriptions.user` | en clair | The plan subscribed to |
| `started_on` | date | `none` | non | `subscriptions.user` | en clair | Date the subscription began (YYYY-MM-DD) |
| `trial_ends_on` | date | `none` | non | `subscriptions.user` | en clair | Date the free trial ends (YYYY-MM-DD) |
| `next_invoice_on` | date | `none` | non | `subscriptions.user` | en clair | Date the next invoice is due (YYYY-MM-DD) |
| `recurring_amount` | money | `none` | non | `subscriptions.user` | en clair | Amount billed each interval after discounts (minor currency units, e.g. cents) |
| `currency` | text | `none` | non | `subscriptions.user` | en clair | ISO 4217 currency code, for example EUR |
| `seats` | number | `none` | non | `subscriptions.user` | en clair | Number of licences or users covered |
| `cancel_reason` | longtext | `none` | non | `subscriptions.user` | en clair | Why the customer cancelled |
| `state` | select (trial, active, past_due, cancelled) | `none` | non | `subscriptions.user` | en clair | Subscription status: trial, active, past_due, cancelled |

## Flux de travail

### `subscriptions_subscription`

| Action | Transition | Qui peut l'exécuter | Approbation |
|---|---|---|---|
| `subscriptions_subscription.activate` | state: trial → active | `subscriptions.manager` | non |
| `subscriptions_subscription.mark_past_due` | state: active → past_due | `subscriptions.manager` | non |
| `subscriptions_subscription.recover` | state: past_due → active | `subscriptions.manager` | non |
| `subscriptions_subscription.cancel_trial` | state: trial → cancelled | `subscriptions.manager` | oui |
| `subscriptions_subscription.cancel` | state: active → cancelled | `subscriptions.manager` | oui |
| `subscriptions_subscription.cancel_overdue` | state: past_due → cancelled | `subscriptions.manager` | oui |

## Groupes de permissions

Groupes utilisés par cette application :

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

## Étapes d'approbation

Étapes qu'un agent ne peut que proposer :

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

## Ce que les agents peuvent et ne peuvent pas faire

Un agent peut lire, rechercher, créer et modifier les enregistrements de cette application, et exécuter les actions qui ne requièrent pas d'approbation, dans les limites des groupes de permissions de son jeton.

Il ne peut que proposer ces étapes, qu'une personne doit approuver : `subscriptions_subscription.cancel_trial`, `subscriptions_subscription.cancel`, `subscriptions_subscription.cancel_overdue`, `subscriptions_plan.delete`, `subscriptions_subscription.delete`.

## Dépendances

- `base`

## Installation

Installez-la depuis l'application Customize (Place de marché), ou en ligne de commande :

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

Nécessite une base de données et des droits d'administrateur.

## Créer la vôtre

[Le guide des modules montre comment sont écrites les applications de ce type](/fr/docs/reference/module-manifest/)
