---
title: "Create a fixed charge"
method: POST
path: "/plans/{code}/fixed_charges"
tags: ["plans"]
---

# Create a fixed charge

`POST /plans/{code}/fixed_charges`

This endpoint creates a new fixed charge for a specific plan.

## Request body

- FixedChargeCreateInput
  - `fixed_charge` object, required — Properties of a fixed charge that can be overridden at the subscription level.
    - `invoice_display_name` string, nullable — Specifies the name that will be displayed on an invoice. If no value is set for this field, the name of the add-on will be used as the default display name.
    - `units` string — The quantity of units for the fixed charge.
    - `apply_units_immediately` boolean — When set to `true`, the fixed charge units are applied immediately for active subscriptions. When set to `false`, the units are applied at the next billing period.
    - `properties` ChargeProperties
      - `grouped_by` string[] — **Deprecated.** Replaced by `pricing_group_keys`. The list of event properties that are used to group the events on the invoice for a `standard` charge model.
      - `pricing_group_keys` string[] — The list of event properties that are used to group the events on the invoice.
      - `graduated_ranges` object[] — Graduated ranges, sorted from bottom to top tiers, used for a `graduated` charge model.
        - `from_value` integer, required — Specifies the lower value of a tier for a `graduated` charge model. It must be either 0 or the previous range's `to_value + 1` to maintain the proper sequence of values.
        - `to_value` integer, nullable, required — Specifies the highest value of a tier for a `graduated` charge model. - This value must be higher than the from_value of the same tier. - This value must be null for the last tier.
        - `flat_amount` string, required — The flat amount for a whole tier, excluding tax, for a `graduated` charge model. It is expressed as a decimal value.
        - `per_unit_amount` string, required — The unit price, excluding tax, for a specific tier of a `graduated` charge model. It is expressed as a decimal value.
      - `graduated_percentage_ranges` object[] — Graduated percentage ranges, sorted from bottom to top tiers, used for a `graduated_percentage` charge model.
        - `from_value` integer, required — Specifies the lower value of a tier for a `graduated_percentage` charge model. It must be either 0 or the previous range's `to_value + 1` to maintain the proper sequence of values.
        - `to_value` integer, nullable, required — Specifies the highest value of a tier for a `graduated_percentage` charge model. - This value must be higher than the from_value of the same tier. - This value must be null for the last tier.
        - `rate` string, ^[0-9]+.?[0-9]*$, required — The percentage rate that is applied to the amount of each transaction in the tier for a `graduated_percentage` charge model. It is expressed as a decimal value.
        - `flat_amount` string, ^[0-9]+.?[0-9]*$, required — The flat amount for a whole tier, excluding tax, for a `graduated_percentage` charge model. It is expressed as a decimal value.
      - `amount` string — - The unit price, excluding tax, for a `standard` charge model. It is expressed as a decimal value. - The amount, excluding tax, for a complete set of units in a `package` charge model. It is expressed as a decimal value.
      - `free_units` integer — The quantity of units that are provided free of charge for each billing period in a `package` charge model. This field specifies the number of units that customers can use without incurring any additional cost during each billing cycle.
      - `package_size` integer — The quantity of units included in each pack or set for a `package` charge model. It indicates the number of units that are bundled together as a single package or set within the pricing structure.
      - `rate` string — The percentage rate that is applied to the amount of each transaction for a `percentage` charge model. It is expressed as a decimal value.
      - `fixed_amount` string — The fixed fee that is applied to each transaction for a `percentage` charge model. It is expressed as a decimal value.
      - `free_units_per_events` integer, nullable — The count of transactions that are not impacted by the `percentage` rate and fixed fee in a percentage charge model. This field indicates the number of transactions that are exempt from the calculation of charges based on the specified percentage rate and fixed fee.
      - `free_units_per_total_aggregation` string, nullable — The transaction amount that is not impacted by the `percentage` rate and fixed fee in a percentage charge model. This field indicates the portion of the transaction amount that is exempt from the calculation of charges based on the specified percentage rate and fixed fee.
      - `per_transaction_max_amount` string, ^[0-9]+.?[0-9]*$, nullable — Specifies the maximum allowable spending for a single transaction. Working as a transaction cap.
      - `per_transaction_min_amount` string, ^[0-9]+.?[0-9]*$, nullable — Specifies the minimum allowable spending for a single transaction. Working as a transaction floor.
      - `volume_ranges` object[] — Volume ranges, sorted from bottom to top tiers, used for a `volume` charge model.
        - `from_value` integer, required — Specifies the lower value of a tier for a `volume` charge model. It must be either 0 or the previous range's `to_value + 1` to maintain the proper sequence of values.
        - `to_value` integer, nullable, required — Specifies the highest value of a tier for a `volume` charge model. - This value must be higher than the `from_value` of the same tier. - This value must be `null` for the last tier.
        - `flat_amount` string, required — The flat amount for a whole tier, excluding tax, for a `volume` charge model. It is expressed as a decimal value.
        - `per_unit_amount` string, required — The unit price, excluding tax, for a specific tier of a `volume` charge model. It is expressed as a decimal value.
    - `tax_codes` string[] — List of unique code used to identify the taxes.
    - `add_on_id` string, uuid — Unique identifier of the add-on. Either add_on_id or add_on_code is required.
    - `add_on_code` string — Unique code identifying an add-on. Either add_on_id or add_on_code is required.
    - `code` string — Unique code identifying the fixed charge within the plan.
    - `charge_model` 'standard' | 'graduated' | 'volume' — Specifies the pricing model used for the calculation of the fixed charge fee. It can be any of the following values: - `standard` - `graduated` - `volume`
    - `pay_in_advance` boolean — This field determines the billing timing for this fixed charge. When set to `true`, the charge is due and invoiced immediately at the beginning of the billing period. When set to `false`, the charge is due and invoiced at the end of the billing period.
    - `prorated` boolean — Specifies whether a fixed charge is prorated based on the remaining number of days in the billing period or billed fully. - If set to `true`, the charge is prorated based on the remaining days in the current billing period. - If set to `false`, the charge is billed in full.
    - `cascade_updates` boolean — This field determines whether the creation of the fixed charge should be cascaded to the children plans. When set to `true`, the fixed charge will be created in children plans. Conversely, when set to `false`, the fixed charge will only be created in the plan itself. If not defined in the request, default value is `false`.

