{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/maxio/json-schema/maxio-subscription-schema.json",
  "title": "Subscription",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/maxio-advanced-billing-openapi.yml#/components/schemas/Subscription",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "The subscription unique id within Chargify.",
      "contentEncoding": "int32"
    },
    "state": {
      "allOf": [
        {
          "$ref": "#/$defs/SubscriptionState"
        },
        {
          "description": "The state of a subscription.\n* **Live States**\n    * `active` - A normal, active subscription. It is not in a trial and is paid and up to date.\n    * `assessing` - An internal (transient) state that indicates a subscription is in the middle of periodic assessment. Do not base any access decisions in your app on this state, as it may not always be exposed.\n    * `pending` - An internal (transient) state that indicates a subscription is in the creation process. Do not base any access decisions in your app on this state, as it may not always be exposed.\n    * `trialing` - A subscription in trialing state has a valid trial subscription. This type of subscription may transition to active once payment is received when the trial has ended. Otherwise, it may go to a Problem or End of Life state.\n    * `paused` - An internal state that indicates that your account with Advanced Billing is in arrears.\n* **Problem States**\n    * `past_due` - Indicates that the most recent payment has failed, and payment is past due for this subscription. If you have enabled our automated dunning, this subscription will be in the dunning process (additional status and callbacks from the dunning process will be available in the future). If you are handling dunning and payment updates yourself, you will want to use this state to initiate a payment update from your customers.\n    * `soft_failure` - Indicates that normal assessment/processing of the subscription has failed for a reason that cannot be fixed by the Customer. For example, a Soft Fail may result from a timeout at the gateway or incorrect credentials on your part. The subscriptions should be retried automatically. An interface is being built for you to review problems resulting from these events to take manual action when needed.\n    * `unpaid` - Indicates an unpaid subscription. A subscription is marked unpaid if the retry period expires and you have configured your [Dunning](https://docs.maxio.com/billing/subscriptions/dunning/overview/understanding-how-dunning-works) settings to have a Final Action of `mark the subscription unpaid`.\n* **End of Life States**\n    * `canceled` - Indicates a canceled subscription. This may happen at your request (via the API or the web interface) or due to the expiration of the [Dunning](https://docs.maxio.com/billing/subscriptions/dunning/overview/understanding-how-dunning-works) process without payment. See the [Reactivation](https://docs.maxio.com/billing/subscriptions/management/state-management/understand-reactivation-and-resume-scenarios) documentation for info on how to restart a canceled subscription.\n    While a subscription is canceled, its period will not advance, it will not accrue any new charges, and Advanced Billing will not attempt to collect the overdue balance.\n    * `expired` - Indicates a subscription that has expired due to running its normal life cycle. Some products may be configured to have an expiration period. An expired subscription then is one that stayed active until it fulfilled its full period.\n    * `failed_to_create` - Indicates that signup has failed. (You may see this state in a signup_failure webhook.)\n    * `on_hold` - Indicates that a subscription’s billing has been temporarily stopped. While it is expected that the subscription will resume and return to active status, this is still treated as an “End of Life” state because the customer is not paying for services during this time.\n    * `suspended` - Indicates that a prepaid subscription has used up all their prepayment balance. If a prepayment is applied, it will return to an active state.\n    * `trial_ended` - A subscription in a trial_ended state is a subscription that completed a no-obligation trial and did not have a card on file at the expiration of the trial period. See [Product Pricing – No Obligation Trials](https://docs.maxio.com/billing/catalog/plans/creating-plans) for more details.\n\nSee [Subscription States](https://docs.maxio.com/billing/subscriptions/management/subscription-states/understand-subscription-states) for more info about subscription states and state transitions."
        }
      ]
    },
    "balance_in_cents": {
      "type": "integer",
      "description": "Gives the current outstanding subscription balance in the number of cents.",
      "contentEncoding": "int64"
    },
    "total_revenue_in_cents": {
      "type": "integer",
      "description": "Gives the total revenue from the subscription in the number of cents.",
      "contentEncoding": "int64"
    },
    "product_price_in_cents": {
      "type": "integer",
      "description": "(Added Nov 5 2013) The recurring amount of the product (and version), currently subscribed. NOTE: this may differ from the current price of the product, if you’ve changed the price of the product but haven’t moved this subscription to a newer version.",
      "contentEncoding": "int64"
    },
    "product_version_number": {
      "type": "integer",
      "description": "The version of the product for the subscription. Note that this is a deprecated field kept for backwards-compatibility.",
      "contentEncoding": "int32"
    },
    "current_period_ends_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "Timestamp relating to the end of the current (recurring) period (i.e., when the next regularly scheduled attempted charge will occur)",
      "contentEncoding": "date-time"
    },
    "next_assessment_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "Timestamp that indicates when capture of payment will be tried or retried. This value will usually track the current_period_ends_at, but will diverge if a renewal payment fails and must be retried. In that case, the current_period_ends_at will advance to the end of the next period (time doesn’t stop because a payment was missed) but the next_assessment_at will be scheduled for the auto-retry time (e.g., 24 hours in the future, in some cases).",
      "contentEncoding": "date-time"
    },
    "trial_started_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "Timestamp for when the trial period (if any) began",
      "contentEncoding": "date-time"
    },
    "trial_ended_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "Timestamp for when the trial period (if any) ended",
      "contentEncoding": "date-time"
    },
    "activated_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "Timestamp for when the subscription began (i.e., when it came out of trial, or when it began in the case of no trial)",
      "contentEncoding": "date-time"
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "Timestamp giving the expiration date of this subscription (if any)",
      "contentEncoding": "date-time"
    },
    "created_at": {
      "type": "string",
      "description": "The creation date for this subscription",
      "contentEncoding": "date-time"
    },
    "updated_at": {
      "type": "string",
      "description": "The date of last update for this subscription",
      "contentEncoding": "date-time"
    },
    "cancellation_message": {
      "type": [
        "string",
        "null"
      ],
      "description": "Seller-provided reason for, or note about, the cancellation."
    },
    "cancellation_method": {
      "allOf": [
        {
          "oneOf": [
            {},
            {
              "$ref": "#/$defs/CancellationMethod"
            }
          ]
        },
        {
          "description": "The process used to cancel the subscription, if the subscription has been canceled. It is nil if the subscription's state is not canceled."
        }
      ]
    },
    "cancel_at_end_of_period": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Whether or not the subscription will (or has) canceled at the end of the period."
    },
    "canceled_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "The timestamp of the most recent cancellation",
      "contentEncoding": "date-time"
    },
    "current_period_started_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "Timestamp relating to the start of the current (recurring) period",
      "contentEncoding": "date-time"
    },
    "previous_state": {
      "allOf": [
        {
          "$ref": "#/$defs/SubscriptionState"
        },
        {
          "description": "Only valid for webhook payloads The previous state for webhooks that have indicated a change in state. For normal API calls, this will always be the same as the state (current state)."
        }
      ]
    },
    "signup_payment_id": {
      "type": "integer",
      "description": "The ID of the transaction that generated the revenue",
      "contentEncoding": "int32"
    },
    "signup_revenue": {
      "type": "string",
      "description": "The revenue, formatted as a string of decimal separated dollars and cents, from the subscription signup ($50.00 would be formatted as 50.00)"
    },
    "delayed_cancel_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "Timestamp for when the subscription is currently set to cancel.",
      "contentEncoding": "date-time"
    },
    "coupon_code": {
      "type": [
        "string",
        "null"
      ],
      "description": "(deprecated) The coupon code of the single coupon currently applied to the subscription. See coupon_codes instead as subscriptions can now have more than one coupon.",
      "deprecated": true
    },
    "snap_day": {
      "type": [
        "string",
        "null"
      ],
      "description": "A day of month that subscription will be processed on. Can be 1 up to 28 or 'end'."
    },
    "payment_collection_method": {
      "allOf": [
        {
          "$ref": "#/$defs/CollectionMethod"
        },
        {
          "description": "The type of payment collection to be used in the subscription. For legacy Statements Architecture valid options are - `invoice`, `automatic`. For current Relationship Invoicing Architecture valid options are - `remittance`, `automatic`, `prepaid`."
        }
      ]
    },
    "customer": {
      "$ref": "#/$defs/Customer"
    },
    "product": {
      "$ref": "#/$defs/Product"
    },
    "credit_card": {
      "allOf": [
        {
          "$ref": "#/$defs/CreditCardPaymentProfile"
        },
        {}
      ]
    },
    "group": {
      "allOf": [
        {
          "oneOf": [
            {},
            {
              "$ref": "#/$defs/NestedSubscriptionGroup"
            }
          ]
        },
        {}
      ]
    },
    "bank_account": {
      "$ref": "#/$defs/BankAccountPaymentProfile"
    },
    "payment_type": {
      "type": [
        "string",
        "null"
      ],
      "description": "The payment profile type for the active profile on file."
    },
    "referral_code": {
      "type": [
        "string",
        "null"
      ],
      "description": "The subscription's unique code that can be given to referrals."
    },
    "next_product_id": {
      "type": [
        "integer",
        "null"
      ],
      "description": "If a delayed product change is scheduled, the ID of the product that the subscription will be changed to at the next renewal.",
      "contentEncoding": "int32"
    },
    "next_product_handle": {
      "type": [
        "string",
        "null"
      ],
      "description": "If a delayed product change is scheduled, the handle of the product that the subscription will be changed to at the next renewal."
    },
    "coupon_use_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "(deprecated) How many times the subscription's single coupon has been used. This field has no replacement for multiple coupons.",
      "contentEncoding": "int32",
      "deprecated": true
    },
    "coupon_uses_allowed": {
      "type": [
        "integer",
        "null"
      ],
      "description": "(deprecated) How many times the subscription's single coupon may be used. This field has no replacement for multiple coupons.",
      "contentEncoding": "int32",
      "deprecated": true
    },
    "reason_code": {
      "type": [
        "string",
        "null"
      ],
      "description": "The churn reason code associated to a canceled subscription."
    },
    "automatically_resume_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "The date the subscription is scheduled to automatically resume from the on_hold state.",
      "contentEncoding": "date-time"
    },
    "coupon_codes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "An array for all the coupons attached to the subscription."
    },
    "offer_id": {
      "type": [
        "integer",
        "null"
      ],
      "description": "The ID of the offer associated with the subscription.",
      "contentEncoding": "int32"
    },
    "payer_id": {
      "type": [
        "integer",
        "null"
      ],
      "description": "On Relationship Invoicing, the ID of the individual paying for the subscription. Defaults to the Customer ID unless the 'Customer Hierarchies & WhoPays' feature is enabled.",
      "contentEncoding": "int32"
    },
    "current_billing_amount_in_cents": {
      "type": "integer",
      "description": "The balance in cents plus the estimated renewal amount in cents. Returned ONLY for the readSubscription operation as it's a compute intensive operation.",
      "contentEncoding": "int64"
    },
    "product_price_point_id": {
      "type": "integer",
      "description": "The product price point currently subscribed to.",
      "contentEncoding": "int32"
    },
    "product_price_point_type": {
      "allOf": [
        {
          "$ref": "#/$defs/PricePointType"
        },
        {
          "description": "Price point type. We expose the following types:\n1. **default**: a price point that is marked as a default price for a certain product.\n2. **custom**: a custom price point.\n3. **catalog**: a price point that is **not** marked as a default price for a certain product and is **not** a custom one."
        }
      ]
    },
    "next_product_price_point_id": {
      "type": [
        "integer",
        "null"
      ],
      "description": "If a delayed product change is scheduled, the ID of the product price point that the subscription will be changed to at the next renewal.",
      "contentEncoding": "int32"
    },
    "net_terms": {
      "type": [
        "integer",
        "null"
      ],
      "description": "On Relationship Invoicing, the number of days before a renewal invoice is due.",
      "contentEncoding": "int32"
    },
    "stored_credential_transaction_id": {
      "type": [
        "integer",
        "null"
      ],
      "description": "For European sites subject to PSD2 and using 3D Secure, this can be used to reference a previous transaction for the customer. This will ensure the card will be charged successfully at renewal.",
      "contentEncoding": "int32"
    },
    "reference": {
      "type": [
        "string",
        "null"
      ],
      "description": "The reference value (provided by your app) for the subscription itself."
    },
    "on_hold_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "The timestamp of the most recent on hold action.",
      "contentEncoding": "date-time"
    },
    "prepaid_dunning": {
      "type": "boolean",
      "description": "Boolean representing whether the subscription is prepaid and currently in dunning. Only returned for Relationship Invoicing sites with the feature enabled."
    },
    "coupons": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/SubscriptionIncludedCoupon"
      },
      "description": "Additional coupon data. To use this data you also have to include the following param in the request: `include[]=coupons`.\nOnly in Read Subscription Endpoint."
    },
    "dunning_communication_delay_enabled": {
      "type": "boolean",
      "description": "Enable Communication Delay feature, making sure no communication (email or SMS) is sent to the Customer between 9PM and 8AM in time zone set by the `dunning_communication_delay_time_zone` attribute."
    },
    "dunning_communication_delay_time_zone": {
      "type": [
        "string",
        "null"
      ],
      "description": "Time zone for the Dunning Communication Delay feature."
    },
    "receives_invoice_emails": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "locale": {
      "type": [
        "string",
        "null"
      ]
    },
    "currency": {
      "type": "string"
    },
    "scheduled_cancellation_at": {
      "type": [
        "string",
        "null"
      ],
      "contentEncoding": "date-time"
    },
    "credit_balance_in_cents": {
      "type": "integer",
      "contentEncoding": "int64"
    },
    "prepayment_balance_in_cents": {
      "type": "integer",
      "contentEncoding": "int64"
    },
    "prepaid_configuration": {
      "allOf": [
        {
          "oneOf": [
            {},
            {
              "$ref": "#/$defs/PrepaidConfiguration"
            }
          ]
        },
        {}
      ]
    },
    "self_service_page_token": {
      "type": "string",
      "description": "Returned only for list/read Subscription operation when `include[]=self_service_page_token` parameter is provided."
    }
  },
  "$defs": {
    "BankAccountHolderType": {
      "title": "BankAccountHolderType",
      "enum": [
        "personal",
        "business"
      ],
      "type": "string",
      "description": "Defaults to personal"
    },
    "BankAccountPaymentProfile": {
      "title": "BankAccountPaymentProfile",
      "required": [
        "payment_type"
      ],
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "description": "The Chargify-assigned ID of the stored bank account. This value can be used as an input to payment_profile_id when creating a subscription, in order to re-use a stored payment profile for the same customer.",
          "contentEncoding": "int32"
        },
        "first_name": {
          "type": "string",
          "description": "The first name of the bank account holder"
        },
        "last_name": {
          "type": "string",
          "description": "The last name of the bank account holder"
        },
        "customer_id": {
          "type": "integer",
          "description": "The Chargify-assigned ID for the customer record to which the bank account belongs",
          "contentEncoding": "int32"
        },
        "current_vault": {
          "allOf": [
            {
              "$ref": "#/$defs/BankAccountVault"
            },
            {
              "description": "The vault that stores the payment profile with the provided vault_token. Use `bogus` for testing."
            }
          ]
        },
        "vault_token": {
          "type": "string",
          "description": "The \"token\" provided by your vault storage for an already stored payment profile"
        },
        "billing_address": {
          "type": [
            "string",
            "null"
          ],
          "description": "The current billing street address for the bank account"
        },
        "billing_city": {
          "type": [
            "string",
            "null"
          ],
          "description": "The current billing address city for the bank account"
        },
        "billing_state": {
          "type": [
            "string",
            "null"
          ],
          "description": "The current billing address state for the bank account"
        },
        "billing_zip": {
          "type": [
            "string",
            "null"
          ],
          "description": "The current billing address zip code for the bank account"
        },
        "billing_country": {
          "type": [
            "string",
            "null"
          ],
          "description": "The current billing address country for the bank account"
        },
        "customer_vault_token": {
          "type": [
            "string",
            "null"
          ],
          "description": "(only for Authorize.Net CIM storage): the customerProfileId for the owner of the customerPaymentProfileId provided as the vault_token."
        },
        "billing_address_2": {
          "type": [
            "string",
            "null"
          ],
          "description": "The current billing street address, second line, for the bank account"
        },
        "bank_name": {
          "type": "string",
          "description": "The bank where the account resides"
        },
        "masked_bank_routing_number": {
          "type": [
            "string",
            "null"
          ],
          "description": "A string representation of the stored bank routing number with all but the last 4 digits marked with X's (i.e. 'XXXXXXX1111'). payment_type will be bank_account."
        },
        "masked_bank_account_number": {
          "type": [
            "string",
            "null"
          ],
          "description": "A string representation of the stored bank account number with all but the last 4 digits marked with X's (i.e. 'XXXXXXX1111')."
        },
        "bank_account_type": {
          "allOf": [
            {
              "$ref": "#/$defs/BankAccountType"
            },
            {
              "description": "Defaults to checking"
            }
          ]
        },
        "bank_account_holder_type": {
          "allOf": [
            {
              "$ref": "#/$defs/BankAccountHolderType"
            },
            {
              "description": "Defaults to personal"
            }
          ]
        },
        "payment_type": {
          "allOf": [
            {
              "$ref": "#/$defs/PaymentType"
            },
            {}
          ]
        },
        "verified": {
          "type": "boolean",
          "description": "Denotes whether a bank account has been verified by providing the amounts of two small deposits made into the account.",
          "default": false
        },
        "site_gateway_setting_id": {
          "type": [
            "integer",
            "null"
          ],
          "contentEncoding": "int32"
        },
        "gateway_handle": {
          "type": [
            "string",
            "null"
          ]
        },
        "created_at": {
          "type": "string",
          "description": "A timestamp indicating when this payment profile was created",
          "contentEncoding": "date-time"
        },
        "updated_at": {
          "type": "string",
          "description": "A timestamp indicating when this payment profile was last updated",
          "contentEncoding": "date-time"
        }
      }
    },
    "BankAccountType": {
      "title": "BankAccountType",
      "enum": [
        "checking",
        "savings"
      ],
      "type": "string",
      "description": "Defaults to checking"
    },
    "BankAccountVault": {
      "title": "BankAccountVault",
      "enum": [
        "authorizenet",
        "blue_snap",
        "bogus",
        "forte",
        "gocardless",
        "maxio_payments",
        "maxp",
        "stripe_connect"
      ],
      "type": "string",
      "description": "The vault that stores the payment profile with the provided vault_token. Use `bogus` for testing."
    },
    "CancellationMethod": {
      "title": "CancellationMethod",
      "enum": [
        "merchant_ui",
        "merchant_api",
        "dunning",
        "billing_portal",
        "unknown",
        "imported"
      ],
      "type": "string",
      "description": "The process used to cancel the subscription, if the subscription has been canceled. It is nil if the subscription's state is not canceled."
    },
    "CardType": {
      "title": "CardType",
      "enum": [
        "visa",
        "master",
        "elo",
        "cabal",
        "alelo",
        "discover",
        "american_express",
        "naranja",
        "diners_club",
        "jcb",
        "dankort",
        "maestro",
        "maestro_no_luhn",
        "forbrugsforeningen",
        "sodexo",
        "alia",
        "vr",
        "unionpay",
        "carnet",
        "cartes_bancaires",
        "olimpica",
        "creditel",
        "confiable",
        "synchrony",
        "routex",
        "mada",
        "bp_plus",
        "passcard",
        "edenred",
        "anda",
        "tarjeta-d",
        "hipercard",
        "bogus",
        "switch",
        "solo",
        "laser"
      ],
      "type": "string",
      "description": "The type of card used."
    },
    "CollectionMethod": {
      "title": "CollectionMethod",
      "enum": [
        "automatic",
        "remittance",
        "prepaid",
        "invoice"
      ],
      "type": "string",
      "description": "The type of payment collection to be used in the subscription. For legacy Statements Architecture valid options are - `invoice`, `automatic`. For current Relationship Invoicing Architecture valid options are - `remittance`, `automatic`, `prepaid`."
    },
    "CreditCardPaymentProfile": {
      "title": "CreditCardPaymentProfile",
      "required": [
        "payment_type"
      ],
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "description": "The Chargify-assigned ID of the stored card. This value can be used as an input to payment_profile_id when creating a subscription, in order to re-use a stored payment profile for the same customer.",
          "contentEncoding": "int32"
        },
        "first_name": {
          "type": "string",
          "description": "The first name of the card holder."
        },
        "last_name": {
          "type": "string",
          "description": "The last name of the card holder."
        },
        "masked_card_number": {
          "type": "string",
          "description": "A string representation of the credit card number with all but the last 4 digits masked with X’s (e.g., ‘XXXX-XXXX-XXXX-1234’)."
        },
        "card_type": {
          "allOf": [
            {
              "oneOf": [
                {},
                {
                  "$ref": "#/$defs/CardType"
                }
              ]
            },
            {
              "description": "The type of card used."
            }
          ]
        },
        "expiration_month": {
          "type": "integer",
          "description": "An integer representing the expiration month of the card(1 – 12).",
          "contentEncoding": "int32"
        },
        "expiration_year": {
          "type": "integer",
          "description": "An integer representing the 4-digit expiration year of the card(e.g., ‘2012’).",
          "contentEncoding": "int32"
        },
        "customer_id": {
          "type": "integer",
          "description": "The Chargify-assigned id for the customer record to which the card belongs.",
          "contentEncoding": "int32"
        },
        "current_vault": {
          "allOf": [
            {
              "$ref": "#/$defs/CreditCardVault"
            },
            {
              "description": "The vault that stores the payment profile with the provided `vault_token`. Use `bogus` for testing."
            }
          ]
        },
        "vault_token": {
          "type": [
            "string",
            "null"
          ],
          "description": "The “token” provided by your vault storage for an already stored payment profile."
        },
        "billing_address": {
          "type": [
            "string",
            "null"
          ],
          "description": "The current billing street address for the card."
        },
        "billing_city": {
          "type": [
            "string",
            "null"
          ],
          "description": "The current billing address city for the card."
        },
        "billing_state": {
          "type": [
            "string",
            "null"
          ],
          "description": "The current billing address state for the card."
        },
        "billing_zip": {
          "type": [
            "string",
            "null"
          ],
          "description": "The current billing address zip code for the card."
        },
        "billing_country": {
          "type": [
            "string",
            "null"
          ],
          "description": "The current billing address country for the card."
        },
        "customer_vault_token": {
          "type": [
            "string",
            "null"
          ],
          "description": "(only for Authorize.Net CIM storage): the customerProfileId for the owner of the customerPaymentProfileId provided as the vault_token."
        },
        "billing_address_2": {
          "type": [
            "string",
            "null"
          ],
          "description": "The current billing street address, second line, for the card."
        },
        "payment_type": {
          "allOf": [
            {
              "$ref": "#/$defs/PaymentType"
            },
            {}
          ]
        },
        "disabled": {
          "type": "boolean"
        },
        "chargify_token": {
          "type": "string",
          "description": "Token received after sending billing information using Maxio.js (formerly Chargify.js). This token will only be received if passed as a sole attribute of credit_card_attributes (e.g., tok_9g6hw85pnpt6knmskpwp4ttt)."
        },
        "site_gateway_setting_id": {
          "type": [
            "integer",
            "null"
          ],
          "contentEncoding": "int32"
        },
        "gateway_handle": {
          "type": [
            "string",
            "null"
          ],
          "description": "An identifier of connected gateway."
        },
        "created_at": {
          "type": "string",
          "description": "A timestamp indicating when this payment profile was created",
          "contentEncoding": "date-time"
        },
        "updated_at": {
          "type": "string",
          "description": "A timestamp indicating when this payment profile was last updated",
          "contentEncoding": "date-time"
        }
      }
    },
    "CreditCardVault": {
      "title": "CreditCardVault",
      "enum": [
        "adyen",
        "authorizenet",
        "beanstream",
        "blue_snap",
        "bogus",
        "braintree1",
        "braintree_blue",
        "checkout",
        "cybersource",
        "elavon",
        "eway",
        "eway_rapid",
        "eway_rapid_std",
        "firstdata",
        "forte",
        "litle",
        "maxio_payments",
        "maxp",
        "moduslink",
        "moneris",
        "nmi",
        "orbital",
        "payment_express",
        "paymill",
        "paypal",
        "paypal_complete",
        "pin",
        "square",
        "stripe",
        "stripe_connect",
        "trust_commerce",
        "unipaas",
        "wirecard"
      ],
      "type": "string",
      "description": "The vault that stores the payment profile with the provided `vault_token`. Use `bogus` for testing."
    },
    "Customer": {
      "title": "Customer",
      "type": "object",
      "properties": {
        "first_name": {
          "type": "string",
          "description": "The first name of the customer"
        },
        "last_name": {
          "type": "string",
          "description": "The last name of the customer"
        },
        "email": {
          "type": "string",
          "description": "The email address of the customer"
        },
        "cc_emails": {
          "type": [
            "string",
            "null"
          ],
          "description": "“A comma-separated list of emails that should be cc’d on all customer communications (e.g., “joe@example.com, sue@example.com”)”"
        },
        "organization": {
          "type": [
            "string",
            "null"
          ],
          "description": "The organization of the customer. If no value, `null` or empty string is provided, `organization` will be populated with the customer's first and last name, separated with a space."
        },
        "reference": {
          "type": [
            "string",
            "null"
          ],
          "description": "The unique identifier used within your own application for this customer"
        },
        "id": {
          "type": "integer",
          "description": "The customer ID in Chargify",
          "contentEncoding": "int32"
        },
        "created_at": {
          "type": "string",
          "description": "The timestamp in which the customer object was created in Chargify",
          "contentEncoding": "date-time"
        },
        "updated_at": {
          "type": "string",
          "description": "The timestamp in which the customer object was last edited",
          "contentEncoding": "date-time"
        },
        "address": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer’s shipping street address (e.g., “123 Main St.”)"
        },
        "address_2": {
          "type": [
            "string",
            "null"
          ],
          "description": "Second line of the customer’s shipping address e.g., “Apt. 100”"
        },
        "city": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer’s shipping address city (e.g., “Boston”)"
        },
        "state": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer’s shipping address state (e.g., “MA”)"
        },
        "state_name": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer's full name of state"
        },
        "zip": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer’s shipping address zip code (e.g., “12345”)"
        },
        "country": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer shipping address country"
        },
        "country_name": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer's full name of country"
        },
        "phone": {
          "type": [
            "string",
            "null"
          ],
          "description": "The phone number of the customer"
        },
        "verified": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Is the customer verified to use ACH as a payment method."
        },
        "portal_customer_created_at": {
          "type": [
            "string",
            "null"
          ],
          "description": "The timestamp of when the Billing Portal entry was created at for the customer",
          "contentEncoding": "date-time"
        },
        "portal_invite_last_sent_at": {
          "type": [
            "string",
            "null"
          ],
          "description": "The timestamp of when the Billing Portal invite was last sent at",
          "contentEncoding": "date-time"
        },
        "portal_invite_last_accepted_at": {
          "type": [
            "string",
            "null"
          ],
          "description": "The timestamp of when the Billing Portal invite was last accepted",
          "contentEncoding": "date-time"
        },
        "tax_exempt": {
          "type": "boolean",
          "description": "The tax exempt status for the customer. Acceptable values are true or 1 for true and false or 0 for false."
        },
        "surcharging": {
          "type": "boolean",
          "description": "Whether surcharging is enabled for the customer. Only included on sites where surcharging control is enabled."
        },
        "vat_number": {
          "type": [
            "string",
            "null"
          ],
          "description": "The VAT business identification number for the customer. This number is used to determine VAT tax opt out rules. It is not validated when added or updated on a customer record. Instead, it is validated via VIES before calculating taxes. Only valid business identification numbers will allow for VAT opt out. When the customer holds an entity identifier, this field returns that identifier's value, whatever its kind."
        },
        "vat_country": {
          "type": [
            "string",
            "null"
          ],
          "description": "The two-letter ISO 3166-1 country code that qualifies the customer's VAT number. Set to `null` when an identifier is stored through `entity_identifier_kind` for a kind that is not tied to a VAT country, meaning `company_reg`, `gln`, `duns`, or `lei`."
        },
        "entity_identifier_kind": {
          "allOf": [
            {
              "oneOf": [
                {},
                {
                  "$ref": "#/$defs/EntityIdentifierKind"
                }
              ]
            },
            {
              "description": "The kind of tax or business identifier held by the customer. Returned as `null` when the customer has no entity identifier, including a legacy customer whose `vat_number` predates entity identifiers."
            }
          ]
        },
        "entity_identifier_value": {
          "type": [
            "string",
            "null"
          ],
          "description": "The value of the customer's tax or business identifier. Returned as `null` when the customer has no entity identifier."
        },
        "parent_id": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The parent ID in Chargify if applicable. Parent is another Customer object.",
          "contentEncoding": "int32"
        },
        "locale": {
          "type": [
            "string",
            "null"
          ],
          "description": "The locale for the customer to identify language-region"
        },
        "default_subscription_group_uid": {
          "type": [
            "string",
            "null"
          ]
        },
        "salesforce_id": {
          "type": [
            "string",
            "null"
          ],
          "description": "The Salesforce ID for the customer"
        },
        "tax_exempt_reason": {
          "type": [
            "string",
            "null"
          ],
          "description": "The Tax Exemption Reason Code for the customer"
        },
        "default_auto_renewal_profile_id": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The default auto-renewal profile ID for the customer",
          "contentEncoding": "int32"
        },
        "maxioid": {
          "type": [
            "string",
            "null"
          ],
          "description": "The Maxio-generated unique identifier for the customer."
        },
        "branding_theme_id": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The ID of the Branding Theme assigned to this customer as the customer's default Branding Theme. This customer-level Branding Theme is used when a subscription does not have its own subscription-level Branding Theme.  Available only when Branding Themes are enabled for the site.",
          "contentEncoding": "int32"
        }
      }
    },
    "EntitlementPeriodicityUnit": {
      "title": "EntitlementPeriodicityUnit",
      "enum": [
        "hour",
        "day",
        "week",
        "month",
        "year"
      ],
      "type": "string",
      "description": "The recurring window over which a `usage_limit` feature's allowance resets."
    },
    "EntityIdentifierKind": {
      "title": "EntityIdentifierKind",
      "enum": [
        "vat_eu",
        "national_tax",
        "company_reg",
        "gln",
        "duns",
        "lei"
      ],
      "type": "string",
      "description": "The kind of tax or business identifier held by the customer:\n- `vat_eu`: an EU VAT number. Requires `vat_country` to be an EU member state code or `GB`.\n- `national_tax`: a national tax ID registered outside the EU. Requires `vat_country` to be one of `AL`, `AM`, `AR`, `AU`, `BR`, `CA`, `CH`, `DZ`, `IN`, `MX`, `NO`, `NZ`, or `ZA`.\n- `company_reg`: a company registration number, such as a French SIREN. No `vat_country` is required.\n- `gln`: a Global Location Number. The value must be 13 digits.\n- `duns`: a D-U-N-S Number. The value must be 9 digits.\n- `lei`: a Legal Entity Identifier. The value must be 20 characters: 18 letters or digits followed by 2 digits.\n\nA customer holds one identifier at a time. Saving an identifier of a different kind replaces the existing one."
    },
    "ExpirationIntervalUnit": {
      "title": "ExpirationIntervalUnit",
      "enum": [
        "day",
        "month",
        "never"
      ],
      "type": "string"
    },
    "FeatureCatalogItem": {
      "title": "FeatureCatalogItem",
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "contentEncoding": "int32"
        },
        "feature_template_id": {
          "type": "integer",
          "description": "The id of the feature template this item was created from.",
          "contentEncoding": "int32"
        },
        "feature_key": {
          "type": "string",
          "description": "The `key` of the parent feature template."
        },
        "feature_name": {
          "type": "string",
          "description": "The `name` of the parent feature template."
        },
        "feature_kind": {
          "allOf": [
            {
              "$ref": "#/$defs/FeatureKind"
            },
            {
              "description": "The behavior of a feature:\n- `access_right`: a boolean entitlement. A subscriber either has access or does not.\n- `usage_limit`: a quantified allowance measured over a recurring period (for example, \"10,000 API calls per month\").\n- `service_right`: a free-form value (text, boolean, or number) that isn't a simple access flag or a metered limit."
            }
          ]
        },
        "value": {
          "type": "string",
          "description": "The value granted by this feature catalog item. Interpreted according to `feature_kind`: `\"true\"`/`\"false\"` for `access_right`, a numeric string for `usage_limit`, or any string for `service_right` (shaped by the feature template's `value_type`)."
        },
        "periodicity_interval": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Set when `feature_kind` is `usage_limit`; `null` otherwise.",
          "contentEncoding": "int32"
        },
        "periodicity_unit": {
          "allOf": [
            {
              "oneOf": [
                {},
                {
                  "$ref": "#/$defs/EntitlementPeriodicityUnit"
                }
              ]
            },
            {
              "description": "Set when `feature_kind` is `usage_limit`; `null` otherwise."
            }
          ]
        },
        "price_point_type": {
          "allOf": [
            {
              "oneOf": [
                {},
                {
                  "$ref": "#/$defs/FeatureOwnerPricePointType"
                }
              ]
            },
            {
              "description": "`null` when this feature catalog item applies to every price point of its owning product/component. Set when the feature catalog item is an override for one specific price point."
            }
          ]
        },
        "price_point_id": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Set together with `price_point_type` for price-point-specific overrides.",
          "contentEncoding": "int32"
        },
        "archived_at": {
          "type": [
            "string",
            "null"
          ],
          "contentEncoding": "date-time"
        },
        "created_at": {
          "type": "string",
          "contentEncoding": "date-time"
        },
        "updated_at": {
          "type": "string",
          "contentEncoding": "date-time"
        }
      },
      "description": "A feature template attached to a specific product or component (or one of their price points), with a concrete value. When a subscriber signs up for or is assigned this product/component, the feature catalog item is provisioned as an entitlement on their subscription."
    },
    "FeatureKind": {
      "title": "FeatureKind",
      "enum": [
        "access_right",
        "usage_limit",
        "service_right"
      ],
      "type": "string",
      "description": "The behavior of a feature:\n- `access_right`: a boolean entitlement. A subscriber either has access or does not.\n- `usage_limit`: a quantified allowance measured over a recurring period (for example, \"10,000 API calls per month\").\n- `service_right`: a free-form value (text, boolean, or number) that isn't a simple access flag or a metered limit."
    },
    "FeatureOwnerPricePointType": {
      "title": "FeatureOwnerPricePointType",
      "enum": [
        "ProductPricePoint",
        "PricePoint"
      ],
      "type": "string",
      "description": "Identifies which kind of price point a feature catalog item override applies to: `ProductPricePoint` for a product price point, `PricePoint` for a component price point. Only relevant when `price_point_id` is set."
    },
    "IntervalUnit": {
      "title": "IntervalUnit",
      "enum": [
        "day",
        "month"
      ],
      "type": "string"
    },
    "NestedSubscriptionGroup": {
      "title": "NestedSubscriptionGroup",
      "type": "object",
      "properties": {
        "uid": {
          "type": "string",
          "description": "The UID for the group"
        },
        "scheme": {
          "type": "integer",
          "description": "Whether the group is configured to rely on a primary subscription for billing. At this time, it will always be 1.",
          "contentEncoding": "int32"
        },
        "primary_subscription_id": {
          "type": "integer",
          "description": "The subscription ID of the primary within the group. Applicable to scheme 1.",
          "contentEncoding": "int32"
        },
        "primary": {
          "type": "boolean",
          "description": "A boolean indicating whether the subscription is the primary in the group. Applicable to scheme 1."
        }
      }
    },
    "PaymentType": {
      "title": "PaymentType",
      "enum": [
        "credit_card",
        "bank_account",
        "paypal_account",
        "apple_pay"
      ],
      "type": "string"
    },
    "PrepaidConfiguration": {
      "title": "PrepaidConfiguration",
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "contentEncoding": "int32"
        },
        "initial_funding_amount_in_cents": {
          "type": "integer",
          "contentEncoding": "int64"
        },
        "replenish_to_amount_in_cents": {
          "type": "integer",
          "contentEncoding": "int64"
        },
        "auto_replenish": {
          "type": "boolean"
        },
        "replenish_threshold_amount_in_cents": {
          "type": "integer",
          "contentEncoding": "int64"
        }
      }
    },
    "PricePointType": {
      "title": "PricePointType",
      "enum": [
        "catalog",
        "default",
        "custom"
      ],
      "type": "string",
      "description": "Price point type. We expose the following types:\n1. **default**: a price point that is marked as a default price for a certain product.\n2. **custom**: a custom price point.\n3. **catalog**: a price point that is **not** marked as a default price for a certain product and is **not** a custom one."
    },
    "Product": {
      "title": "Product",
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "contentEncoding": "int32"
        },
        "name": {
          "type": "string",
          "description": "The product name"
        },
        "handle": {
          "type": [
            "string",
            "null"
          ],
          "description": "The product API handle"
        },
        "description": {
          "type": [
            "string",
            "null"
          ],
          "description": "The product description"
        },
        "accounting_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "E.g., Internal ID or SKU Number"
        },
        "request_credit_card": {
          "type": "boolean",
          "description": "Deprecated value that can be ignored unless you have legacy hosted pages. For Public Signup Page users, read this attribute from under the signup page."
        },
        "expiration_interval": {
          "type": [
            "integer",
            "null"
          ],
          "description": "A numerical interval for the length a subscription to this product will run before it expires. See the description of interval for a description of how this value is coupled with an interval unit to calculate the full interval.",
          "contentEncoding": "int32"
        },
        "expiration_interval_unit": {
          "allOf": [
            {
              "oneOf": [
                {},
                {
                  "$ref": "#/$defs/ExpirationIntervalUnit"
                }
              ]
            },
            {
              "description": "A string representing the expiration interval unit for this product, either month, day or never"
            }
          ]
        },
        "created_at": {
          "type": "string",
          "description": "Timestamp indicating when this product was created",
          "contentEncoding": "date-time"
        },
        "updated_at": {
          "type": "string",
          "description": "Timestamp indicating when this product was last updated",
          "contentEncoding": "date-time"
        },
        "price_in_cents": {
          "type": "integer",
          "description": "The product price, in integer cents",
          "contentEncoding": "int64"
        },
        "interval": {
          "type": "integer",
          "description": "The numerical interval. e.g., an interval of ‘30’ coupled with an interval_unit of day would mean this product would renew every 30 days.",
          "contentEncoding": "int32"
        },
        "interval_unit": {
          "allOf": [
            {
              "$ref": "#/$defs/IntervalUnit"
            },
            {
              "description": "A string representing the interval unit for this product, either month or day"
            }
          ]
        },
        "initial_charge_in_cents": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The up front charge you have specified.",
          "contentEncoding": "int64"
        },
        "trial_price_in_cents": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The price of the trial period for a subscription to this product, in integer cents.",
          "contentEncoding": "int64"
        },
        "trial_interval": {
          "type": [
            "integer",
            "null"
          ],
          "description": "A numerical interval for the length of the trial period of a subscription to this product. See the description of interval for a description of how this value is coupled with an interval unit to calculate the full interval.",
          "contentEncoding": "int32"
        },
        "trial_interval_unit": {
          "allOf": [
            {
              "oneOf": [
                {},
                {
                  "$ref": "#/$defs/IntervalUnit"
                }
              ]
            },
            {
              "description": "A string representing the trial interval unit for this product, either month or day"
            }
          ]
        },
        "archived_at": {
          "type": [
            "string",
            "null"
          ],
          "description": "Timestamp indicating when this product was archived",
          "contentEncoding": "date-time"
        },
        "require_credit_card": {
          "type": "boolean",
          "description": "Boolean that controls whether a payment profile is required to be entered for customers wishing to sign up on this product."
        },
        "return_params": {
          "type": [
            "string",
            "null"
          ]
        },
        "taxable": {
          "type": "boolean"
        },
        "update_return_url": {
          "type": [
            "string",
            "null"
          ],
          "description": "The url to which a customer will be returned after a successful account update"
        },
        "initial_charge_after_trial": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "version_number": {
          "type": "integer",
          "description": "The version of the product",
          "contentEncoding": "int32"
        },
        "update_return_params": {
          "type": [
            "string",
            "null"
          ],
          "description": "The parameters will append to the url after a successful account update. See [help documentation](https://help.chargify.com/products/product-editing.html#return-parameters-after-account-update)."
        },
        "product_family": {
          "$ref": "#/$defs/ProductFamily"
        },
        "public_signup_pages": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PublicSignupPage"
          },
          "description": ""
        },
        "product_price_point_name": {
          "type": "string"
        },
        "request_billing_address": {
          "type": "boolean",
          "description": "A boolean indicating whether to request a billing address on any Self-Service Pages that are used by subscribers of this product."
        },
        "require_billing_address": {
          "type": "boolean",
          "description": "A boolean indicating whether a billing address is required to add a payment profile, especially at signup."
        },
        "require_shipping_address": {
          "type": "boolean",
          "description": "A boolean indicating whether a shipping address is required for the customer, especially at signup."
        },
        "tax_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "A string representing the tax code related to the product type. This is especially important when using AvaTax to tax based on locale. This attribute has a max length of 25 characters."
        },
        "default_product_price_point_id": {
          "type": "integer",
          "contentEncoding": "int32"
        },
        "use_site_exchange_rate": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "item_category": {
          "type": [
            "string",
            "null"
          ],
          "description": "One of the following: Business Software, Consumer Software, Digital Services, Physical Goods, Other"
        },
        "product_price_point_id": {
          "type": "integer",
          "contentEncoding": "int32"
        },
        "product_price_point_handle": {
          "type": [
            "string",
            "null"
          ]
        },
        "unspsc_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "(Optional) Custom UNSPSC commodity code for Level 3/CEDP payment data. When set, this value is sent as the commodity code on invoice line items for this product instead of the default derived from item_category."
        },
        "features": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/FeatureCatalogItem"
          },
          "description": "The active feature catalog items attached to this product. Present only when the request includes `include_features=true`."
        }
      }
    },
    "ProductFamily": {
      "title": "ProductFamily",
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "contentEncoding": "int32"
        },
        "name": {
          "type": "string"
        },
        "handle": {
          "type": "string"
        },
        "accounting_code": {
          "type": [
            "string",
            "null"
          ]
        },
        "description": {
          "type": [
            "string",
            "null"
          ]
        },
        "surcharging": {
          "type": "boolean",
          "description": "Whether surcharging applies to this product family. Only included on sites where surcharging is enabled."
        },
        "created_at": {
          "type": "string",
          "contentEncoding": "date-time"
        },
        "updated_at": {
          "type": "string",
          "contentEncoding": "date-time"
        },
        "archived_at": {
          "type": [
            "string",
            "null"
          ],
          "description": "Timestamp indicating when this product family was archived. `null` if the product family is not archived.",
          "contentEncoding": "date-time"
        }
      }
    },
    "PublicSignupPage": {
      "title": "PublicSignupPage",
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "description": "The id of the signup page (public_signup_pages only)",
          "contentEncoding": "int32"
        },
        "return_url": {
          "type": [
            "string",
            "null"
          ],
          "description": "The url to which a customer will be returned after a successful signup (public_signup_pages only)."
        },
        "return_params": {
          "type": [
            "string",
            "null"
          ],
          "description": "The params to be appended to the return_url (public_signup_pages only)"
        },
        "url": {
          "type": "string",
          "description": "The url where the signup page can be viewed (public_signup_pages only)."
        }
      }
    },
    "SubscriptionIncludedCoupon": {
      "title": "SubscriptionIncludedCoupon",
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "use_count": {
          "type": "integer",
          "contentEncoding": "int32"
        },
        "uses_allowed": {
          "type": "integer",
          "contentEncoding": "int32"
        },
        "expires_at": {
          "type": [
            "string",
            "null"
          ]
        },
        "recurring": {
          "type": "boolean"
        },
        "amount_in_cents": {
          "minimum": 0.0,
          "type": [
            "integer",
            "null"
          ],
          "contentEncoding": "int64"
        },
        "percentage": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "SubscriptionState": {
      "title": "SubscriptionState",
      "enum": [
        "pending",
        "failed_to_create",
        "trialing",
        "assessing",
        "active",
        "soft_failure",
        "past_due",
        "suspended",
        "canceled",
        "expired",
        "paused",
        "unpaid",
        "trial_ended",
        "on_hold",
        "awaiting_signup"
      ],
      "type": "string",
      "description": "The state of a subscription.\n* **Live States**\n    * `active` - A normal, active subscription. It is not in a trial and is paid and up to date.\n    * `assessing` - An internal (transient) state that indicates a subscription is in the middle of periodic assessment. Do not base any access decisions in your app on this state, as it may not always be exposed.\n    * `pending` - An internal (transient) state that indicates a subscription is in the creation process. Do not base any access decisions in your app on this state, as it may not always be exposed.\n    * `trialing` - A subscription in trialing state has a valid trial subscription. This type of subscription may transition to active once payment is received when the trial has ended. Otherwise, it may go to a Problem or End of Life state.\n    * `paused` - An internal state that indicates that your account with Advanced Billing is in arrears.\n* **Problem States**\n    * `past_due` - Indicates that the most recent payment has failed, and payment is past due for this subscription. If you have enabled our automated dunning, this subscription will be in the dunning process (additional status and callbacks from the dunning process will be available in the future). If you are handling dunning and payment updates yourself, you will want to use this state to initiate a payment update from your customers.\n    * `soft_failure` - Indicates that normal assessment/processing of the subscription has failed for a reason that cannot be fixed by the Customer. For example, a Soft Fail may result from a timeout at the gateway or incorrect credentials on your part. The subscriptions should be retried automatically. An interface is being built for you to review problems resulting from these events to take manual action when needed.\n    * `unpaid` - Indicates an unpaid subscription. A subscription is marked unpaid if the retry period expires and you have configured your [Dunning](https://docs.maxio.com/billing/subscriptions/dunning/overview/understanding-how-dunning-works) settings to have a Final Action of `mark the subscription unpaid`.\n* **End of Life States**\n    * `canceled` - Indicates a canceled subscription. This may happen at your request (via the API or the web interface) or due to the expiration of the [Dunning](https://docs.maxio.com/billing/subscriptions/dunning/overview/understanding-how-dunning-works) process without payment. See the [Reactivation](https://docs.maxio.com/billing/subscriptions/management/state-management/understand-reactivation-and-resume-scenarios) documentation for info on how to restart a canceled subscription.\n    While a subscription is canceled, its period will not advance, it will not accrue any new charges, and Advanced Billing will not attempt to collect the overdue balance.\n    * `expired` - Indicates a subscription that has expired due to running its normal life cycle. Some products may be configured to have an expiration period. An expired subscription then is one that stayed active until it fulfilled its full period.\n    * `failed_to_create` - Indicates that signup has failed. (You may see this state in a signup_failure webhook.)\n    * `on_hold` - Indicates that a subscription’s billing has been temporarily stopped. While it is expected that the subscription will resume and return to active status, this is still treated as an “End of Life” state because the customer is not paying for services during this time.\n    * `suspended` - Indicates that a prepaid subscription has used up all their prepayment balance. If a prepayment is applied, it will return to an active state.\n    * `trial_ended` - A subscription in a trial_ended state is a subscription that completed a no-obligation trial and did not have a card on file at the expiration of the trial period. See [Product Pricing – No Obligation Trials](https://docs.maxio.com/billing/catalog/plans/creating-plans) for more details.\n\nSee [Subscription States](https://docs.maxio.com/billing/subscriptions/management/subscription-states/understand-subscription-states) for more info about subscription states and state transitions."
    }
  }
}