Co-term Payment Charge Completed

Event payload example and property overview for subscription.group.charge.completed

Webhook response payload example (expansion enabled)

When a subscription.group.charge.completed event is triggered, the webhook sends the following JSON payload:

{
    "cotermGroupId": "aB1c2deFGhIjKL3mn-opqR",
    "cotermGroupDisplayName": "Tech Services Monthly Plan",
    "cotermGroupPeriodStartDate": 1754044800000,
    "cotermGroupPeriodEndDate": 1756646400000,
    "cotermGroupPrimarySubscription": "1abc2DE_FGhIjKLm3NoPQR",
    "cotermGroupStatus": "EXECUTED",
    "cotermGroupOrderId": "aBCDE12fGH3iJkL4mNOpq",
    "cotermGroupOrderReference": "ABC123456-7891-01112",
    "cotermNextChargeDate": 1756646400000,
    "cotermNextChargeTotal": 199.95,
    "cotermGroupSize": 2,
    "currency": "USD",
    "total": 20,
    "status": "successful",
    "timestamp": 1739223188721,
    "account": {
      "id": "abCdE1FGH2Hij3KLMnOpqR",
      "account": "abCdE1FGH2Hij3KLMnOpqR",
      "contact": {
        "first": "Jane",
        "last": "Doe",
        "email": "jane.doe@company.com",
        "company": "Company Inc.",
        "phone": "8001234567",
        "subscribed": true
      },
      "address": {
        "address line 1": "123 Business Rd",
        "address line 2": "Floor 4",
        "city": "Metropolis",
        "country": "US",
        "postal code": "12345",
        "region": "US-NY",
        "region custom": null,
        "company": "Company Inc."
      },
      "language": "en",
      "country": "US",
      "lookup": {
        "global": "lookup-001"
      },
      "url": "https://company.onfastspring.com/account"
    },
    "paymentOverdue": {
      "intervalUnit": "week",
      "intervalLength": 1,
      "total": 4,
      "sent": 0
    },
    "cancellationSetting": {
      "cancellation": "AFTER_LAST_NOTIFICATION",
      "intervalUnit": "week",
      "intervalLength": 1
    },
    "order": {
      "order": "aBCDE12fGH3iJkL4mNOpq",
      "id": "aBCDE12fGH3iJkL4mNOpq",
      "reference": "ABC123456-7891-01112",
      "buyerReference": null,
      "ipAddress": null,
      "changed": 1739223188831,
      "language": "en",
      "live": false,
      "currency": "USD",
      "payoutCurrency": "USD",
      "quote": null,
      "invoiceUrl": "https://company.onfastspring.com/account/order/null/invoice",
      "siteId": "ABC1DE2FGHIJ3",
      "acquisitionTransactionType": "GROUP_REGULAR_PERIOD",
      "total": 20,
      "tax": 1.48,
      "subtotal": 18.52,
      "discount": 0,
      "discountWithTax": 0,
      "notes": [],
      "items": [
        {
          "product": "cloud-storage",
          "quantity": 1,
          "display": "Cloud Storage Service",
          "sku": "SKU-CS-101",
          "imageUrl": null,
          "shortDisplay": "Cloud Storage Service",
          "subtotal": 9.26,
          "discount": 0,
          "isSubscription": true,
          "isAddon": null,
          "changeQuantity": false,
          "subscription": "1abc2DE_FGhIjKLm3NoPQR",
          "fulfillments": {},
          "withholdings": {
            "taxWithholdings": false
          }
        },
        {
          "product": "data-analytics-service",
          "quantity": 1,
          "display": "Data Analytics Service",
          "sku": null,
          "imageUrl": null,
          "shortDisplay": "Data Analytics Service",
          "subtotal": 9.26,
          "discount": 0,
          "isSubscription": true,
          "isAddon": null,
          "changeQuantity": false,
          "subscription": "2abc2DE_FGhIjKLm3NoPQR",
          "fulfillments": {},
          "withholdings": {
            "taxWithholdings": false
          }
        }
      ]
    },
    "quote": null,
    "subscriptions": [
      {
        "id": "1abc2DE_FGhIjKLm3NoPQR",
        "active": true,
        "state": "active",
        "isSubscriptionEligibleForPauseByBuyer": true,
        "isPauseScheduled": false,
        "changed": 1739223188786,
        "lastRebillOrderAcquisition": null,
        "live": false,
        "product": "cloud-storage",
        "sku": null,
        "display": "Cloud Storage Service",
        "quantity": 1,
        "currency": "USD",
        "adhoc": false,
        "autoRenew": true,
        "price": 10,
        "discount": 0,
        "subtotal": 10,
        "end": null,
        "canceledDate": null,
        "deactivationDate": null,
        "sequence": 1,
        "periods": null,
        "remainingPeriods": null,
        "begin": 1739222241061,
        "intervalUnit": "week",
        "intervalUnitAbbreviation": "wk",
        "intervalLength": 1,
        "nextChargeCurrency": "USD",
        "nextChargeDate": 1740441600000,
        "nextChargePreTax": 9.26,
        "nextChargeTotal": 10,
        "addons": null,
        "fulfillments": {},
        "instructions": [
          {
            "product": "cloud-storage",
            "type": "regular",
            "periodStartDate": 1739145600000,
            "periodEndDate": null,
            "intervalUnit": "week",
            "intervalLength": 1,
            "discountDurationUnit": null,
            "discountDurationLength": null,
            "discountPercent": 0,
            "discountTotal": 0,
            "unitDiscount": 0,
            "price": 10,
            "priceTotal": 10,
            "unitPrice": 10,
            "total": 10,
            "totalWithTaxes": 10,
            "totalWithTaxesDisplay": "$10.00",
            "isNotTrial": true
          }
        ]
      },
      {
        "id": "2abc2DE_FGhIjKLm3NoPQR",
        "active": true,
        "state": "active",
        "isSubscriptionEligibleForPauseByBuyer": true,
        "isPauseScheduled": false,
        "changed": 1739223188818,
        "lastRebillOrderAcquisition": null,
        "live": false,
        "product": "data-analytics-service",
        "sku": null,
        "display": "Data Analytics Service",
        "quantity": 1,
        "currency": "USD",
        "adhoc": false,
        "autoRenew": true,
        "price": 10,
        "discount": 0,
        "subtotal": 10,
        "end": null,
        "canceledDate": null,
        "deactivationDate": null,
        "sequence": 1,
        "periods": null,
        "remainingPeriods": null,
        "begin": 1739222135539,
        "intervalUnit": "week",
        "intervalUnitAbbreviation": "wk",
        "intervalLength": 1,
        "nextChargeCurrency": "USD",
        "nextChargeDate": 1740441600000,
        "nextChargePreTax": 9.26,
        "nextChargeTotal": 10,
        "addons": null,
        "fulfillments": {},
        "instructions": [
          {
            "product": "data-analytics-service",
            "type": "regular",
            "periodStartDate": 1739145600000,
            "periodEndDate": null,
            "intervalUnit": "week",
            "intervalLength": 1,
            "discountDurationUnit": null,
            "discountDurationLength": null,
            "discountPercent": 0,
            "discountTotal": 0,
            "unitDiscount": 0,
            "price": 10,
            "priceTotal": 10,
            "unitPrice": 10,
            "total": 10,
            "totalWithTaxes": 10,
            "totalWithTaxesDisplay": "$10.00",
            "isNotTrial": true
          }
        ]
      }
    ]
  }

