Collapse Menu
Docs Home
Developer Tools
Contact Support

/subscriptions

Overview

The /subscriptions endpoint allows you to retrieve complete details of one or more specific subscription instances.

Each subscription instance has a unique subscription ID, which can be obtained by subscribing to webhooks or through API requests. You can search for subscription instances using a variety of parameters, modify subscription instances, and create new subscription charges for Managed Subscriptions.

Get All Subscription Instances

GET /subscriptions?page=2&limit=15

Response Example

{
  "action": "subscription.getall",
  "result": "success",
  "nextPage": 3,
  "subscriptions": [
    "khyNPLY3TYiQhBfHyjZINg",
    "w46bQ2-gTayzJfFXbV1VWg",
    "86cFjtgCRlSmOPbLcX_mCA",
    "v0yPCSTLSyarVe9NlNalSA",
    "FWhWZ3b6StyfiJ_GnyHswQ",
    "A5xx9TF_R26PcCMdagAC8Q",
    "pgNumDwTSbaLeNY6FtUF3Q",
    "IK2eD1nvSP-L3yilE6K7BQ",
    "iZ8qUO-MSwuezTn_elPb3g",
    "gLspcP3NRqmdOm615HSTig",
    "HYKxh1JfTcyUhTgJxAxfWg",
    "1RkJixj_QKOg_c7G_wGIZA",
    "LiPzVuKnT2Go1WWteQkZtw",
    "V5wXtLilSsWGkMYSiLVy2g",
    "MseNZ_LBRu63R84k9knIKg"
  ]
}

Get One or More Subscription Instances

GET /subscriptions/{id1},{id2},{id3},...

If you have previously posted an update to a subscription instance to apply a customRefernced value, you can retrieve that subscription instance using GET /subscriptions?customReferenceld=.

Response Example

