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

# Our concept

> Pricing is a vital element of setting the right business model. Plude serve multiple price models and configuration to match your needs.

# Price

A Price directly impacts the revenue generated by its sales. When setting the `price` for a `subscription`, businesses must consider factors such as affordability, perceived value, and competitiveness in the market.

The Price also govern the `term` and period of the price. Prices are componentized by a price model and a consumption model. In addition, a Prices governed by a `purchase type`.

<Note>
  Plude is multi-currency by design. However whether you decide on using multi-currency per price, or an indivual price per currency is subject to your business model.
</Note>

## Term

In subscription businesses, the price always corresponds to a term and value. Therefore, a `price` defines the term. Unlike a *subscription term*, a `price` term manages the billing period iteration.

To assign the term, specify the `termUnit` of either value `day`, `week`, `month` or `year` and an iterator of `termCount`.

<Note>Whether you bill once or recurring, a term must be applied.</Note>

## Purchase type

* **Recurring** (recurring). A recurring purchase is advanding according to the term (`termCount` of `termUnit`) of the `subscriptionItem`.
* **One time** (one\_time). A one time purchase is billed once whent the `subscriptionItem.billAt` is due and then sets the `subscriptionItem.status = billed`.

<Warning>
  There is no option to reactivate a billed one time item. Add a new `subscriptionItem` to the `subscription` to trigger a new one time charge.
</Warning>

## Price Models

Price objects support different price models for your products and services. As `price` and `product` are separated, you only need to define the type of `price` which may be applied with multiple products.
The following price models are supported.

* [Fee](/product/fee) (unit and fixed fee).
* [Package](/product/package) with support for package quantities.
* [Graduated](/product/graduated) to provide stair-case based pricing with free tiers.
* [Volume](/product/volume) allowing programmatic discount and/or free tiers.

## Consumption models

Three consumption models are supported. *Amount*, *Usage* or *Metered*. Only one consumption per `price` is supported.

| **consumption model** | **valid for**    | **description**                                                                                                                 | **proration** |
| :-------------------- | :--------------- | :------------------------------------------------------------------------------------------------------------------------------ | ------------: |
| *Amount*              | arrears, advance | Price is calculated by quantity of the `subscriptionItem`. Quantity is carried over to future periods.                          |           yes |
| *Usage*               | arrears, advance | Price is calculated by quantity of `subscriptionItem`.  Unlike *Amount*, *Usage* will reset quantity to the minimum commitment. |           yes |
| *Metered*             | arrears only     | Price is calculated by `usageData`.                                                                                             |            no |

## Properties of a price

| **property** | **description**                                                           | **mandatory** |
| :----------- | :------------------------------------------------------------------------ | ------------: |
| name         | An internal name of the price.                                            |           yes |
| priceModel   | either `fee`, `volume`, `graduated` or `package`                          |           yes |
| purchase     | `recurring` or `one_time`                                                 |           yes |
| method       | `arrears`, `advance` or `event`                                           |           yes |
| termCount    | Iterator of `termUnit` in number. Ex. 7 of `termUnit.day` will be a week. |           yes |
| termUnit     | Either `day`, `week`, `month` or `year`.                                  |           yes |

## Creating a price

To create a `price` use the following snippet:

```bash theme={null}
curl -X POST \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer {your_token_here}" \
     -H "x-environment: {your_environment_id_here}" \
     -H "x-version: 2022-03" \
     -d '{
          "name": "Monthly recurring fixed fee",
          "priceModel": "fee",
          "purchase": "recurring",
          "termCount": 1,
          "termUnit": "month",
          "method" : "advance",
          "pricing": {
               "eur": {
                    "feeAmount" : 5000,
                    "unitAmount" : 0
               }
          }
     }' \
     https://api.plude.io/prices/
```