Webhook response payload properties

The webhook response properties table outlines each property in the subscription.group.charge.completed event JSON payload, specifying their name, data type, and description.

Name Type Description
Co-term Group Information
cotermGroupId string Unique identifier for the co-term group.
cotermGroupDisplayName string Display name of the co-term group. This property is optional when creating a co-term group.
cotermGroupPeriodStartDate integer Start date of the co-term group period, in milliseconds.
cotermGroupPeriodEndDate integer End date of the co-term group period, in milliseconds.
cotermGroupPrimarySubscription string ID of the primary subscription in the co-term group. This property represents the most recently purchased subscription within the group.
cotermGroupStatus string Status of the co-term group (e.g., "EXECUTED").
cotermGroupOrderId string Order ID associated with the co-term group.
cotermGroupOrderReference string Order reference for the co-term group.
cotermNextChargeDate integer Next charge date for the co-term group in milliseconds. This value is computed by adding one day to the length of the current term (see the monthly and yearly subscription examples below).

Monthly Subscription: If the co-term is initiated on February 11, the next charge date becomes March 12 (one full month plus one day).

Yearly Subscription: If initiated on February 11, 2025, the next charge date becomes February 12, 2026 (one full year plus one day).
cotermNextChargeTotal number Total amount for the next charge.
cotermGroupSize string Number of subscriptions in the co-term group.
currency string Currency code used (e.g., "USD").
total integer Total amount for the order.
status string Status of the order (e.g., "successful").
timestamp integer Timestamp when the order was recorded, in milliseconds.
Account Object
account object Account object containing account details.
account.id string Unique identifier for the account.
account.account string FastSpring-generated customer account ID.
account.contact.first string First name of the account contact.
account.contact.last string Last name of the account contact.
account.contact.email string Email address of the account contact.
account.contact.company string Company name of the account contact.
account.contact.phone string Phone number of the account contact.
account.contact.subscribed boolean Indicates if the account contact is subscribed.
account.address.address line 1 string First line of the account address.
account.address.address line 2 string Second line of the account address.
account.address.city string City of the account address.
account.address.country string Country of the account address (ISO code).
account.address.postal code string Postal code of the account address.
account.address.region string Region or state of the account address.
account.address.region custom string Custom region information for the account address.
account.address.company string Company associated with the account address.
account.language string Preferred language of the account (e.g., "en").
account.country string Country code for the account.
account.lookup.global string Global lookup identifier for the account.
account.url string URL to access the account details.
Payment Overdue Object
paymentOverdue.intervalUnit string Unit of time indicating when FastSpring sends the customer an overdue payment notification (e.g., "week").
paymentOverdue.intervalLength integer Number of intervalUnits following the failed rebill that FastSpring will send the first payment overdue notification.
paymentOverdue.total integer Total number of payment overdue notifications to be sent, including the first one.
paymentOverdue.sent integer Number of payment overdue notifications that have been sent to date.
Cancellation Settings Object
cancellationSetting.cancellation string Cancellation policy for the co-term group. Determines the timing of automatic cancellation (e.g., "AFTER_LAST_NOTIFICATION" or "AFTER_PAYMENT_FAILURE").
cancellationSetting.intervalUnit string Unit of time for the cancellation interval (e.g., "week").
cancellationSetting.intervalLength integer Number of intervalUnits following the cancellation event that the co-term group will be canceled.
Order Object
order.order string Unique order identifier.
order.id string Unique order identifier.
order.reference string Customer-facing order reference.
order.buyerReference string Purchase order number.
order.ipAddress string IP address from which the order was placed.
order.changed integer Timestamp when the order was last changed, in milliseconds.
order.language string Two-letter language code (ISO 639) of the order.
order.live boolean Indicates if the order is live or in test mode. true indicates a live order and false indicates a test order.
order.currency string 3-character ISO code of the currency used for the order.
order.payoutCurrency string 3-character ISO code of the currency for payouts.
order.quote string Internal ID of the associated quote.
order.invoiceUrl string URL of the associated invoice.
order.siteId string Site identifier for the order.
order.acquisitionTransactionType string Type of acquisition transaction (e.g., "GROUP_REGULAR_PERIOD").
order.total integer Total order amount.
order.tax integer Tax amount for the order.
order.subtotal integer Subtotal amount for the order.
order.discount integer Discount applied to the order.
order.discountWithTax integer Discount amount including tax.
order.notes array List of notes associated with the order.
Items Array (within Order object)
order.items array List of items in the order with product details and amounts.
order.items.product string Product (product-path) name of the item.
order.items.quantity integer Quantity of the item.
order.items.display string Display name for the item.
order.items.sku string SKU of the item.
order.items.imageUrl string Image URL of the item.
order.items.shortDisplay string Short display name for the item.
order.items.subtotal integer Subtotal amount for the item.
order.items.discount integer Discount applied to the item.
order.items.isSubscription boolean Indicates if the item is a subscription.
order.items.isAddon boolean Indicates if the item is an add-on.
order.items.changeQuantity boolean Indicates if a quantity change is applied to the item.
order.items.subscription string Subscription ID associated with the item.
order.items.fulfillments object Fulfillment details for the item.
order.items.withholdings.taxWithholdings boolean Indicates if tax withholdings are applied to the item.
Subscriptions Array
subscriptions.id string Unique identifier for the subscription.
subscriptions.active boolean Indicates if the subscription is active.
subscriptions.state string Current state of the subscription (e.g., trial, active, canceled).
subscriptions.isSubscriptionEligibleForPauseByBuyer boolean Indicates if the subscription can be paused by the buyer.
subscriptions.isPauseScheduled boolean Indicates if a pause is scheduled for the subscription.
subscriptions.changed integer Timestamp of the last change in milliseconds.
subscriptions.lastRebillOrderAcquisition number Timestamp when the last rebill order was acquired.
subscriptions.live boolean Indicates if the subscription is live or in test mode.
subscriptions.product string Product associated with the subscription.
subscriptions.sku string Stock Keeping Unit (SKU) for the subscription (if applicable).
subscriptions.display string Display name of the subscription product.
subscriptions.quantity integer Quantity of the subscription product.
subscriptions.currency string 3-character ISO code of the currency used for billing (e.g., "USD")
subscriptions.adhoc boolean Indicates if the subscription is ad-hoc.
subscriptions.autoRenew boolean Indicates if the subscription is set to auto-renew.
subscriptions.price number Price of the subscription.
subscriptions.discount number Discount amount applied to the subscription.
subscriptions.subtotal number Subtotal amount of the subscription.
subscriptions.end string End date of the subscription (if applicable).
subscriptions.canceledDate string Date when the subscription was canceled (if applicable).
subscriptions.deactivationDate string Date when the subscription was deactivated (if applicable).
subscriptions.sequence integer Sequence number of the current billing period.
subscriptions.periods string Total number of billing periods. This applies to subscriptions with a fixed number of rebills.
subscriptions.remainingPeriods string Number of remaining rebills. This is based on the number of expected periods.
subscriptions.begin integer Date that the subscription was activated, in milliseconds.
subscriptions.intervalUnit string Time unit used to determine the subscription's rebill frequency (e.g., adhoc, day, week, month, year).
subscriptions.intervalUnitAbbreviation string Abbreviation for the interval unit (e.g., "wk").
subscriptions.intervalLength integer Number of intervalUnits per billing period for the subscription.
subscriptions.nextChargeCurrency string 3-character ISO currency code for the next charge (e.g., "USD").
subscriptions.nextChargeDate integer Next charge date for the subscription in milliseconds.
subscriptions.nextChargePreTax integer Pre-tax amount for the next charge.
subscriptions.nextChargeTotal integer Total amount for the next charge.
Add-ons Array (within Subscriptions array)
subscriptions.addons.product string Product (product-path) associated with the add-on.
subscriptions.addons.sku string SKU for the add-on (if applicable).
subscriptions.addons.display string Display name for the add-on.
subscriptions.addons.quantity integer Quantity of the add-on.
subscriptions.addons.price integer Price per unit of the add-on.
subscriptions.addons.discount integer Coupon amount applied to the add-on.
subscriptions.addons.subtotal integer Subtotal amount for the add-on.
subscriptions.addons.subtotalDisplay integer Add-on subtotal, formatted for display.
subscriptions.addons.discounts array Coupon code(s) applied to the add-on.
Fulfillments Object (within Subscriptions array)
subscriptions.fulfillments object Fulfillment details for the subscription.
Instructions Array (within Subscriptions array)
subscriptions.instructions.product string Product (product-path) associated with the instruction.
subscriptions.instructions.type string Type of instruction.