{
    "id": "AmYzjmPbSbWYkESv7MnwwA",
    "subscription": "AmYzjmPbSbWYkESv7MnwwA",                           // subscription ID
    "active": true,                                                     // false if subscription has been deactivated
    "state": "trial",                                                   // current status of the subscription: "active", "overdue", "canceled", "deactivated", "trial"
    "changed": 1573257599032,                                           // date of the most recent update to this subscription record, in milliseconds
    "changedValue": 1573257599032,
    "changedInSeconds": 1573257599,                                     // date of the most recent update to this subscription record, in seconds
    "changedDisplay": "11/8/19",                                        // date of the most recent update to this subscription record, formatted for display based on the language in which the order was processed, as selected by the customer
    "live": false,                                                      // true if not a test order
    "currency": "USD",
    "account": "N8FjcSWcQNeYCc-suM1O8g",                                // FastSpring-generated customer account ID
    "product": "example-monthly-subscription",
    "sku": "skusub1",
    "display": "Example Monthly Subscription",
    "quantity": 1,
    "adhoc": false,                                                     // true if managed subscription
    "autoRenew": true,
    "price": 14.95,
    "priceDisplay": "$14.95",
    "priceInPayoutCurrency": 14.95,
    "priceInPayoutCurrencyDisplay": "$14.95",
    "discount": 3.74,
    "discountDisplay": "$3.74",
    "discountInPayoutCurrency": 3.74,
    "discountInPayoutCurrencyDisplay": "$3.74",
    "subtotal": 16.21,
    "subtotalDisplay": "$16.21",
    "subtotalInPayoutCurrency": 16.21,
    "subtotalInPayoutCurrencyDisplay": "$16.21",
    "attributes": {                                                     // optional custom product attributes
        "Furious": "Falcon",
        "CustomAttribute2": "CustomValue2",
        "CustomAttribute1": "CustomValue1"
    },
    "discountDuration": 1,
    "next": 1574380800000,                                              // date of the next event (e.g. charge, notification, deactivation, trial period end date), in milliseconds
    "nextValue": 1574380800000,
    "nextInSeconds": 1574380800,                                        // date of the next event (e.g. charge, notification, deactivation, trial period end date), in seconds
    "nextDisplay": "11/22/19",                                          // date of the next event, formatted for display based on the language in which the order was processed, as selected by the customer
    "end": null,
    "endValue": null,
    "endInSeconds": null,
    "endDisplay": null,
    "canceledDate": null,
    "canceledDateValue": null,
    "canceledDateInSeconds": null,
    "canceledDateDisplay": null,
    "deactivationDate": null,                                           // scheduled deactivation date if rebill payment failed, see cancellation setting
    "deactivationDateValue": null,
    "deactivationDateInSeconds": null,
    "deactivationDateDisplay": null,
    "sequence": 1,                                                      // sequence number of the current period
    "periods": null,                                                    // expected total number of periods, if limited (null = unlimited)
    "remainingPeriods": null,
    "begin": 1573171200000,                                             // date on which the subscription began, in milliseconds
    "beginValue": 1573171200000,                                        // date on which the subscription began, in milliseconds (backward compatibility)
    "beginInSeconds": 1573171200,                                       // date on which the subscription began, in seconds
    "beginDisplay": "11/8/19",                                          // date on which the subscription began, formatted for display based on the language selected for the original subscription order
    "intervalUnit": "month",                                            // "adhoc", "day", "week", "month", "year"
    "intervalLength": 1,
    "nextChargeCurrency": "USD",
    "nextChargeDate": 1574380800000,                                    // date of the next scheduled charge, in milliseconds
    "nextChargeDateValue": 1574380800000,
    "nextChargeDateInSeconds": 1574380800,                              // date of the next scheduled charge, in seconds
    "nextChargeDateDisplay": "11/22/19",                                // date of the next scheduled charge, formatted for display based on the language in which the order was processed, as selected by the customer
    "nextChargePreTax": 16.21,
    "nextChargePreTaxDisplay": "$16.21",
    "nextChargePreTaxInPayoutCurrency": 16.21,
    "nextChargePreTaxInPayoutCurrencyDisplay": "$16.21",
    "nextChargeTotal": 16.21,
    "nextChargeTotalDisplay": "$16.21",
    "nextChargeTotalInPayoutCurrency": 16.21,
    "nextChargeTotalInPayoutCurrencyDisplay": "$16.21",
    "nextNotificationType": "PAYMENT_REMINDER",
    "nextNotificationDate": 1574294400000,
    "nextNotificationDateValue": 1574294400000,
    "nextNotificationDateInSeconds": 1574294400,
    "nextNotificationDateDisplay": "11/21/19",
    "trialReminder": {                                                  // configured at the subscription product level with read-only default value; indicates when trial reminder message will be sent relative to end of trial
        "intervalUnit": "day",
        "intervalLength": 3
      },
    "paymentReminder": {                                                // configured at the subscription product level via the Pricing field
        "intervalUnit": "day",
        "intervalLength": 1
    },
    "paymentOverdue": {                                                 // configured at the subscription product level via the Pricing field
        "intervalUnit": "week",
        "intervalLength": 2,
        "total": 1,
        "sent": 0
    },    
    "cancellationSetting": {                                            // configured at the subscription product level via the Pricing field
        "cancellation": "AFTER_LAST_NOTIFICATION",                      // or AFTER_PAYMENT_FAILURE if no paymentOverdue notices are configured
        "intervalUnit": "week",
        "intervalLength": 1
    },
    "addons": [                                                         // subscription addons included in the subscription, if any
        {
            "product": "example-product-3",
            "sku": "skuex3",
            "display": "Example Product 3",
            "quantity": 1,
            "price": 5.0,
            "priceDisplay": "$5.00",
            "priceInPayoutCurrency": 5.0,
            "priceInPayoutCurrencyDisplay": "$5.00",
            "discount": 0.0,
            "discountDisplay": "$0.00",
            "discountInPayoutCurrency": 0.0,
            "discountInPayoutCurrencyDisplay": "$0.00",
            "subtotal": 5.0,
            "subtotalDisplay": "$5.00",
            "subtotalInPayoutCurrency": 5.0,
            "subtotalInPayoutCurrencyDisplay": "$5.00",
            "discounts": []
        }
    ],
    "discounts": [                                                      // information about the coupon or product-level discount applied to the subscription order, if any
        {
            "discountPath": "example-monthly-subscription",
            "discountDuration": 1,
            "percentValue": 25.0
        }
    ],
    "setupFee": {                                                       // details of the one-time setup fee associated with the subscription, if any
        "price": {
            "USD": 9.95
        },
        "title": {
            "en": "One-time Setup Fee"
        }
    },
    "instructions": [
        {                                                               // only exists if there is a free trial
            "type": "trial",
            "periodStartDate": 1573171200000,
            "periodStartDateValue": 1573171200000,
            "periodStartDateInSeconds": 1573171200,
            "periodStartDateDisplay": "11/8/19",
            "periodEndDate": 1574294400000,
            "periodEndDateValue": 1574294400000,
            "periodEndDateInSeconds": 1574294400,
            "periodEndDateDisplay": "11/21/19",
            "discountDurationUnit": "day",
            "discountDurationLength": 14,
            "discountPercent": 100,
            "discountPercentValue": 100,
            "discountPercentDisplay": "100%",
            "unitDiscount": 14.95,
            "unitDiscountDisplay": "$14.95",
            "unitDiscountInPayoutCurrency": 14.95,
            "unitDiscountInPayoutCurrencyDisplay": "$14.95",
            "discountTotal": 14.95,
            "discountTotalDisplay": "$14.95",
            "discountTotalInPayoutCurrency": 14.95,
            "discountTotalInPayoutCurrencyDisplay": "$14.95",
            "total": 0.0,
            "totalDisplay": "$0.00",
            "totalInPayoutCurrency": 0.0,
            "totalInPayoutCurrencyDisplay": "$0.00",
            "price": 14.95,
            "priceDisplay": "$14.95",
            "priceInPayoutCurrency": 14.95,
            "priceInPayoutCurrencyDisplay": "$14.95",
            "priceTotal": 14.95,
            "priceTotalDisplay": "$14.95",
            "priceTotalInPayoutCurrency": 14.95,
            "priceTotalInPayoutCurrencyDisplay": "$14.95",
            "unitPrice": 0.0,
            "unitPriceDisplay": "$0.00",
            "unitPriceInPayoutCurrency": 0.0,
            "unitPriceInPayoutCurrencyDisplay": "$0.00"
        },
        {                                                              // exists only if there is a discount associated with the subscription
            "product": "example-monthly-subscription",
            "type": "discounted",
            "periodStartDate": 1574380800000,
            "periodStartDateValue": 1574380800000,
            "periodStartDateInSeconds": 1574380800,
            "periodStartDateDisplay": "11/22/19",
            "periodEndDate": 1576886400000,
            "periodEndDateValue": 1576886400000,
            "periodEndDateInSeconds": 1576886400,
            "periodEndDateDisplay": "12/21/19",
            "discountIntervalUnit": "month",
            "discountIntervalLength": 1,
            "discountDuration": 1,
            "discountDurationUnit": "month",
            "discountDurationLength": 1,
            "unitDiscount": 3.74,
            "unitDiscountDisplay": "$3.74",
            "unitDiscountInPayoutCurrency": 3.74,
            "unitDiscountInPayoutCurrencyDisplay": "$3.74",
            "discountPercent": 25.0,
            "discountPercentValue": 25.0,
            "discountPercentDisplay": "25%",
            "discountTotal": 3.74,
            "discountTotalDisplay": "$3.74",
            "discountTotalInPayoutCurrency": 3.74,
            "discountTotalInPayoutCurrencyDisplay": "$3.74",
            "price": 14.95,
            "priceDisplay": "$14.95",
            "priceInPayoutCurrency": 14.95,
            "priceInPayoutCurrencyDisplay": "$14.95",
            "priceTotal": 14.95,
            "priceTotalDisplay": "$14.95",
            "priceTotalInPayoutCurrency": 14.95,
            "priceTotalInPayoutCurrencyDisplay": "$14.95",
            "unitPrice": 11.21,
            "unitPriceDisplay": "$11.21",
            "unitPriceInPayoutCurrency": 11.21,
            "unitPriceInPayoutCurrencyDisplay": "$11.21",
            "total": 11.21,
            "totalDisplay": "$11.21",
            "totalInPayoutCurrency": 11.21,
            "totalInPayoutCurrencyDisplay": "$11.21"
        },
        {                                                              // defines the structure of the specific subscription instance; if "type":"discount" is also present, this defines future periods after the discount no longer applies
            "product": "example-monthly-subscription",
            "type": "regular",
            "periodStartDate": 1576972800000,
            "periodStartDateValue": 1576972800000,
            "periodStartDateInSeconds": 1576972800,
            "periodStartDateDisplay": "12/22/19",
            "periodEndDate": null,
            "periodEndDateValue": null,
            "periodEndDateInSeconds": null,
            "periodEndDateDisplay": null,
            "intervalUnit": "month",
            "intervalLength": 1,
            "discountPercent": 0,
            "discountPercentValue": 0,
            "discountPercentDisplay": "0%",
            "discountTotal": 0.0,
            "discountTotalDisplay": "$0.00",
            "discountTotalInPayoutCurrency": 0.0,
            "discountTotalInPayoutCurrencyDisplay": "$0.00",
            "unitDiscount": 0.0,
            "unitDiscountDisplay": "$0.00",
            "unitDiscountInPayoutCurrency": 0.0,
            "unitDiscountInPayoutCurrencyDisplay": "$0.00",
            "price": 14.95,
            "priceDisplay": "$14.95",
            "priceInPayoutCurrency": 14.95,
            "priceInPayoutCurrencyDisplay": "$14.95",
            "priceTotal": 14.95,
            "priceTotalDisplay": "$14.95",
            "priceTotalInPayoutCurrency": 14.95,
            "priceTotalInPayoutCurrencyDisplay": "$14.95",
            "unitPrice": 14.95,
            "unitPriceDisplay": "$14.95",
            "unitPriceInPayoutCurrency": 14.95,
            "unitPriceInPayoutCurrencyDisplay": "$14.95",
            "total": 14.95,
            "totalDisplay": "$14.95",
            "totalInPayoutCurrency": 14.95,
            "totalInPayoutCurrencyDisplay": "$14.95"
        }
    ]
}