## Response `200`

Fixed charge created

- FixedCharge
  - `fixed_charge` FixedChargeObject, required
    - `lago_id` string, uuid, required — Unique identifier of the fixed charge, created by Lago.
    - `lago_add_on_id` string, uuid, required — Unique identifier of the add-on associated with this fixed charge.
    - `invoice_display_name` string, required — Specifies the name that will be displayed on an invoice. If no value is set for this field, the name of the actual charge will be used as the default display name.
    - `add_on_code` string, required — Unique code used to identify the add-on.
    - `created_at` string, date-time, required — The date and time when the fixed charge was created. It is expressed in UTC format according to the ISO 8601 datetime standard.
    - `code` string, required — Unique code for the fixed charge.
    - `charge_model` 'standard' | 'graduated' | 'volume', required — The charge model for the fixed charge. Only `standard`, `graduated`, and `volume` models are supported for fixed charges.
    - `pay_in_advance` boolean, required — This field determines the billing timing for this fixed charge. When set to `true`, the charge is due and invoiced immediately. Conversely, when set to false, the charge is due and invoiced at the end of each billing period.
    - `prorated` boolean, required — Specifies whether a fixed charge is prorated based on the remaining number of days in the billing period or billed fully. - If set to `true`, the charge is prorated based on the remaining days in the current billing period. - If set to `false`, the charge is billed in full. - If not defined in the request, default value is `false`.
    - `properties` FixedChargeProperties, required
      - `amount` string — - The unit price, excluding tax, for a `standard` charge model. It is expressed as a decimal value. - The amount, excluding tax, for a complete set of units in a `package` charge model. It is expressed as a decimal value.
      - `graduated_ranges` object[] — Graduated ranges, sorted from bottom to top tiers, used for a `graduated` charge model.
        - `from_value` integer, required — Specifies the lower value of a tier for a `graduated` charge model. It must be either 0 or the previous range's `to_value + 1` to maintain the proper sequence of values.
        - `to_value` integer, nullable, required — Specifies the highest value of a tier for a `graduated` charge model. - This value must be higher than the from_value of the same tier. - This value must be null for the last tier.
        - `flat_amount` string, required — The flat amount for a whole tier, excluding tax, for a `graduated` charge model. It is expressed as a decimal value.
        - `per_unit_amount` string, required — The unit price, excluding tax, for a specific tier of a `graduated` charge model. It is expressed as a decimal value.
      - `volume_ranges` object[] — Volume ranges, sorted from bottom to top tiers, used for a `volume` charge model.
        - `from_value` integer, required — Specifies the lower value of a tier for a `volume` charge model. It must be either 0 or the previous range's `to_value + 1` to maintain the proper sequence of values.
        - `to_value` integer, nullable, required — Specifies the highest value of a tier for a `volume` charge model. - This value must be higher than the `from_value` of the same tier. - This value must be `null` for the last tier.
        - `flat_amount` string, required — The flat amount for a whole tier, excluding tax, for a `volume` charge model. It is expressed as a decimal value.
        - `per_unit_amount` string, required — The unit price, excluding tax, for a specific tier of a `volume` charge model. It is expressed as a decimal value.
    - `units` number, required — The number of units for the fixed charge. When retrieved through a subscription-scoped endpoint (e.g. `GET /subscriptions/{external_id}/fixed_charges`), this reflects the per-subscription unit override when one exists, and falls back to the plan-level units otherwise. Plan-scoped endpoints always return the plan-level units.
    - `lago_parent_id` string, uuid, nullable — Unique identifier of the parent fixed charge (for plan versions).
    - `taxes` TaxObject[] — List of taxes applied to the fixed charge.
      - `lago_id` string, uuid, required — Unique identifier of the tax, created by Lago.
      - `name` string, required — Name of the tax.
      - `code` string, required — Unique code used to identify the tax associated with the API request.
      - `description` string, nullable — Internal description of the tax
      - `rate` number, required — The percentage rate of the tax
      - `applied_to_organization` boolean, required — **Deprecated.** This field will be removed in a future version. When set to true, it applies the tax to the organization's default billing entity. To apply or remove a tax from any billing entity (including the default one), please use the `PUT /billing_entities/:code` endpoint instead.
      - `created_at` string, date-time, required — Creation date of the tax.

## Other responses

- `400` — Bad Request error
- `401` — Unauthorized error
- `404` — Not Found error
- `422` — Unprocessable entity error

---

[API](https://skmtc.dev/getlago/apis/lago-api-documentation.md) · [All operations](https://skmtc.dev/getlago/apis/lago-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/getlago/lago-api-documentation/revisions/6e969ef3bb45/schema)
