Subscription Billing and Invoices

Subscriptions created on the Square Developer Platform are billed in advance, beginning on the subscription's start_date and repeating based on the cadence specified in SubscriptionPlanVariation. At the start of each billing period, customers with a card_id on file as part of their subscription are charged based on the pricing object specified in SubscriptionPlanVariation. All other customers receive an emailed invoice with a payment link.

Important

ACH payments are not available through the Subscriptions API because bank account sources cannot be stored on file and charged later.

Each time an invoice is sent to a customer, it is emailed to the seller and its ID is added to the invoice_ids section of the Subscription object, listed in order of when the invoices were created (newest first). All invoices created by the Subscriptions API are available in the Seller Dashboard and include a subscription_id field. You can also manage invoices using the Invoices API. For more information, see Invoices API Overview.

As long as the subscription's status is ACTIVE, Square sends invoices regardless of whether the customer paid the invoices previously billed. Each invoice amount remains specific to the billing period, so individual invoices don't show any accumulation of the outstanding balance. You can track the payment status of subscriptions by subscribing to the invoices.payment_made webhook event of the Invoices API or by calling the ListPayments or GetPayment endpoint of the Payments API to retrieve payment objects and inspect the payment status.

All card payments made through the Square API, including subscription payments, incur seller transaction fees. These fees vary by country.

If a subscription has a card_id set and Square's attempt to charge the card fails, Square sends the invoice to the customer's email address with a link for making a payment. Square doesn't receive complete information from credit card providers about why payments fail. If a customer's card fails or is declined, they should contact the card provider for more information. In some circumstances, Square might deactivate a subscription that has become non-billable. For more information, see Deactivated subscriptions.

Link to section

Billing dates

Plan variations with a day-based cadence (such as EVERY_TWO_WEEKS, THIRTY_DAYS, and NINETY_DAYS) are billed relative to the subscription's start_date. Variations with a MONTHLY cadence (including multiple months, such as QUARTERLY, EVERY_SIX_MONTHS, and ANNUAL) can be configured to bill on a specific numbered day of the month by setting the monthly_billing_anchor_date when creating or updating a CatalogSubscriptionPlanVariation. For example, a plan variation with a monthly_billing_anchor_date of 15 always bills (by charging the card on file or emailing the customer an invoice) on the 15th day of the relevant month, regardless of the start_date of a specific subscription.

Link to section

Proration

Optionally, you can allow prorated (partial) charging for subscriptions by setting the can_prorate field to true on the plan variation upon creation. If true, Square sends an invoice for a portion of the total amount, based on the number of days until the next billing date. For example, you offer a monthly subscription that charges customers on the 15th of every month, and allows proration. If a customer subscribes on September 30, they are charged half the total subscription amount immediately, and sent another invoice for the full amount on October 15.

If a plan variation has can_prorate set to false, customers can subscribe at any time, but they are charged the full amount of the first phase immediately, regardless of the billing_anchor_date. A customer subscribing on October 1 to a variation billing monthly on the 15th would be charged the subscription's full amount on October 1st, and again on October 15.

For all cadences, if the billing date isn't present in a given month, Square invoices the customer on the last date of that month. For example, a quarterly subscription billing on January 31 is billed again on April 30. An annual subscription billing February 29 is billed again the next year on February 28.

Link to section

Change a billing date

Use the ChangeBillingAnchorDate endpoint to change the billing date for an individual customer’s subscription.

Change billing anchor date

The response returns the current Subscription object containing a new, scheduled CHANGE_BILLING_ANCHOR_DATE action. The monthly_billing_anchor_date remains the same until the action's effective_date (the next occurrence of the anchor date).

Note that ChangeBillingAnchorDate does NOT change the billing date for any other customers subscribed to the same plan variation. To make changes to multiple customers’ subscriptions at once, you must use the BulkSwapPlan endpoint to reassign subscription plan variations.

Link to section

Deactivated subscriptions

After a subscription is created, some events can make a subscription non-billable, causing Square to deactivate the subscription. These reasons include:

  • The customer's email address is no longer valid or is deleted from the profile in the seller's Customer Directory.
  • The customer's name is deleted from the profile in the seller's Customer Directory.
  • The customer's entire profile is deleted from the seller's Customer Directory.
  • The location is deactivated by the seller.
  • The location isn't allowed to accept payments by the Square risk department.

The following is an example subscription with the status set to DEACTIVATED:

Square only deactivates a subscription at the end of the billing cycle. In the case of a monthly subscription billed on the first of the month:

  1. On January 1, the customer is charged for their monthly subscription.
  2. On January 15, the customer's email is deleted from their customer profile.
  3. On February 1, Square discovers that the subscription is non-billable and deactivates the subscription. Square doesn't send any new invoices.

To learn when a subscription has been deactivated, your application can subscribe to the subscription.updated webhook to receive notifications and check when a subscription's status changes to DEACTIVATED. For more details about why the subscription was deactivated, call ListSubscriptionEvents with the subscription's ID.

List subscription events

The following is an example response showing a list of the subscription's events, including a DEACTIVATE_SUBSCRIPTION event. The info object provides the reason code and detail about why the subscription was deactivated.

Sellers can also use the Seller Dashboard to view deactivated subscriptions.

Link to section

Resume a deactivated subscription

After the issues causing the subscription deactivation have been resolved, there are two ways to resume a deactivated subscription:

  • A seller can resume a deactivated subscription in the Seller Dashboard.

  • Your application can call the ResumeSubscription endpoint as shown:

    Resume subscription

This request fails unless all issues are resolved. A successful call to ResumeSubscription sets the subscription status to ACTIVE.

If a subscription is resumed in the middle of the billing cycle, Square sends a prorated invoice for the remaining billing cycle. In the case of a monthly subscription billed on the first of the month:

  1. On January 1, the customer is charged for their monthly subscription.
  2. On January 15, the customer's email is deleted from their customer profile.
  3. On February 1, Square discovers that the subscription is non-billable and deactivates the subscription.
  4. On February 15, the customer's email is added back to the profile.
  5. On February 15, the application calls ResumeSubscription.
  6. On February 15, Square sends a prorated invoice for the rest of February.