Square · Schema
Square Subscription
Represents a subscription purchased by a customer. Subscriptions enable sellers to generate recurring revenue by offering scheduled fulfillment of products or services with configurable billing periods, pricing, and discounts.
RestaurantBookingsCatalogCheckoutCustomersDisputesEcommerceFinancial TechnologyGift CardsInventoryInvoicingLaborLocationsLoyaltyMerchantsOrdersPaymentsPoint of SaleRefundsRetailSubscriptionsTeamTerminalWebhooks
Properties
| Name | Type | Description |
|---|---|---|
| id | string | The Square-assigned ID of the subscription. |
| location_id | string | The ID of the location associated with the subscription. |
| plan_variation_id | string | The ID of the subscribed-to subscription plan variation. |
| customer_id | string | The ID of the subscribing customer profile. |
| start_date | string | The YYYY-MM-DD-formatted date to start the subscription. |
| canceled_date | string | The YYYY-MM-DD-formatted date to cancel the subscription, when the subscription status changes to CANCELED and the subscription billing stops. |
| charged_through_date | string | The YYYY-MM-DD-formatted date up to when the subscriber is invoiced for the subscription. |
| status | string | The current status of the subscription. |
| tax_percentage | string | The tax amount applied when billing the subscription. The percentage is expressed in decimal form, using a '.' as the decimal separator and without a '%' sign. For example, a value of 7.5 corresponds |
| invoice_ids | array | The IDs of the invoices created for the subscription, listed in order when the invoices were created (newest invoices appear first). |
| price_override_money | object | A custom price which overrides the cost of a subscription plan variation with STATIC pricing. |
| version | integer | The version of the object. When updating an object, the version supplied must match the version in the database. |
| created_at | string | The timestamp when the subscription was created, in RFC 3339 format. |
| card_id | string | The ID of the subscriber's card used to charge for the subscription. |
| timezone | string | Timezone that will be used in date calculations for the subscription. Defaults to the timezone of the location based on location_id. Format: the IANA Timezone Database identifier. |
| source | object | The origination details of the subscription. |
| actions | array | The list of scheduled actions on this subscription. |
| monthly_billing_anchor_date | integer | The day of the month on which the subscription will issue invoices and publish orders. |
| phases | array | The subscription phases that define the billing schedule. |
JSON Schema
{
"$id": "https://github.com/api-evangelist/square/blob/main/json-schema/subscription.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Square Subscription",
"description": "Represents a subscription purchased by a customer. Subscriptions enable sellers to generate recurring revenue by offering scheduled fulfillment of products or services with configurable billing periods, pricing, and discounts.",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The Square-assigned ID of the subscription.",
"maxLength": 255,
"readOnly": true
},
"location_id": {
"type": "string",
"description": "The ID of the location associated with the subscription.",
"readOnly": true
},
"plan_variation_id": {
"type": "string",
"description": "The ID of the subscribed-to subscription plan variation.",
"readOnly": true
},
"customer_id": {
"type": "string",
"description": "The ID of the subscribing customer profile.",
"readOnly": true
},
"start_date": {
"type": "string",
"format": "date",
"description": "The YYYY-MM-DD-formatted date to start the subscription.",
"readOnly": true
},
"canceled_date": {
"type": "string",
"format": "date",
"description": "The YYYY-MM-DD-formatted date to cancel the subscription, when the subscription status changes to CANCELED and the subscription billing stops."
},
"charged_through_date": {
"type": "string",
"format": "date",
"description": "The YYYY-MM-DD-formatted date up to when the subscriber is invoiced for the subscription.",
"readOnly": true
},
"status": {
"type": "string",
"description": "The current status of the subscription.",
"enum": ["PENDING", "ACTIVE", "CANCELED", "DEACTIVATED", "PAUSED"],
"readOnly": true
},
"tax_percentage": {
"type": "string",
"description": "The tax amount applied when billing the subscription. The percentage is expressed in decimal form, using a '.' as the decimal separator and without a '%' sign. For example, a value of 7.5 corresponds to 7.5%."
},
"invoice_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "The IDs of the invoices created for the subscription, listed in order when the invoices were created (newest invoices appear first).",
"readOnly": true
},
"price_override_money": {
"$ref": "money.json",
"description": "A custom price which overrides the cost of a subscription plan variation with STATIC pricing."
},
"version": {
"type": "integer",
"format": "int64",
"description": "The version of the object. When updating an object, the version supplied must match the version in the database."
},
"created_at": {
"type": "string",
"format": "date-time",
"description": "The timestamp when the subscription was created, in RFC 3339 format.",
"readOnly": true
},
"card_id": {
"type": "string",
"description": "The ID of the subscriber's card used to charge for the subscription."
},
"timezone": {
"type": "string",
"description": "Timezone that will be used in date calculations for the subscription. Defaults to the timezone of the location based on location_id. Format: the IANA Timezone Database identifier.",
"readOnly": true
},
"source": {
"type": "object",
"description": "The origination details of the subscription.",
"properties": {
"name": {
"type": "string",
"description": "The name used to identify the place that created the subscription."
}
}
},
"actions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the scheduled action."
},
"type": {
"type": "string",
"description": "The type of the action.",
"enum": ["CANCEL", "PAUSE", "RESUME", "SWAP_PLAN", "CHANGE_BILLING_ANCHOR_DATE"]
},
"effective_date": {
"type": "string",
"format": "date",
"description": "The YYYY-MM-DD-formatted date when the action will take effect."
}
}
},
"description": "The list of scheduled actions on this subscription."
},
"monthly_billing_anchor_date": {
"type": "integer",
"description": "The day of the month on which the subscription will issue invoices and publish orders.",
"minimum": 1,
"maximum": 31
},
"phases": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uid": {
"type": "string",
"description": "The Square-assigned ID of the subscription phase."
},
"cadence": {
"type": "string",
"description": "The billing cadence of the phase.",
"enum": ["DAILY", "WEEKLY", "EVERY_TWO_WEEKS", "THIRTY_DAYS", "SIXTY_DAYS", "NINETY_DAYS", "MONTHLY", "EVERY_TWO_MONTHS", "QUARTERLY", "EVERY_FOUR_MONTHS", "EVERY_SIX_MONTHS", "ANNUAL", "EVERY_TWO_YEARS"]
},
"periods": {
"type": "integer",
"description": "The number of periods the phase lasts."
},
"recurring_price_money": {
"$ref": "money.json",
"description": "The amount billed per period during this phase."
},
"ordinal": {
"type": "integer",
"format": "int64",
"description": "The position this phase appears in the sequence of phases."
}
}
},
"description": "The subscription phases that define the billing schedule."
}
}
}