---
title: "A subscription has been updated"
method: POST
path: "subscription_updated"
---

# A subscription has been updated

`POST subscription_updated` (webhook)

A subscription has been updated

## Headers

- `X-Lago-Signature` string, required
- `X-Lago-Signature-Algorithm` 'jwt' | 'hmac', required
- `X-Lago-Unique-Key` string, uuid, required

## Payload

- object
  - `webhook_type` 'subscription.updated', required
  - `object_type` 'subscription', required
  - `organization_id` string, uuid, required: Unique identifier of the organization, created by Lago.
  - `subscription` SubscriptionWithCustomerObject, required
    - `lago_id` string, uuid, required: Unique identifier assigned to the subscription within the Lago application. This ID is exclusively created by Lago and serves as a unique identifier for the subscription's record within the Lago system
    - `external_id` string, required: The subscription external unique identifier (provided by your own application).
    - `lago_customer_id` string, uuid, required: Unique identifier assigned to the customer within the Lago application. This ID is exclusively created by Lago and serves as a unique identifier for the customer's record within the Lago system
    - `external_customer_id` string, required: The customer external unique identifier (provided by your own application).
    - `billing_entity_code` string: The code of the billing entity associated with the subscription.
    - `billing_time` 'calendar' | 'anniversary', required: The billing time for the subscription, which can be set as either `anniversary` or `calendar`. If not explicitly provided, it will default to `calendar`. The billing time determines the timing of recurring billing cycles for the subscription. By specifying `anniversary`, the billing cycle will be based on the specific date the subscription started (billed fully), while `calendar` sets the billing cycle at the first day of the week/month/year (billed with proration).
    - `name` string, nullable, required: The display name of the subscription on an invoice. This field allows for customization of the subscription's name for billing purposes, especially useful when a single customer has multiple subscriptions using the same plan.
    - `plan_code` string, required: The unique code representing the plan to be attached to the customer. This code must correspond to the `code` property of one of the active plans.
    - `plan_amount_cents` integer, required: The base cost of the related plan, excluding any applicable taxes, that is billed on a recurring basis.
    - `plan_amount_currency` 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'ISK' | 'JMD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KRW' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYU' | 'UZS' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW', required
    - `status` 'active' | 'canceled' | 'incomplete' | 'pending' | 'terminated', required: The status of the subscription, which can have the following values: - `active`: the subscription is currently active and applied to the customer. - `canceled`: the subscription has been stopped before its activation. This can occur when two consecutive downgrades have been applied to a customer, when a subscription with a pending status is terminated, or when a payment-gated subscription fails to be paid (or its activation rule expires) before activation. When caused by payment gating, the `cancellation_reason` field is set. - `incomplete`: the subscription was created with a payment activation rule and is waiting for the gating payment to succeed before it becomes `active`. It is automatically `canceled` if the payment fails or the activation rule expires. - `pending`: a previous subscription has been downgraded, and the current one is awaiting automatic activation at the end of the billing period. - `terminated`: the subscription is no longer active.
    - `created_at` string, date-time, required: The creation date of the subscription, represented in ISO 8601 datetime format and expressed in Coordinated Universal Time (UTC). This date provides a timestamp indicating when the subscription was initially created.
    - `canceled_at` string, date-time, nullable, required: The cancellation date of the subscription. This field is not null when the subscription is `canceled`. This date should be provided in ISO 8601 datetime format and expressed in Coordinated Universal Time (UTC).
    - `started_at` string, date-time, nullable, required: The effective start date of the subscription. This field can be null if the subscription is `pending` or `canceled`. This date should be provided in ISO 8601 datetime format and expressed in Coordinated Universal Time (UTC).
    - `ending_at` string, date-time, nullable, required: The effective end date of the subscription. If this field is set to null, the subscription will automatically renew. This date should be provided in ISO 8601 datetime format, and use Coordinated Universal Time (UTC).
    - `subscription_at` string, date-time, required: The anniversary date and time of the initial subscription. This date serves as the basis for billing subscriptions with `anniversary` billing time. The `anniversary_date` should be provided in ISO 8601 datetime format and expressed in Coordinated Universal Time (UTC).
    - `terminated_at` string, date-time, nullable, required: The termination date of the subscription. This field is not null when the subscription is `terminated`. This date should be provided in ISO 8601 datetime format and expressed in Coordinated Universal Time (UTC)
    - `previous_plan_code` string, nullable, required: The code identifying the previous plan associated with this subscription.
    - `next_plan_code` string, nullable, required: The code identifying the next plan in the case of a downgrade.
    - `downgrade_plan_date` string, date, nullable, required: The date when the plan will be downgraded, represented in ISO 8601 date format.
    - `trial_ended_at` string, date-time, nullable, required: The date when the free trial is ended, represented in ISO 8601 date format.
    - `current_billing_period_started_at` string, date-time, nullable, required: The date and time when the current billing period started, represented in ISO 8601 date format.
    - `current_billing_period_ending_at` string, date-time, nullable, required: The date and time when the current billing period ends, represented in ISO 8601 date format.
    - `on_termination_credit_note` 'credit' | 'refund' | 'offset' | 'skip', nullable, required: When a pay-in-advance subscription is terminated before the end of its billing period, we generate a credit note for the unused subscription time by default. This field allows you to control the behavior of the credit note generation: - `credit`: A credit note is generated for the unused subscription time. The unused amount is credited back to the customer. - `refund`: A credit note is generated for the unused subscription time. If the invoice is paid or partially paid, the unused paid amount is refunded; any unpaid unused amount is credited back to the customer. - `offset`: A credit note is generated for the unused subscription time. If the invoice is paid or partially paid, the unused paid amount is refunded; any unpaid unused amount is applied to the invoice reducing its amount due. - `skip`: No credit note is generated for the unused subscription time. _Note: This field is only applicable to pay-in-advance plans and will be `null` for pay-in-arrears plans._
    - `on_termination_invoice` 'generate' | 'skip', required: When a subscription is terminated before the end of its billing period, we generate an invoice for the unbilled usage. This field allows you to control the behavior of the invoice generation: - `generate`: An invoice is generated for the unbilled usage. - `skip`: No invoice is generated for the unbilled usage.
    - `applied_invoice_custom_sections` AppliedInvoiceCustomSectionObject[]: The invoice custom sections applied to invoices generated by this subscription. Only returned when creating, retrieving, updating or terminating a subscription, not when listing subscriptions and not in subscription webhooks.
      - `lago_id` string, uuid, required: Unique identifier of the applied invoice custom section in the Lago application.
      - `created_at` string, date-time, required: The date of the applied invoice custom section creation, represented in ISO 8601 datetime format and expressed in Coordinated Universal Time (UTC).
      - `invoice_custom_section_id` string, uuid: **Deprecated.** Unique identifier of the invoice custom section that was applied.
      - `invoice_custom_section` InvoiceCustomSectionObject, required
        - `lago_id` string, uuid, required: Unique identifier for the invoice custom section in the Lago application, generated by Lago to ensure record uniqueness within the system.
        - `name` string, required: Name of the invoice custom section.
        - `code` string, required: Unique code identifying the invoice custom section for the API request.
        - `description` string: Internal description of the invoice custom section.
        - `details` string: The value shown on the invoice PDF.
        - `display_name` string: The name of the invoice custom section displayed on the invoice.
        - `applied_to_organization` boolean: **Deprecated.** This field will be removed in a future version. When set to true, it applies the invoice custom section to the organization's default billing entity. To apply or remove an invoice custom section from any billing entity (including the default one), please use the `PUT /billing_entities/:code` endpoint instead.
        - `organization_id` string, uuid: Unique identifier for the organization associated with the invoice custom section.
        - `created_at` string, date-time: Creation date of the tax.
    - `payment_method` PaymentMethodReference, required: Reference to a specific payment method for processing the payment.
      - `payment_method_type` 'provider' | 'manual': The type of payment method to use.
      - `payment_method_id` string, uuid: The unique identifier of the payment method (required when using a specific provider payment method).
    - `consolidate_invoice` boolean, required: Controls whether this subscription is eligible to be grouped with other subscriptions of the same customer on a consolidated recurring invoice. - `true` (default): the subscription is included in the customer's standard invoice grouping (by billing entity, currency and payment method). - `false`: the subscription is excluded from consolidation and always billed on its own dedicated invoice, regardless of other grouping criteria.
    - `progressive_billing_disabled` boolean, required: Indicates whether progressive billing is switched off for this subscription, regardless of any usage thresholds defined on the plan (including thresholds inherited from a parent plan when the subscription runs on a plan override). When `true`, no progressive billing invoice is issued for this subscription.
    - `cancellation_reason` 'payment_failed' | 'timeout' | 'manual', nullable, required: The reason a payment-gated subscription was canceled while still `incomplete`. Null unless the subscription was canceled before activation. - `payment_failed`: the gating payment failed. - `timeout`: the activation rule expired before the payment succeeded. - `manual`: the incomplete subscription was canceled on demand, via a terminate request with `status=incomplete`.
    - `activated_at` string, date-time, nullable, required: The date and time when a payment-gated subscription was activated (i.e. moved from `incomplete` to `active` once the gating payment succeeded), represented in ISO 8601 datetime format and expressed in Coordinated Universal Time (UTC). Null while the subscription is still `incomplete`.
    - `activation_rules` SubscriptionActivationRuleObject[], required: The activation rules attached to the subscription. A payment activation rule gates activation on a successful first payment, keeping the subscription in the `incomplete` state until the payment succeeds or the rule expires.
      - `lago_id` string, uuid, required: Unique identifier assigned to the activation rule within the Lago application. This ID is exclusively created by Lago.
      - `type` 'payment', required: The type of the activation rule. Only `payment` is currently supported. A `payment` rule gates the subscription activation on a successful payment of the first invoice.
      - `timeout_hours` integer, required: The number of hours the subscription stays in the `incomplete` state waiting for the payment to succeed before it is automatically canceled.
      - `status` 'inactive' | 'pending' | 'satisfied' | 'declined' | 'failed' | 'expired' | 'not_applicable', required: The evaluation status of the activation rule: - `inactive`: the rule has not been evaluated yet. - `pending`: the rule is applicable and is waiting to be satisfied (e.g. waiting for the payment). - `satisfied`: the rule has been satisfied and no longer blocks activation. - `declined`: the rule was applicable but was declined. - `failed`: the rule could not be satisfied (e.g. the payment failed). - `expired`: the rule was not satisfied before its timeout elapsed. - `not_applicable`: the rule did not apply to this subscription.
      - `expires_at` string, date-time, nullable, required: The date and time when the rule expires, after which an unsatisfied rule causes the subscription to be canceled. Represented in ISO 8601 datetime format and expressed in Coordinated Universal Time (UTC). Null until the rule starts being evaluated.
      - `created_at` string, date-time, required: The creation date of the activation rule, represented in ISO 8601 datetime format and expressed in Coordinated Universal Time (UTC).
      - `updated_at` string, date-time, required: The last update date of the activation rule, represented in ISO 8601 datetime format and expressed in Coordinated Universal Time (UTC).
    - `purchase_order_number` string, nullable, required: The purchase order number associated with the subscription. It will be added to invoices generated for this subscription.
    - `plan` PlanObject, required
      - `lago_id` string, uuid, required: Unique identifier of the plan created by Lago.
      - `name` string, required: The name of the plan.
      - `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 plan will be used as the default display name.
      - `created_at` string, date-time, required: The date and time when the plan was created. It is expressed in UTC format according to the ISO 8601 datetime standard. This field provides the timestamp for the exact moment when the plan was initially created.
      - `code` string, required: The code of the plan. It serves as a unique identifier associated with a particular plan. The code is typically used for internal or system-level identification purposes, like assigning a subscription, for instance.
      - `interval` 'weekly' | 'monthly' | 'quarterly' | 'semiannual' | 'yearly', required: The interval used for recurring billing. It represents the frequency at which subscription billing occurs. The interval can be one of the following values: `yearly`, `semiannual`, `quarterly`, `monthly` or `weekly`.
      - `description` string, nullable: The description on the plan.
      - `amount_cents` integer, required: The base cost of the plan, excluding any applicable taxes, that is billed on a recurring basis. This value is defined at 0 if your plan is a pay-as-you-go plan.
      - `amount_currency` 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'ISK' | 'JMD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KRW' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYU' | 'UZS' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW', required
      - `trial_period` number, nullable: The duration in days during which the base cost of the plan is offered for free.
      - `pay_in_advance` boolean: This field determines the billing timing for the plan. When set to `true`, the base cost of the plan is due at the beginning of each billing period. Conversely, when set to `false`, the base cost of the plan is due at the end of each billing period.
      - `bill_charges_monthly` boolean, nullable: This field, when set to `true`, enables to invoice usage-based charges on monthly basis, even if the cadence of the plan is yearly or semiannual. This allows customers to pay charges overage on a monthly basis. This can be set to true only if the plan's interval is `yearly` or `semiannual`.
      - `bill_fixed_charges_monthly` boolean, nullable: This field, when set to `true`, enables to invoice fixed charges on monthly basis, even if the cadence of the plan is yearly or semiannual. This allows customers to pay fixed charges on a monthly basis. This can be set to true only if the plan's interval is `yearly` or `semiannual`.
      - `parent_id` string, uuid, nullable: Unique identifier of the parent plan, created by Lago. It is set on plans that override a parent plan for a single subscription, and `null` on standard plans.
      - `pending_deletion` boolean: This field is set to `true` when the plan is scheduled for deletion but still attached to subscriptions that have to be billed first.
      - `minimum_commitment` MinimumCommitmentObject, nullable
        - `lago_id` string, uuid, required: Unique identifier of the minimum commitment, created by Lago.
        - `plan_code` string: The unique code representing the plan to be attached to the customer.
        - `amount_cents` integer, required: The amount of the minimum commitment in cents.
        - `invoice_display_name` string, nullable: Specifies the name that will be displayed on an invoice. If no value is set for this field, the default name will be used as the display name.
        - `interval` 'weekly' | 'monthly' | 'quarterly' | 'semiannual' | 'yearly': The interval used for recurring billing. It represents the frequency at which subscription billing occurs. The interval can be one of the following values: `yearly`, `semiannual`, `quarterly`, `monthly` or `weekly`.
        - `created_at` string, date-time, required: The date and time when the minimum commitment was created. It is expressed in UTC format according to the ISO 8601 datetime standard. This field provides the timestamp for the exact moment when the minimum commitment was initially created.
        - `updated_at` string, date-time: The date and time when the minimum commitment was updated. It is expressed in UTC format according to the ISO 8601 datetime standard. This field provides the timestamp for the exact moment when the minimum commitment was initially created.
        - `taxes` TaxObject[]: All taxes applied to the minimum commitment.
          - `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, required: 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.
          - `applied_to_billing_entities_codes` string[]: The codes of the billing entities the tax is applied to, sorted alphabetically. It is empty when the tax is only attached to customers. This field is only returned by the tax endpoints, not by taxes nested in another object.
          - `created_at` string, date-time, required: Creation date of the tax.
      - `charges` ChargeObject[]: Additional usage-based charges for this plan.
        - `lago_id` string, uuid, required: Unique identifier of charge, created by Lago.
        - `lago_billable_metric_id` string, uuid, required: Unique identifier of the billable metric created by Lago.
        - `code` string: Unique code identifying the charge within the plan.
        - `billable_metric_code` string, required: Unique code identifying a billable metric.
        - `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 actual charge will be used as the default display name.
        - `created_at` string, date-time, required: The date and time when the charge was created. It is expressed in UTC format according to the ISO 8601 datetime standard.
        - `charge_model` 'dynamic' | 'graduated' | 'graduated_percentage' | 'package' | 'percentage' | 'standard' | 'volume', required: Specifies the pricing model used for the calculation of the final fee. It can be any of the following values: - [`dynamic`](https://docs.getlago.com/guide/plans/charges/charge-models/dynamic) - [`graduated_percentage`](https://docs.getlago.com/guide/plans/charges/charge-models/graduated-percentage) - [`graduated`](https://docs.getlago.com/guide/plans/charges/charge-models/graduated) - [`package`](https://docs.getlago.com/guide/plans/charges/charge-models/package) - [`percentage`](https://docs.getlago.com/guide/plans/charges/charge-models/percentage) - [`standard`](https://docs.getlago.com/guide/plans/charges/charge-models/standard) - [`volume`](https://docs.getlago.com/guide/plans/charges/charge-models/volume)
        - `pay_in_advance` boolean, required: This field determines the billing timing for this specific usage-based 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.
        - `invoiceable` boolean, required: This field specifies whether the charge should be included in a proper invoice. If set to `false`, no invoice will be issued for this charge. You can only set it to `false` when `pay_in_advance` is `true`.
        - `regroup_paid_fees` 'null' | 'invoice', nullable, required: This setting can only be configured if `pay_in_advance` is `true` and `invoiceable` is `false`. This field determines whether and when the charge fee should be included in the invoice. If `null`, no invoice will be issued for this charge fee. If `invoice`, an invoice will be generated at the end of the period, consolidating all charge fees with a succeeded payment status.
        - `prorated` boolean, required: Specifies whether a 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`.
        - `min_amount_cents` integer, required: The minimum spending amount required for the charge, measured in cents and excluding any applicable taxes. It indicates the minimum amount that needs to be charged for each billing period.
        - `properties` ChargeObjectProperties, required
          - `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.
          - `presentation_group_keys` object[]: Groups usage into sub-items on invoices for display only, without affecting pricing or aggregation.
            - `value` string: The event property to group by.
            - `options` object
              - …
        - `filters` ChargeFilterObject[], required: List of filters used to apply differentiated pricing based on additional event properties.
          - `lago_id` string, uuid: Unique identifier of the charge filter, created by Lago.
          - `charge_code` string: Unique code identifying the charge this filter belongs to.
          - `invoice_display_name` string, nullable, required: Specifies the name that will be displayed on an invoice. If no value is set for this field, the values of the filter will be used as the default display name.
          - `properties` ChargeProperties, required
            - `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.
              - …
            - `graduated_percentage_ranges` object[]: Graduated percentage ranges, sorted from bottom to top tiers, used for a `graduated_percentage` charge model.
              - …
            - `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.
              - …
          - `values` object, required: List of possible filter values. The key and values must match one of the billable metric filters.
        - `taxes` TaxObject[]: All taxes applied to the 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, required: 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.
          - `applied_to_billing_entities_codes` string[]: The codes of the billing entities the tax is applied to, sorted alphabetically. It is empty when the tax is only attached to customers. This field is only returned by the tax endpoints, not by taxes nested in another object.
          - `created_at` string, date-time, required: Creation date of the tax.
        - `applied_pricing_unit` object, nullable: The pricing unit applied to the charge.
          - `code` string, required: The code of the pricing unit.
          - `conversion_rate` string, required: The conversion rate from pricing units to the plan's currency.
        - `accepts_target_wallet` boolean: Specifies whether the charge accepts a target wallet for prepaid credits deduction. When `true`, events may include a `target_wallet_code` in their `properties` to direct credit deduction to a specific wallet. This field requires a premium integration.
        - `lago_parent_id` string, uuid, nullable: Unique identifier of the parent charge (if this is an override).
      - `fixed_charges` FixedChargeObject[]: List of fixed charges for this plan. Only returned when creating, retrieving, updating or deleting a plan. It is not returned when listing plans, in the plan webhooks, or on the plan nested in a subscription.
        - `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, nullable, 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` string, required: The number of units for the fixed charge, as a decimal string. 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, required: 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.
          - `applied_to_billing_entities_codes` string[]: The codes of the billing entities the tax is applied to, sorted alphabetically. It is empty when the tax is only attached to customers. This field is only returned by the tax endpoints, not by taxes nested in another object.
          - `created_at` string, date-time, required: Creation date of the tax.
      - `taxes` TaxObject[]: All taxes applied to the plan.
        - `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, required: 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.
        - `applied_to_billing_entities_codes` string[]: The codes of the billing entities the tax is applied to, sorted alphabetically. It is empty when the tax is only attached to customers. This field is only returned by the tax endpoints, not by taxes nested in another object.
        - `created_at` string, date-time, required: Creation date of the tax.
      - `usage_thresholds` UsageThresholdObject[]: List of usage thresholds applied to the plan.
        - `lago_id` string, uuid, required: Unique identifier of the usage threshold created by Lago.
        - `threshold_display_name` string, nullable, required: The display name of the usage threshold.
        - `amount_cents` integer, required: The amount to reach to trigger a `progressive_billing` invoice.
        - `recurring` boolean, required: This field when set to `true` indicates that a `progressive_billing` invoice will be created every time the lifetime usage increases by the specified amount.
        - `created_at` string, date-time, required: The date and time when the usage threshold was created. It is expressed in UTC format according to the ISO 8601 datetime standard.
        - `updated_at` string, date-time, required: The date and time when the usage threshold was last updated. It is expressed in UTC format according to the ISO 8601 datetime standard.
      - `applicable_usage_thresholds` ApplicableUsageThreshold[]: List of usage thresholds that actually apply to the plan. For an overriding plan these are inherited from its parent plan; for a standard plan they match `usage_thresholds`. It is not returned in the plan webhooks.
        - `threshold_display_name` string, nullable, required: The display name of the usage threshold.
        - `amount_cents` integer, required: The amount to reach to trigger a `progressive_billing` invoice.
        - `recurring` boolean, required: This field when set to `true` indicates that a `progressive_billing` invoice will be created every time the lifetime usage increases by the specified amount.
      - `entitlements` PlanEntitlement[]: List of all feature entitlements and their privileges available for this plan. It is not returned with the `plan.deleted` webhook, nor on the plan nested in a subscription.
        - `entitlement` PlanEntitlementObject, required
          - `code` string, required: Unique code used to identify the feature. Max 255 characters.
          - `name` string, nullable, required: Name of the feature. Max 255 characters.
          - `description` string, nullable, required: Description of the feature. Max 600 characters.
          - `privileges` PlanEntitlementPrivilegeObject[], required: Privileges associated with this feature. Each privilege must have a value assigned.
            - `code` string, required: Unique code for the privilege.
            - `name` string, nullable, required: Display name for the privilege.
            - `value_type` 'integer' | 'boolean' | 'string' | 'select', required: Data type of the privilege value. It defaults to `string`.
            - `config` object, required: Extra configuration of the privilege. It is empty unless the value type is `select`.
              - …
            - `value` union, required: Value assigned to this privilege in the entitlement. Type depends on the privilege's value_type.
              - …
      - `metadata` MetadataObject, nullable: Custom metadata stored as key-value pairs. Keys are strings (max 100 characters), values can be strings (max 255 characters) or null.
    - `customer` CustomerObject, required
      - `lago_id` string, uuid, required: Unique identifier assigned to the customer within the Lago application. This ID is exclusively created by Lago and serves as a unique identifier for the customer's record within the Lago system
      - `sequential_id` integer, required: The unique identifier assigned to the customer within the organization's scope. This identifier is used to track and reference the customer's order of creation within the organization's system. It ensures that each customer has a distinct `sequential_id` associated with them, allowing for easy identification and sorting based on the order of creation
      - `slug` string, required: A concise and unique identifier for the customer, formed by combining the Organization's `name`, `id`, and customer's `sequential_id`
      - `external_id` string, required: The customer external unique identifier (provided by your own application)
      - `billing_entity_code` string, required: The unique code of the billing entity associated with the customer.
      - `address_line1` string, nullable, required: The first line of the billing address
      - `address_line2` string, nullable, required: The second line of the billing address
      - `applicable_timezone` 'UTC' | 'Africa/Algiers' | 'Africa/Cairo' | 'Africa/Casablanca' | 'Africa/Harare' | 'Africa/Johannesburg' | 'Africa/Monrovia' | 'Africa/Nairobi' | 'America/Argentina/Buenos_Aires' | 'America/Bogota' | 'America/Caracas' | 'America/Chicago' | 'America/Chihuahua' | 'America/Denver' | 'America/Guatemala' | 'America/Guyana' | 'America/Halifax' | 'America/Indiana/Indianapolis' | 'America/Juneau' | 'America/La_Paz' | 'America/Lima' | 'America/Los_Angeles' | 'America/Mazatlan' | 'America/Mexico_City' | 'America/Monterrey' | 'America/Montevideo' | 'America/New_York' | 'America/Nuuk' | 'America/Phoenix' | 'America/Puerto_Rico' | 'America/Regina' | 'America/Santiago' | 'America/Sao_Paulo' | 'America/St_Johns' | 'America/Tijuana' | 'Asia/Almaty' | 'Asia/Baghdad' | 'Asia/Baku' | 'Asia/Bangkok' | 'Asia/Chongqing' | 'Asia/Colombo' | 'Asia/Dhaka' | 'Asia/Hong_Kong' | 'Asia/Irkutsk' | 'Asia/Jakarta' | 'Asia/Jerusalem' | 'Asia/Kabul' | 'Asia/Kamchatka' | 'Asia/Karachi' | 'Asia/Kathmandu' | 'Asia/Kolkata' | 'Asia/Krasnoyarsk' | 'Asia/Kuala_Lumpur' | 'Asia/Kuwait' | 'Asia/Magadan' | 'Asia/Muscat' | 'Asia/Novosibirsk' | 'Asia/Riyadh' | 'Asia/Seoul' | 'Asia/Shanghai' | 'Asia/Singapore' | 'Asia/Srednekolymsk' | 'Asia/Taipei' | 'Asia/Tashkent' | 'Asia/Tbilisi' | 'Asia/Tehran' | 'Asia/Tokyo' | 'Asia/Ulaanbaatar' | 'Asia/Urumqi' | 'Asia/Vladivostok' | 'Asia/Yakutsk' | 'Asia/Yangon' | 'Asia/Yekaterinburg' | 'Asia/Yerevan' | 'Atlantic/Azores' | 'Atlantic/Cape_Verde' | 'Atlantic/South_Georgia' | 'Australia/Adelaide' | 'Australia/Brisbane' | 'Australia/Darwin' | 'Australia/Hobart' | 'Australia/Melbourne' | 'Australia/Perth' | 'Australia/Sydney' | 'Europe/Amsterdam' | 'Europe/Athens' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/Bratislava' | 'Europe/Brussels' | 'Europe/Bucharest' | 'Europe/Budapest' | 'Europe/Copenhagen' | 'Europe/Dublin' | 'Europe/Helsinki' | 'Europe/Istanbul' | 'Europe/Kaliningrad' | 'Europe/Kyiv' | 'Europe/Lisbon' | 'Europe/Ljubljana' | 'Europe/London' | 'Europe/Madrid' | 'Europe/Minsk' | 'Europe/Moscow' | 'Europe/Paris' | 'Europe/Prague' | 'Europe/Riga' | 'Europe/Rome' | 'Europe/Samara' | 'Europe/Sarajevo' | 'Europe/Skopje' | 'Europe/Sofia' | 'Europe/Stockholm' | 'Europe/Tallinn' | 'Europe/Vienna' | 'Europe/Vilnius' | 'Europe/Volgograd' | 'Europe/Warsaw' | 'Europe/Zagreb' | 'Europe/Zurich' | 'GMT+12' | 'Pacific/Apia' | 'Pacific/Auckland' | 'Pacific/Chatham' | 'Pacific/Fakaofo' | 'Pacific/Fiji' | 'Pacific/Guadalcanal' | 'Pacific/Guam' | 'Pacific/Honolulu' | 'Pacific/Majuro' | 'Pacific/Midway' | 'Pacific/Noumea' | 'Pacific/Pago_Pago' | 'Pacific/Port_Moresby' | 'Pacific/Tongatapu', required
      - `city` string, nullable, required: The city of the customer's billing address
      - `country` 'null' | 'AD' | 'AE' | 'AF' | 'AG' | 'AI' | 'AL' | 'AM' | 'AO' | 'AQ' | 'AR' | 'AS' | 'AT' | 'AU' | 'AW' | 'AX' | 'AZ' | 'BA' | 'BB' | 'BD' | 'BE' | 'BF' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BL' | 'BM' | 'BN' | 'BO' | 'BQ' | 'BR' | 'BS' | 'BT' | 'BV' | 'BW' | 'BY' | 'BZ' | 'CA' | 'CC' | 'CD' | 'CF' | 'CG' | 'CH' | 'CI' | 'CK' | 'CL' | 'CM' | 'CN' | 'CO' | 'CR' | 'CU' | 'CV' | 'CW' | 'CX' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DK' | 'DM' | 'DO' | 'DZ' | 'EC' | 'EE' | 'EG' | 'EH' | 'ER' | 'ES' | 'ET' | 'FI' | 'FJ' | 'FK' | 'FM' | 'FO' | 'FR' | 'GA' | 'GB' | 'GD' | 'GE' | 'GF' | 'GG' | 'GH' | 'GI' | 'GL' | 'GM' | 'GN' | 'GP' | 'GQ' | 'GR' | 'GS' | 'GT' | 'GU' | 'GW' | 'GY' | 'HK' | 'HM' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IE' | 'IL' | 'IM' | 'IN' | 'IO' | 'IQ' | 'IR' | 'IS' | 'IT' | 'JE' | 'JM' | 'JO' | 'JP' | 'KE' | 'KG' | 'KH' | 'KI' | 'KM' | 'KN' | 'KP' | 'KR' | 'KW' | 'KY' | 'KZ' | 'LA' | 'LB' | 'LC' | 'LI' | 'LK' | 'LR' | 'LS' | 'LT' | 'LU' | 'LV' | 'LY' | 'MA' | 'MC' | 'MD' | 'ME' | 'MF' | 'MG' | 'MH' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MQ' | 'MR' | 'MS' | 'MT' | 'MU' | 'MV' | 'MW' | 'MX' | 'MY' | 'MZ' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NL' | 'NO' | 'NP' | 'NR' | 'NU' | 'NZ' | 'OM' | 'PA' | 'PE' | 'PF' | 'PG' | 'PH' | 'PK' | 'PL' | 'PM' | 'PN' | 'PR' | 'PS' | 'PT' | 'PW' | 'PY' | 'QA' | 'RE' | 'RO' | 'RS' | 'RU' | 'RW' | 'SA' | 'SB' | 'SC' | 'SD' | 'SE' | 'SG' | 'SH' | 'SI' | 'SJ' | 'SK' | 'SL' | 'SM' | 'SN' | 'SO' | 'SR' | 'SS' | 'ST' | 'SV' | 'SX' | 'SY' | 'SZ' | 'TC' | 'TD' | 'TF' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TL' | 'TM' | 'TN' | 'TO' | 'TR' | 'TT' | 'TV' | 'TW' | 'TZ' | 'UA' | 'UG' | 'UM' | 'US' | 'UY' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'YE' | 'YT' | 'ZA' | 'ZM' | 'ZW', nullable, required
      - `currency` 'null' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'ISK' | 'JMD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KRW' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYU' | 'UZS' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW', nullable, required
      - `email` string, email, nullable, required: The email of the customer
      - `legal_name` string, nullable, required: The legal company name of the customer
      - `legal_number` string, nullable, required: The legal company number of the customer
      - `logo_url` string, nullable, required: The logo URL of the customer
      - `name` string, nullable, required: The full name of the customer
      - `firstname` string, nullable, required: First name of the customer
      - `lastname` string, nullable, required: Last name of the customer
      - `account_type` 'customer' | 'partner', required: The type of the account. It can have one of the following values: - `customer`: the account is a customer. - `partner`: the account is a partner.
      - `customer_type` 'company' | 'individual' | 'null', nullable, required: The type of the customer. It can have one of the following values: - `company`: the customer is a company. - `individual`: the customer is an individual.
      - `phone` string, nullable, required: The phone number of the customer
      - `state` string, nullable, required: The state of the customer's billing address
      - `tax_identification_number` string, nullable, required: The tax identification number of the customer
      - `timezone` 'null' | 'UTC' | 'Africa/Algiers' | 'Africa/Cairo' | 'Africa/Casablanca' | 'Africa/Harare' | 'Africa/Johannesburg' | 'Africa/Monrovia' | 'Africa/Nairobi' | 'America/Argentina/Buenos_Aires' | 'America/Bogota' | 'America/Caracas' | 'America/Chicago' | 'America/Chihuahua' | 'America/Denver' | 'America/Godthab' | 'America/Guatemala' | 'America/Guyana' | 'America/Halifax' | 'America/Indiana/Indianapolis' | 'America/Juneau' | 'America/La_Paz' | 'America/Lima' | 'America/Los_Angeles' | 'America/Mazatlan' | 'America/Mexico_City' | 'America/Monterrey' | 'America/Montevideo' | 'America/New_York' | 'America/Phoenix' | 'America/Puerto_Rico' | 'America/Regina' | 'America/Santiago' | 'America/Sao_Paulo' | 'America/St_Johns' | 'America/Tijuana' | 'Asia/Almaty' | 'Asia/Baghdad' | 'Asia/Baku' | 'Asia/Bangkok' | 'Asia/Chongqing' | 'Asia/Colombo' | 'Asia/Dhaka' | 'Asia/Hong_Kong' | 'Asia/Irkutsk' | 'Asia/Jakarta' | 'Asia/Jerusalem' | 'Asia/Kabul' | 'Asia/Kamchatka' | 'Asia/Karachi' | 'Asia/Kathmandu' | 'Asia/Kolkata' | 'Asia/Krasnoyarsk' | 'Asia/Kuala_Lumpur' | 'Asia/Kuwait' | 'Asia/Magadan' | 'Asia/Muscat' | 'Asia/Novosibirsk' | 'Asia/Rangoon' | 'Asia/Riyadh' | 'Asia/Seoul' | 'Asia/Shanghai' | 'Asia/Singapore' | 'Asia/Srednekolymsk' | 'Asia/Taipei' | 'Asia/Tashkent' | 'Asia/Tbilisi' | 'Asia/Tehran' | 'Asia/Tokyo' | 'Asia/Ulaanbaatar' | 'Asia/Urumqi' | 'Asia/Vladivostok' | 'Asia/Yakutsk' | 'Asia/Yekaterinburg' | 'Asia/Yerevan' | 'Atlantic/Azores' | 'Atlantic/Cape_Verde' | 'Atlantic/South_Georgia' | 'Australia/Adelaide' | 'Australia/Brisbane' | 'Australia/Darwin' | 'Australia/Hobart' | 'Australia/Melbourne' | 'Australia/Perth' | 'Australia/Sydney' | 'Europe/Amsterdam' | 'Europe/Athens' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/Bratislava' | 'Europe/Brussels' | 'Europe/Bucharest' | 'Europe/Budapest' | 'Europe/Copenhagen' | 'Europe/Dublin' | 'Europe/Helsinki' | 'Europe/Istanbul' | 'Europe/Kaliningrad' | 'Europe/Kiev' | 'Europe/Lisbon' | 'Europe/Ljubljana' | 'Europe/London' | 'Europe/Madrid' | 'Europe/Minsk' | 'Europe/Moscow' | 'Europe/Paris' | 'Europe/Prague' | 'Europe/Riga' | 'Europe/Rome' | 'Europe/Samara' | 'Europe/Sarajevo' | 'Europe/Skopje' | 'Europe/Sofia' | 'Europe/Stockholm' | 'Europe/Tallinn' | 'Europe/Vienna' | 'Europe/Vilnius' | 'Europe/Volgograd' | 'Europe/Warsaw' | 'Europe/Zagreb' | 'Europe/Zurich' | 'GMT+12' | 'Pacific/Apia' | 'Pacific/Auckland' | 'Pacific/Chatham' | 'Pacific/Fakaofo' | 'Pacific/Fiji' | 'Pacific/Guadalcanal' | 'Pacific/Guam' | 'Pacific/Honolulu' | 'Pacific/Majuro' | 'Pacific/Midway' | 'Pacific/Noumea' | 'Pacific/Pago_Pago' | 'Pacific/Port_Moresby' | 'Pacific/Tongatapu', nullable, required
      - `url` string, nullable, required: The custom website URL of the customer
      - `zipcode` string, nullable, required: The zipcode of the customer's billing address
      - `net_payment_term` integer, nullable, required: The net payment term, expressed in days, specifies the duration within which a customer is expected to remit payment after the invoice is finalized.
      - `external_salesforce_id` string, nullable, required: The customer ID within the Salesforce system
      - `created_at` string, date-time, required: The date of the customer creation, represented in ISO 8601 datetime format and expressed in Coordinated Universal Time (UTC). The creation_date provides a standardized and internationally recognized timestamp for when the customer object was created
      - `updated_at` string, date-time, required: The date of the customer update, represented in ISO 8601 datetime format and expressed in Coordinated Universal Time (UTC). The update_date provides a standardized and internationally recognized timestamp for when the customer object was updated
      - `finalize_zero_amount_invoice` 'inherit' | 'skip' | 'finalize', required: Specifies how invoices with a zero total amount should be handled: - `inherit`: (Default) Follows the organization-level configuration. - `finalize`: Invoices are issued and finalized even if the total amount is zero. - `skip`: Invoices with a total amount of zero are not finalized.
      - `skip_invoice_custom_sections` boolean, required: Set to true to exclude all invoice custom sections from PDF generation for this customer only.
      - `billing_configuration` CustomerBillingConfiguration, required: Configuration specific to the payment provider, utilized for billing the customer. This object contains settings and parameters necessary for processing payments and invoicing the customer.
        - `invoice_grace_period` integer, nullable: The grace period, expressed in days, for the invoice. This period refers to the additional time granted to the customer beyond the invoice due date to adjust usage and line items. It is null when the customer has no grace period of its own and falls back to the billing entity. This is a premium feature, the value is ignored without a premium license.
        - `subscription_invoice_issuing_date_anchor` 'current_period_end' | 'next_period_start' | 'null', nullable: Defines whether the issuing date follows the current billing period's end date or the next period starting date.
        - `subscription_invoice_issuing_date_adjustment` 'align_with_finalization_date' | 'keep_anchor' | 'null', nullable: The logic applied on top of the subscription_invoice_issuing_date_anchor rule. You can opt to use the invoice finalization date, that includes any configured grace period.
        - `payment_provider` 'stripe' | 'adyen' | 'cashfree' | 'flutterwave' | 'gocardless' | 'moneyhash' | 'null', nullable: The payment provider utilized to initiate payments for invoices issued by Lago. Accepted values: `stripe`, `adyen`, `cashfree`, `flutterwave`, `gocardless`, `moneyhash` or null. This field is required if you intend to assign a `provider_customer_id`. Send null to detach the customer from its current payment provider.
        - `payment_provider_code` string, nullable: Unique code used to identify a payment provider connection.
        - `provider_customer_id` string: The customer ID within the payment provider's system. If this field is not provided, Lago has the option to create a new customer record within the payment provider's system on behalf of the customer
        - `sync` boolean: Set this field to `true` if you want to create the customer in the payment provider synchronously with the customer creation process in Lago. This option is applicable only when the `provider_customer_id` is `null` and the customer is automatically created in the payment provider through Lago. By default, the value is set to `false`
        - `sync_with_provider` boolean: Set this field to `true` if you want to create a customer record in the payment provider's system. This option is applicable only when the `provider_customer_id` is null and the `sync_with_provider` field is set to `true`. By default, the value is set to `false`
        - `document_locale` string, nullable: The document locale, specified in the ISO 639-1 format. This field represents the language or locale used for the documents issued by Lago
        - `provider_payment_methods` string[], nullable: Specifies the available payment methods that can be used for this customer when `payment_provider` is set to `stripe`. The `provider_payment_methods` field is an array that allows multiple payment options to be defined. If this field is not explicitly set, the payment methods will be set to `card`. For now, possible values are `card`, `sepa_debit`, `us_bank_account`, `bacs_debit`, `boleto`, `link`, `crypto` and `customer_balance`. Note that when `link` is selected, `card` should also be provided in the array. When `customer_balance` is selected, no other payment can be selected.
      - `shipping_address` Address, required: The shipping address of the customer.
        - `address_line1` string, nullable: The first line of the shipping address
        - `address_line2` string, nullable: The second line of the shipping address
        - `city` string, nullable: The city of the customer's shipping address
        - `country` 'null' | 'AD' | 'AE' | 'AF' | 'AG' | 'AI' | 'AL' | 'AM' | 'AO' | 'AQ' | 'AR' | 'AS' | 'AT' | 'AU' | 'AW' | 'AX' | 'AZ' | 'BA' | 'BB' | 'BD' | 'BE' | 'BF' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BL' | 'BM' | 'BN' | 'BO' | 'BQ' | 'BR' | 'BS' | 'BT' | 'BV' | 'BW' | 'BY' | 'BZ' | 'CA' | 'CC' | 'CD' | 'CF' | 'CG' | 'CH' | 'CI' | 'CK' | 'CL' | 'CM' | 'CN' | 'CO' | 'CR' | 'CU' | 'CV' | 'CW' | 'CX' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DK' | 'DM' | 'DO' | 'DZ' | 'EC' | 'EE' | 'EG' | 'EH' | 'ER' | 'ES' | 'ET' | 'FI' | 'FJ' | 'FK' | 'FM' | 'FO' | 'FR' | 'GA' | 'GB' | 'GD' | 'GE' | 'GF' | 'GG' | 'GH' | 'GI' | 'GL' | 'GM' | 'GN' | 'GP' | 'GQ' | 'GR' | 'GS' | 'GT' | 'GU' | 'GW' | 'GY' | 'HK' | 'HM' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IE' | 'IL' | 'IM' | 'IN' | 'IO' | 'IQ' | 'IR' | 'IS' | 'IT' | 'JE' | 'JM' | 'JO' | 'JP' | 'KE' | 'KG' | 'KH' | 'KI' | 'KM' | 'KN' | 'KP' | 'KR' | 'KW' | 'KY' | 'KZ' | 'LA' | 'LB' | 'LC' | 'LI' | 'LK' | 'LR' | 'LS' | 'LT' | 'LU' | 'LV' | 'LY' | 'MA' | 'MC' | 'MD' | 'ME' | 'MF' | 'MG' | 'MH' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MQ' | 'MR' | 'MS' | 'MT' | 'MU' | 'MV' | 'MW' | 'MX' | 'MY' | 'MZ' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NL' | 'NO' | 'NP' | 'NR' | 'NU' | 'NZ' | 'OM' | 'PA' | 'PE' | 'PF' | 'PG' | 'PH' | 'PK' | 'PL' | 'PM' | 'PN' | 'PR' | 'PS' | 'PT' | 'PW' | 'PY' | 'QA' | 'RE' | 'RO' | 'RS' | 'RU' | 'RW' | 'SA' | 'SB' | 'SC' | 'SD' | 'SE' | 'SG' | 'SH' | 'SI' | 'SJ' | 'SK' | 'SL' | 'SM' | 'SN' | 'SO' | 'SR' | 'SS' | 'ST' | 'SV' | 'SX' | 'SY' | 'SZ' | 'TC' | 'TD' | 'TF' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TL' | 'TM' | 'TN' | 'TO' | 'TR' | 'TT' | 'TV' | 'TW' | 'TZ' | 'UA' | 'UG' | 'UM' | 'US' | 'UY' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'YE' | 'YT' | 'ZA' | 'ZM' | 'ZW', nullable
        - `state` string, nullable: The state of the customer's shipping address
        - `zipcode` string, nullable: The zipcode of the customer's shipping address
      - `metadata` CustomerMetadata[], required
        - `lago_id` string, uuid, required: A unique identifier for the customer metadata object in the Lago application. Can be used to update a key-value pair
        - `key` string, required: The metadata object key
        - `value` string, required: The metadata object value
        - `display_in_invoice` boolean, required: Determines whether the item or information should be displayed in the invoice. If set to true, the item or information will be included and visible in the generated invoice. If set to false, the item or information will be excluded and not displayed in the invoice.
        - `created_at` string, date-time, required: The date of the metadata object creation, represented in ISO 8601 datetime format and expressed in Coordinated Universal Time (UTC). The creation_date provides a standardized and internationally recognized timestamp for when the metadata object was created
      - `integration_customers` IntegrationCustomer[]
        - `lago_id` string, uuid, required: A unique identifier for the integration customer object in the Lago application.
        - `type` 'netsuite' | 'anrok' | 'avalara' | 'xero' | 'hubspot' | 'salesforce', required: The integration type used for accounting, tax and CRM syncs. Accepted values: `netsuite`, `anrok`, `avalara`, `xero`, `hubspot`, `salesforce`.
        - `integration_code` string, required: Unique code used to identify an integration connection.
        - `code` string, nullable, required: Unique code identifying this integration customer. It defaults to the code of the integration connection.
        - `is_default` boolean, required: Whether this integration customer is the default one of its category for the customer.
        - `category` 'payment' | 'tax' | 'accounting' | 'crm' | 'null', nullable, required: The category of the integration connection. It is derived from the integration type. Accepted values: `payment`, `tax`, `accounting`, `crm`.
        - `external_customer_id` string, nullable, required: The customer ID within the integration's system. It is `null` when the customer has not been created in the integration's system yet.
        - `sync_with_provider` boolean, nullable: Set this field to `true` if you want to create a customer record in the integration's system. This option is applicable only when the `external_customer_id` is null and the `sync_with_provider` field is set to `true`. By default, the value is set to `false`
        - `subsidiary_id` string: This optional field is needed only when working with `netsuite` connection.
        - `targeted_object` string, nullable: This optional field is present only when working with `hubspot` connection.
        - `email` string, nullable: This optional field is present only when working with `hubspot` connection.
    - `entitlements` SubscriptionEntitlementObject[]: The feature entitlements of the subscription. Only sent with the `subscription.started` and `subscription.updated` webhooks.
      - `code` string, required: Unique code used to identify the feature. Max 255 characters.
      - `name` string, nullable, required: Name of the feature. Max 255 characters.
      - `description` string, nullable, required: Description of the feature. Max 600 characters.
      - `privileges` SubscriptionEntitlementPrivilegeObject[], required: Privileges associated with this feature. Each privilege shows the plan value and any subscription override.
        - `code` string, required: Unique code for the privilege.
        - `name` string, nullable, required: Display name for the privilege.
        - `value_type` 'integer' | 'boolean' | 'string' | 'select', required: Data type of the privilege value. It defaults to `string`.
        - `config` object, required: Extra configuration of the privilege. It is empty unless the value type is `select`.
          - `select_options` string[]: The values the privilege accepts. It is only sent when the value type is `select`.
        - `value` union, required: Applicable value for this subscription (override_value if set, plan_value otherwise). Type depends on the privilege's value_type.
          - integer: Value for integer type privileges
          - boolean: Value for boolean type privileges
          - string: Value for string or select type privileges
        - `plan_value` union, required: Value assigned to this privilege in the plan. Type depends on the privilege's value_type. Null when the privilege only exists as a subscription override.
          - integer: Value for integer type privileges
          - boolean: Value for boolean type privileges
          - string: Value for string or select type privileges
        - `override_value` union, required: Value assigned to this subscription specifically. Type depends on the privilege's value_type. Null if no override is set.
          - integer: Value for integer type privileges
          - boolean: Value for boolean type privileges
          - string: Value for string or select type privileges
      - `overrides` object, required: Privilege values set on this subscription only. Each key is a privilege code and each value is the subscription override. Privileges that use the plan value are not listed.

## Acknowledgement `200`

Return a 200 status to indicate that the data was received successfully

---

[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.dev/getlago/apis/lago-api-documentation/revisions/b216574b9612?raw)
