---
title: "Create subscription template configuration"
method: POST
path: "/v1/subscriptions/templates/{id}/configurations"
tags: ["Subscriptions > Templates"]
---

# Create subscription template configuration

`POST /v1/subscriptions/templates/{id}/configurations`

Add a configuration (currency/country, phases, products, contract terms) to a subscription template.

## Path parameters

- `id` string, required

## Request body

- object
  - `currency` 'EUR' | 'AED' | 'AFN' | 'XCD' | 'ALL' | 'AMD' | 'AOA' | 'ARS' | 'USD' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'XOF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'NOK' | 'BWP' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'XAF' | 'CHF' | 'NZD' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUP' | 'CVE' | 'ANG' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'MAD' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'XPF' | 'NGN' | 'NIO' | 'NPR' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STD' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL', required — Subscription template currency.
  - `country` 'AD' | 'AE' | 'AF' | 'AG' | 'AI' | 'AL' | 'AM' | 'AO' | 'AQ' | 'AR' | 'AS' | 'AT' | 'AU' | 'AW' | 'AX' | 'AZ' | 'BA' | 'BB' | 'BD' | 'BE' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BL' | 'BM' | 'BN' | 'BO' | 'BQ' | 'BR' | 'BS' | 'BT' | 'BF' | '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' | 'IC' | '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' | 'PT-20' | 'PT-30' | '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' | 'XK' | 'YE' | 'YT' | 'ZA' | 'ZM' | 'ZW', nullable, required — Subscription template country.
  - `name` string — Subscription custom name.
  - `minimum_invoice_fee` number, nullable — Minimum fee applied to each invoice outside of one time payments.
  - `cancel_at` string, date-time — Subscription cancel date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
  - `cancellation_strategy` 'refund_prorata' | 'refund_custom' | 'charge_prorata' | 'charge_custom' | 'end_of_period' | 'do_nothing' — Strategy used to cancel the subscription. If not specified `do_nothing` is used. - `charge_prorata`: Will charge the customer the unpaid amount for the prorated period up to the end of the current period. - `charge_custom`: Will charge the customer a custom amount. - `refund_prorata`: Will refund to the customer the overpaid subscription amount using prorated calculations on the cancellation date. - `refund_custom`: Will refund to the customer a custom amount. - `end_of_period`: Will cancel the subscription at the end date of the current billing period. - `do_nothing`: Will only cease the subscription without any additional actions.
  - `custom_properties` object — A list of key value with the slug of the custom property as the key and the custom property value as value.
  - `generate_document` union — Generate non-legal documents instead of invoices.
    - boolean
    - 'true' | 'false'
  - `document_name` string, nullable — If `generate_document` is turned on, allows you to give a name to your document.
  - `add_tax_to_document` union — If `generate_document` is turned on, will add taxes to document.
    - boolean
    - 'true' | 'false'
  - `generate_draft_invoices` union — Generate draft invoices for the subscription. Each invoice will need to be reviewed and validated manually before being sent
    - boolean
    - 'true' | 'false'
  - `contract_terms` object — Contract terms linked to the subscription.
    - `starts_at` string, date-time — Start date of the contract. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
    - `ends_at` string, date-time — End date of the contract. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
    - `duration` object — Interval over which the contract initially spans. Only applies to `duration` end strategy.
      - `period` 'days' | 'weeks' | 'months' | 'years', required
      - `count` integer
    - `renew_automatically` union — Indicates if the contract should be renewed automatically. - `true`: The contract will be renewed automatically. - `false`: The contract will not be renewed automatically.
      - boolean
      - 'true' | 'false'
    - `renew_for_duration` object — Interval over which the contract will be renewed. Only applies if `renew_automatically` is true.
      - `period` 'days' | 'weeks' | 'months' | 'years', required
      - `count` integer
    - `activation_strategy` 'start_date' | 'immediately' | 'manual' | 'quote_signature' | 'checkout', required — Activation strategy of the contract. - `immediately`: The contract will be activated immediately. - `manual`: The contract will be activated when a user manually activates it. - `start_date`: The contract will be activated on a specified date. - `quote_signature`: The contract will be activated when the subscription quote is signed. - `checkout`: The contract will be activated when the subscription checkout is completed.
    - `end_strategy` 'end_date' | 'duration' | 'manual', required — End strategy of contract. - `manual`: The contract ends when a user manually stops it. - `end_date`: The contract ends on a specified date. - `duration`: The contract ends after a specific relative duration, unless `renew_automatically` is true.
  - `phases` object[], required — Phases of the subscription.
    - `name` string — Name of the subscription phase.
    - `type` 'setup' | 'trial' | 'standard' — Type of subscription phase. - `setup`: The phase represents a non-recurring service setup period, often used before the actual recurring subscription begins. - `trial`: The phase represents a non-recurring trial period, often used to allow users to opt out or experience a free test. - `standard`: The phase represents a standard recurring billing.
    - `status` 'finished' | 'pending' — Status of subscription phase. - `pending`: The phase is waiting to start (not started yet). - `active`: The phase is currently in progress. - `finished`: The phase has ended and is complete.
    - `order` number — Order in which the phase is executed within all subscription phases.
    - `activation_strategy` 'immediately' | 'manual' | 'start_date' | 'quote_signature' | 'checkout' | 'contract_start_date' | 'previous_phase_end', required — Activation strategy of subscription phase. - `immediately`: The phase starts as soon as the subscription is activated. - `manual`: The phase starts when a user manually activates it. - `start_date`: The phase starts on a specified date. - `quote_signature`: The phase starts when the subscription quote is signed. - `checkout`: The phase starts when the subscription checkout is completed. - `contract_start_date`: The phase starts on the start date of the related subscription contract. - `previous_phase_end`: The phase starts when the previous phase ends.
    - `end_strategy` 'manual' | 'end_date' | 'duration' | 'contract_end_date', required — End strategy of subscription phase. - `manual`: The phase ends when a user manually stops it. - `end_date`: The phase ends on a specified date. - `duration`: The phase ends after a specific relative duration. - `contract_end_date`: The phase ends on the end date of the related subscription contract.
    - `duration` object — Interval over which the subscription phase spans. Only applies to `duration` end strategy.
      - `period` 'days' | 'weeks' | 'months' | 'years', required
      - `count` integer
    - `billing_date_setting` 'phase_start' | 'specific_date', required — Represents when the first billing date occurs. - `phase_start`: Aligns with the start of the phase. - `specific_date`: Occurs on a specified date.
    - `initial_billing_at` string, date-time — Date when the subscription phase will start being billed. Only applies to `specific_date` billing date setting. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
    - `starts_at` string, date-time — Actual start date of the phase. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
    - `ends_at` string, date-time — Actual end date of the phase. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
    - `billing_cycle_alignment` 'calendar_period' | 'anniversary' — Alignment of product billing cycles. - `calendar_period`: The billing cycles of the products will be aligned on the calendar period, after the first period which will be invoiced taking into account the prorata of the first cycle compared to the product periodicity. - `anniversary`: The billing cycles of the products will be aligned on the anniversary of the phase initial billing date.
    - `do_not_invoice_phase` boolean — Indicates if the phase should be invoiced. If set to true, the phase will not generate any invoices.
    - `transition_calculation_method` 'prorata' | 'pay_in_full' | 'none' — Calculation method used when transitioning from one phase to the next one. - `prorata`: The prorated amount between the two phases relative to the end date (the transition date) must be paid. - `pay_in_full`: The full amount for the phase billing period must be paid. - `none`: No amount will need to be paid, phase will simply transition from one to the next.
    - `transition_invoicing_schedule` 'immediately' — Represents when the transition amount will be invoiced. - `immediately`: An invoice will be generated immediately with the corresponding amount.
    - `products` object[], required — Products comprising the subscription phase.
      - `id` string, required — Product ID.
      - `name` string — Product name. This will appear on the final invoices.
      - `description` string — Product description. This will appear on the final invoices.
      - `description_display_interval_dates` boolean — Indicates if the dates of the interval should be automatically added in the product description on the invoices.
      - `payment_interval` union — Interval on which the product is billed. This interval can be different between products and can differ from the subscription commitment interval.
        - object
          - `period` 'once', required
        - object
          - `period` 'days' | 'weeks' | 'months' | 'years', required
          - `count` integer
      - `payment_schedule` 'start' | 'end' — Indicates if the product should be billed at the start or the end of the payment interval.
      - `price` object — Similar to `prices`, allow to apply a single fee price more easily.
        - `type` 'fee', required
        - `amount` number, required — Monetary amount. Expressed in currency's smallest unit.
      - `prices` union[] — Prices of the product. If not specified, the matching prices (depending on the currency, interval, etc) of the product defined in the products catalog/plan are used.
        - union
          - object
            - `type` 'fee', required
            - `amount` number, required — Monetary amount. Expressed in currency's smallest unit.
          - object
            - `type` 'volume', required
            - `amount` number, required — Monetary amount of the price for the number of units defined by `unit_count`. Expressed in currency's smallest unit.
            - `unit_count` number, required — Number of units considered for the amount.
            - `from` number, required — From limit.
            - `to` number, nullable, required — To limit.
            - `on_tier_incomplete` 'pro_rata' | 'pay_in_full' | 'do_not_charge', nullable — Logic used to compute the amount when usage on the tier is incomplete. - `pro_rata`: The amount is computed using the pro rata of the tier's consumption. - `pay_in_full`: The amount corresponds to the full payment of the tier. - `do_not_charge`: The tier is not charged and ignored.
          - object
            - `type` 'packaged', required
            - `amount` number, required — Monetary amount of the price for the number of units defined by `unit_count`. Expressed in currency's smallest unit.
            - `unit_count` number, required — Number of units considered for the amount.
            - `from` number, required — From limit.
            - `to` number, nullable, required — To limit.
            - `on_bucket_incomplete` 'pro_rata' | 'pay_in_full' | 'do_not_charge', nullable — Logic used to compute the amount when usage reaches an incomplete bucket (the bucket size corresponds to the `unitCount`). - `pro_rata`: The amount is computed using the pro rata of the bucket's consumption. - `pay_in_full`: The amount corresponds to the full payment of the bucket. - `do_not_charge`: The bucket is not charged and ignored.
          - object
            - `type` 'bulk', required
            - `amount` number, required — Monetary amount of the price for the number of units defined by `unit_count`. Expressed in currency's smallest unit.
            - `unit_count` number, required — Number of units considered for the amount.
            - `to` number, nullable, required — To limit.
            - `on_tier_incomplete` 'pro_rata' | 'pay_in_full' | 'do_not_charge', nullable — Logic used to compute the amount when usage on the tier is incomplete. - `pro_rata`: The amount is computed using the pro rata of the tier's consumption. - `pay_in_full`: The amount corresponds to the full payment of the tier. - `do_not_charge`: The tier is not charged and ignored.
          - object
            - `type` 'bps', required
            - `from` number, required — From limit.
            - `to` number, nullable, required — To limit.
            - `percentage` number, required — Percentage applied on each unit to compute the usage.
            - `per_unit_cap` number, nullable, required — Maximum amount for one unit. Expressed in currency's smallest unit.
            - `per_unit_floor` number, nullable, required — Minimum amount for one unit. Expressed in currency's smallest unit.
            - `per_unit_fee` number, nullable, required — Fee amount applied per unit. Expressed in currency's smallest unit.
          - object — For seat products only, if you are looking for credits, use a fee price
            - `type` 'bundle', required
            - `amount` number, required — Monetary amount of the price for the number of units defined by `unit_count`. Expressed in currency's smallest unit.
            - `unit_count` number, required — Number of units considered for the amount.
      - `count` number — Number of product units. Only applies to products of type `flat_fee`, `seat` or `credit`.
      - `unit_name` string — Product name. This will appear on the final invoices. Only applies to products of type `seat` or `usage`.
      - `min_committed_count` number — Minimum of units committed. If usage is less than this number, then this value will be used. Only applies to products of type `usage`.
      - `min_amount` number, nullable — Minimum amount billed. If the final computed amount from the usage for this product is less than this amount, then this value will be used. Only applies to products of type `usage`.
      - `max_amount` number, nullable — Maximum amount billed. If the final computed amount from the usage for this product is greater than this amount, then this value will be used. Only applies to products of type `usage`.
      - `charging_method` 'prorata' | 'pay_in_full' | 'do_not_charge', nullable — Charging method for seat count updates within the current billing period. Only applies to connected seat products. - `prorata`: Price calculated proportionally to time elapsed in the billing period. - `pay_in_full`: Price calculated for the entire billing period. - `do_not_charge`: No charge for the update.
      - `seat_invoicing_schedule` 'immediately' | 'next_invoice' | 'custom', nullable — Policy defining when seat count changes are invoiced. Only applies to connected seat products. - `immediately`: Seat changes are invoiced immediately. - `next_invoice`: Seat changes are invoiced at the next invoice. - `custom`: Seat changes are invoiced on a custom schedule.
      - `metering_interval_type` 'subscription_commitment' | 'payment_interval' | 'full_database' | 'custom' — Indicates on which type of interval the usage should be aggregated. - `subscription_commitment`: For the usage contained within the subscription commitment period. - `payment_interval`: For the usage contained within the payment interval of the product. - `full_database`: For all the usage we ingested for this product, no matter the period. - `custom`: For the usage contained within a custom interval that starts with the phase and renews independently of the billing interval. Requires `metering_interval` to be set. Only applies to products of type `usage`.
      - `metering_interval` object — Custom interval for usage aggregation. Required when `metering_interval_type` is `custom`. The interval starts at the phase start and renews on its own cycle (e.g. `{ period: 'months', count: 3 }` for quarterly metering with monthly billing). Only applies to products of type `usage`.
        - `period` 'days' | 'weeks' | 'months' | 'years', required
        - `count` integer, required
      - `bill_usage_difference` union — Only bill the usage difference comparing to the previous period (i.e. actual amount minus last invoice amount). Doesn't apply to `payment_interval` metering interval type. Only applies to products of type `usage`.
        - boolean
        - 'true' | 'false'
      - `children_usage_aggregation` 'sum' | 'max', nullable — Controls whether a parent organization's metered usage is billed on the combined usage of the parent and its direct children, and how per-member values are combined. - `null`: Organization-based usage is disabled. Only the subscription customer's own usage is billed. - `sum`: The usage values of the parent and each direct child are added together (organization total). - `max`: Only the single highest-consuming member (parent or one direct child) is billed. Only applies to products of type `usage`. Not compatible with BPS prices.
      - `credits_expiration_in_days` number, nullable — Validity in days for credits that will be topped-up automatically. Once the period has passed, they'll expire.
      - `expire_credits_at_end_of_period` union — Automatically set the expiration date to the end of the next period for each topup. Takes priority on `creditsExpirationInDays`
        - boolean
        - 'true' | 'false'
    - `coupons` union[] — Coupons comprising the subscription phase.
      - union
        - object
          - `id` string, required — Coupon ID.
          - `repeat` 'once' | 'forever' | 'custom' | 'duration', nullable — Coupon frequency. Required for inline coupons. Optional when an existing coupon `id` is provided: if omitted, defaults to the catalog coupon's repeat value. - `once`: Will apply the coupon only to the first one invoice. - `forever`: Will apply the coupon to all invoices. - `custom`: Will apply to coupon until a specified expiration date. - `duration`: Will apply the coupon for a specific duration (e.g., 3 months).
          - `duration_period` 'days' | 'weeks' | 'months' | 'years' — Period of time for which the coupon will be applied. Only applies to the `duration` coupon frequency.
          - `duration_count` number — Number of periods for which the coupon will be applied. Only applies to the `duration` coupon frequency.
          - `expires_at` string, date-time — Coupon expiration date. Only applies to the `custom` coupon frequency. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          - `apply_at` string, date-time — Coupon first application date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          - `product_ids` string[] — Product IDs to which the coupon will be applied.
        - object
          - `type` 'amount', required
          - `name` string — Coupon name.
          - `discount_amount` number, required — Coupon discount amount. Expressed in currency's smallest unit.
          - `repeat` 'once' | 'forever' | 'custom' | 'duration', nullable — Coupon frequency. Required for inline coupons. Optional when an existing coupon `id` is provided: if omitted, defaults to the catalog coupon's repeat value. - `once`: Will apply the coupon only to the first one invoice. - `forever`: Will apply the coupon to all invoices. - `custom`: Will apply to coupon until a specified expiration date. - `duration`: Will apply the coupon for a specific duration (e.g., 3 months).
          - `duration_period` 'days' | 'weeks' | 'months' | 'years' — Period of time for which the coupon will be applied. Only applies to the `duration` coupon frequency.
          - `duration_count` number — Number of periods for which the coupon will be applied. Only applies to the `duration` coupon frequency.
          - `expires_at` string, date-time — Coupon expiration date. Only applies to the `custom` coupon frequency. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          - `apply_at` string, date-time — Coupon first application date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          - `product_ids` string[] — Product IDs to which the coupon will be applied.
        - object
          - `type` 'percent', required
          - `name` string — Coupon name.
          - `discount_percent` number, required — Coupon discount percentage.
          - `repeat` 'once' | 'forever' | 'custom' | 'duration', nullable — Coupon frequency. Required for inline coupons. Optional when an existing coupon `id` is provided: if omitted, defaults to the catalog coupon's repeat value. - `once`: Will apply the coupon only to the first one invoice. - `forever`: Will apply the coupon to all invoices. - `custom`: Will apply to coupon until a specified expiration date. - `duration`: Will apply the coupon for a specific duration (e.g., 3 months).
          - `duration_period` 'days' | 'weeks' | 'months' | 'years' — Period of time for which the coupon will be applied. Only applies to the `duration` coupon frequency.
          - `duration_count` number — Number of periods for which the coupon will be applied. Only applies to the `duration` coupon frequency.
          - `expires_at` string, date-time — Coupon expiration date. Only applies to the `custom` coupon frequency. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          - `apply_at` string, date-time — Coupon first application date. UTC date time string in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          - `product_ids` string[] — Product IDs to which the coupon will be applied.

## Response `201`

- object
  - `id` string, required

---

[API](https://skmtc.dev/hyperline/apis/hyperline-api.md) · [All operations](https://skmtc.dev/hyperline/apis/hyperline-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/hyperline/hyperline-api/revisions/19fa5f22e39b/schema)