A subscription may have more than one instructions object when applicable:

  • trial: only exists if there's a free trial
  • discounted: only exists if there's a product-level discount
  • regular: always present
subscriptions.instructions.periodStartDate integer Start date of the period in milliseconds.
subscriptions.instructions.periodEndDate string End date of the period (if applicable).
subscriptions.instructions.intervalUnit string Time unit for the interval (e.g., "week").
subscriptions.instructions.intervalLength integer Length of the interval.
subscriptions.instructions.discountDurationUnit string Unit of time used to determine the remaining discount duration, excluding the current discount period.

Only appears when type is "discounted" or "trial".

subscriptions.instructions.discountDurationLength integer Number of discount duration units remaining, excluding the current discount period.

Only appears when type is "discounted" or "trial".

subscriptions.instructions.discountPercent integer Discount percentage applied to the instruction.
subscriptions.instructions.discountTotal integer Total discount applied to the instruction.
subscriptions.instructions.unitDiscount integer Discount per unit for the instruction.
subscriptions.instructions.price integer Price per unit for the instruction.
subscriptions.instructions.priceTotal integer Total price for the instruction.
subscriptions.instructions.unitPrice integer Unit price for the instruction before taxes.
subscriptions.instructions.total integer Total amount for the instruction before taxes.
subscriptions.instructions.totalWithTaxes integer Total amount for the instruction including taxes.
subscriptions.instructions.totalWithTaxesDisplay string Formatted total amount for the instruction including taxes (e.g., "$0.04").
subscriptions.instructions.isNotTrial boolean Indicates if the instruction is not a trial.