---
title: "Terminate a subscription"
method: DELETE
path: "/subscriptions/{external_id}"
tags: ["subscriptions"]
---

# Terminate a subscription

`DELETE /subscriptions/{external_id}`

This endpoint allows you to terminate a subscription.

## Query parameters

- `status` string
- `on_termination_credit_note` 'credit' | 'refund' | 'skip'
- `on_termination_invoice` 'generate' | 'skip'

## Response `200`

Subscription terminated

- Subscription
  - `subscription` SubscriptionObject, 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 — 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' | 'SZL' | 'THB' | 'TJS' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYU' | 'UZS' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW'
    - `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.
      - `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 — 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 — 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.
    - `cancellation_reason` 'payment_failed' | 'timeout', nullable — The reason a payment-gated subscription was canceled before activation. Null unless the subscription was canceled by payment gating. - `payment_failed`: the gating payment failed. - `timeout`: the activation rule expired before the payment succeeded.
    - `activated_at` string, date-time, nullable — 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[] — 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 — 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).

## Other responses

- `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)