Possible Error Response Example

{
  "subscriptions": [
    {
      "action": "subscription.get",
      "subscription": "LiPzVuKnT2Go1WWteQkZtx",                         // subscription ID requested
      "result": "success",                         
      "error": {
        "subscription": "Subscription not found"
      }
  ]
}

Search for Subscriptions by Parameters

Append one or more parameters to the URL to filter the results in multiple manners. Append the first parameter using a question mark (?); use an ampersand (&) for any subsequent parameters.

Parameters and Values

accountId 

  • account id - specify a specific customer account whose subscriptions you want to retrieve

begin

  • date - specify the beginning of a date range in yyyy-mm-dd-format

end

  • date - specify the end of a date range in yyyy-mm-dd format

event

In each event, use begin and end to retrieve the corresponding subscriptions

  • canceled - retrieve subscriptions that were canceled within a given date range
  • charged - retrieve subscriptions that were charged within a given date range; specify a future date range to retrieve subscriptions with upcoming charges
  • created - retrieve subscriptions that were created within a given date range
  • deactivated - retrieve subscriptions that were deactivated within a given date range
  • trialended - retrieve subscriptions for which the trial period ended within a given date range
  • trialstarted - retrieve subscriptions for which the trial period began within a given date range

products

  • product ids - enter one or more product ids to filter the response to include only subscriptions for the specified products; use commas to separate multiple values

scope

  • all - *scope=all is unnecessary; if you do not pass a scope parameter, the API returns both live and test-mode subscriptions by default
  • live - specify scope=live to retrieve only live (non-test-mode) subscriptions
  • test - specify scope=test to retrieve only test-mode (non-live) subscriptions

status

  • active - specify status=active to retrieve only subscriptions that are currently active (note: this includes subscriptions with free trial days that are still in trial status)
  • canceled - specify status=canceled to retrieve only subscriptions that have been canceled but not yet deactivated
  • deactivated - specify status=deactivated to retrieve only subscriptions that have been deactivated
  • overdue - specify status=overdue to retrieve only subscriptions that are currently overdue due to a failed rebill charge
  • trial - specify status=trial to retrieve only subscriptions that are currently in trial status (i.e., via the Free Trial Days feature of the subscription product's pricing configuration)

Example of retrieving only active subscriptions for two specific products where the trial period ended within a given date range

GET /subscriptions?status=active&products=example-monthly-subscription-3,example-monthly-subscription-2,&event=trialended&begin=2018-12-31&end=2019-06-30

Get Subscription Instance Entries

GET /subscriptions/{id1}/entries

Returns an array of order objects, one for each transaction associated with the specified subscription ID. The array includes the original order by which the subscription was created, all subscription billings, and any transactions resulting from prorated subscription edits. There are two ways to identify the original order:

  1. Identify the object with the earliest changed date
  2. Identify the object for which the order.reference does not include a "B" at the end of the string (the "B" denotes a subscription billing).

Response Example

{
  [
    {
     "id": "entryId",
     "beginEntryDate": "yyyy_MM_dd",
     "beginPeriodDate": "yyyy_MM_dd",
     "endPeriodDate": "yyyy_MM_dd",
     "order": {
        // order resource response
      }
    }
  ]
}

Update Existing Subscription Instances

POST /subscriptions

Consider the following information if you change the product on an active subscription to a different subscription product via the API:

Replace Order Tags or Product Attributes

If you want to replace the order tags or product attributes associated with an existing subscription instance, you should update the original order via POST /orders. Posting new order tags or product attributes replaces any existing ones on the order. Future webhook events and API responses about the updated subscription instance will reflect the updated values.

Change a Subscription Instance from Automatic to Manual Renewal:

A subscription instance for which "autoRenew" is currently "true" can be changed to a manual renewal subscription by posting "manualRenew":"true".

Changing a subscription instance from automatic to manual renewal results in the payment method associated with the subscription being permanently deleted. This change cannot be undone. Once you have made this change, the customer must log on to account management and make a payment manually before the next billing date to prevent the subscription from being canceled due to non-payment.

If a customer has multiple subscriptions, subscriptions other than the one(s) associated with the ID specified in the body of your POST are not affected.

If you pass "prorate": true on a subscription change and the automatic prorated billing is declined or fails, the subscription is still updated successfully. The subscription.charge.failed webhook event, and the associated customer-facing email message, are fired, putting the subscription in an overdue state. For more information about proration with subscription upgrades and downgrades, see Prorate When Upgrading or Downgrading Subscription Plans.

{
    "subscriptions": [
    {
        "subscription": "subscription-id",
        "manualRenew": "true"
    }
  ]
}

Change the product for an active subscription:

Any free trial period associated with the new product is ignored. To change the product on a subscription and have the new product's free trial period take effect, you can make this change via the FastSpring App under the Activity menu. Any free trial period associated with the original product continues and is not affected by the update.

{
    "subscriptions": [
    {
        "subscription": "m6s7NWxJQum8GIklEqnHHQ",  // subscription ID to be updated
        "product": "soar-monthly-subscription",    // product path of the new product
        "quantity": 1,                              // quantity of the new product
        "coupons": ["coupon_code"]                // only supports one coupon to be applied, pass an empty array to remove coupon
    }
  ]
}

Change the date, quantity, or applied coupon for an active subscription:

{
  "subscriptions": [
    {
      "subscription": "subscription-id-1",
      "next": 1448496000000 or "yyyy-mm-dd",          // Next charge date
      "end": 1449496000000 or "yyyy-mm-dd" or 0,      // Last charge date will be on or before this date. 0 as unlimited subscription
      "product": "subscription-product-1",
      "quantity": 1,
      "coupons": ["coupon_code"],            // only support one coupon to be applied, pass an empty array to remove coupon
      "prorate": true                        // when implementing proration. *Cannot prorate with updating next charge date
    }, ...
  ]
}

Change the price or discount for an active subscription without changing the product:

The product price of the new product is used for future billings. To change the product on a subscription and leave the original price in effect, you can pass the optional pricing info, as shown below.
The change in price is recorded as an upgrade or downgrade, depending on whether the new price is more or less than the original.

{
     "subscriptions":  [
        {
           "subscription":"subscription-id-1",
           "pricing":{
              "price":10 or {"USD":10}                      // see note below
              "discount":{
                 "type":"percent"/"amount",
                 "percentage"/"amount":5 or {"USD":},       // see note below
                 "duration":2 or "all"
              }
           }
        }
     ]
 }
If the currency is not specified, the currency of the subscription instance will be used. If the currency is specified and differs from the subscription’s currency, the amount will be converted to the subscription’s currency.

Add or edit an addon to an active subscription:

{
  "subscriptions": [
    {
      "subscription": "subscription-id",
      "addons": [
        {
          "product": "add-on-product-being-added-or-updated",
          "quantity": 2,                        // update quantity
          "pricing":{          
            "price": {"USD":10},                 // update pricing            
            "discount":{                        // update discount
              "type":"percent"/"amount",
              "percentage"/"amount":10 or {"USD":5},
              "duration":2 or "all"
            }
          }
        }
      ]
    }
  ]
}

Remove an addon from an active subscription:

{
  "subscriptions": [
    {
      "subscription": "subscription-id",
      "addons": [
        {
          "product": "existing-add-on-product-being-removed",
          "quantity": 0
        }
      ]
    }
  ]
}

Response

{
  "subscriptions": [
    // Successful response
    {
      "subscription": "subscription-id-1",
      "action": "subscription.update",
      "result": "success"
    },

Possible errors

{
      "subscription": "subscription-id-2",
      "action": "subscription.update",
      "result": "error"
      "error": {
        "subscription": "Not found",
        "subscription" : "Subscription is not changeable" // Canceled or ended
        "next": "Date format yyyy-mm-dd or milliseconds",
        "end": "Set 0 for no end date or Date format yyyy-mm-dd or milliseconds",
        "product": "Not found",
        "product": "Not a subscription product",
        "quantity": "Must be greater than zero",
        "coupons": "coupon_code is not a valid coupon: DOES_NOT_EXIST/USE_LIMIT_REACHED/NOT_VALID_TODAY",
        "prorate": "Cannot prorate with updating next period date",
        "prorate": "The order is no longer refundable",
        "prorate": "Can't prorate on-demand subscription",
        "manualRenew": "Subscription is already set to manual renew"
      }
    },...
  ]
}

Cancel Subscription Instances

Cancel after the current period is ended (default behavior):

DELETE /subscriptions/{id1},{id2},{id3},...

Cancel immediately:

DELETE /subscriptions/{id1},{id2},{id3},...?billingPeriod=0

Response Example:

{
  "subscriptions": [
 
    // Successful response
    {
      "subscription": "id1",
      "action": "subscription.cancel",
      "result": "success"
    },
 
    // Possible errors
    {
      "subscription": "id2",
      "action": "subscription.cancel",
      "result": "error"
      "error": {
         "subscription":"The subscription is already canceled",
         "subscription":"The subscription is not active",
         "subscription":"The subscription is in the last billing period",
         "subscription":"Subscription not found",
         "billingPeriod":"billingPeriod must be a number",
         "billingPeriod":"billingPeriod=0 to cancel immediately or billingPeriod=1 to cancel at the next period."
      }
    },
    ...
  ]
}

Reverse a Subscription Cancellation Before Deactivation

To reverse the cancelation of a subscription instance before the subscription's deactivation, pass "deactivation": null. You can pass additional values in the same deactivation request. if the subscription has already reached its deactivation date, it cannot be uncanceled. 

POST /subscriptions  

Request Example

{  
   "subscriptions":[  
      {  
         "subscription":"u5UUIZ7ISk68eT1P9lje_w",
         "deactivation":null
      }
   ]
}

Response Example

{
    "subscriptions": [
    {
        "action": "subscription.update",
        "result": "success",
        "subscription": "u5UUIZ7ISk68eT1P9lje_w"
    },
  
    // Possible errors: attempting to uncancel a subscription that has already been deactivated
    {
            "action": "subscription.update",
            "subscription": "u5UUIZ7ISk68eT1P9lje_w",
            "result": "error",
            "error": {
              "uncancel": "Subscription is not active."
            }
    },
    // Passing a value other than 'null' for "deactivation"
    {
            "action": "subscription.update",
            "subscription": "u5UUIZ7ISk68eT1P9lje_w",
            "result": "error",
            "error": {
              "deactivation": "Pass null to uncancel the subscription"
        }
    }

    // Attempting to uncancel a subscription that has not been canceled:
    {
        "action": "subscription.update",
        "result": "success",
        "subscription": "u5UUIZ7ISk68eT1P9lje_w"        
    }
    ]
}

Rebill Managed Subscription Instances

To change the rebill amount or the subscription contents, update the subscription instance using the corresponding operation above before triggering the rebill.

On-demand billings for a managed subscription are limited on a per-subscription basis to no more than one transaction per day, and no more than four transactions per 30-day period.

To learn more about managed subscriptions, see Managed Subscriptions and Usage-Based Billing.
POST /subscriptions/charge

Request Example

{  
   "subscriptions":[  
      {  
         "subscription":"subscription-id"
      }
   ]
}

Response Example

{
  "subscription": [
    {
      "subscription": "subscription-id-1",
      "action": "subscription.charge",
      "result": "success"
    },
    // Possible errors
    {
      "subscription": "subscription-id-2",
      "action": "subscription.charge",
      "result": "error",
      "error": {
          "subscription": "EXPIRED_CARD",
          "subscription": "Subscription not found",
          "subscription": "Subscription is not active.",
          "subscription": "Only 1 successful rebill per day and 4 successful rebills per 30 days allowed."
      }
    }
  ]
}

Try FastSpring

Get a free account and see why FastSpring is the ecommerce partner of choice for software providers around the world. Try our full-service ecommerce solution today to unlock revenue growth for your online company.