Backend API

Subscriptions allow charging a customer on a recurring basis. A subscription is created when a customer purchases a plan from a product's subscription purchase_option. In addition to the plan, subscriptions can have line items that are charged on a recurring basis or just once—depending on the use case. Orders can be automatically generated every time a subscription is for a physical product, or a product that contains physical bundle_items.

The subscription model represents a recurring order that is associated with a user's account and billed at regular intervals.

Fields
idobjectId

Unique identifier for the subscription.

account_idobjectId

ID of the subscribed customer's account.

accountAccount

Expandable link to the subscribed customer's account.

product_idobjectId

ID of the subscription plan product.

productProduct

Expandable link to the subscription plan product.

activeboolean

Indicates the subscription is currently active.

billingobject

Subscription billing details.

billing_scheduleobject

Billing schedule for subscription plan.

bundle_item_idobjectId

ID of the corresponding bundle item, if applicable.

cancel_at_endboolean

When true, indicates the subscription was or will be canceled at the end of the billing period.

cancel_at_scheduleboolean

Determines whether the subscription is canceled immediately or according to a specified schedule.

cancel_reasonstring

A brief message describing the reason the subscription was canceled, if applicable.

canceledboolean

Indicates the subscription was canceled.

completeboolean

Indicates the subscription plan has completed all cycles.

couponCoupon

Expandable link to the coupon applied to the subscription.

coupon_codestring

Coupon code applied to the subscription. See coupons for details.

coupon_idobjectId

ID of the coupon applied to the subscription.

currencystring

Three-letter ISO currency code in uppercase. Defaults to the store's base currency.

currency_ratefloat

Currency rate used in calculating the fixed amount.

date_canceleddate

Date the subscription was canceled, if applicable.

date_cancel_atdate

Cancel the subscription on the specified date.

date_uncanceleddate

Date when the subscription was un-canceled and restored to active status.

date_createddateauto

Date and time the subscription was created.

date_order_cycle_startdate

Deprecated: use date_order_period_start instead. Start date for the subscription order cycle.

date_order_period_enddate

End date for the subscription order period.

date_order_period_startdate

Start date for the subscription order period.

date_pause_enddate

Date the subscription was unpaused, if applicable.

date_pauseddate

Date the subscription was paused, if applicable.

date_pause_atdate

Pause the subscription on the specified date.

date_payment_expiringdateauto

Date when the customer's current default credit card will expire, used to notify the customer to update their payment information before their card expires.

date_payment_faileddate

Date when the last automated payment failed, if applicable.

date_payment_retrydateauto

When automated payment has failed, this is the date when the system will automatically retry.

date_period_enddateauto

End date of the current billing period.

date_period_startdate

Start date of the current billing period.

date_prorateddate

Date the subscription was last prorated, if applicable. Used to calculate the charge or credit applied when the subscription is prorated.

date_resumeddate

The date a subscription was resumed.

date_trial_enddate

Date the trial period did end in the past or will end in the future. Changing this value can be used to update the billing period of a subscription with or without a trial. For example, to set the monthly billing date to the 1st of the month, update date_trial_end to the first of the next month.

date_trial_startdate

Date the trial period started, if applicable.

date_updateddateauto

Date and time the subscription was last updated.

discount_totalcurrency

Total discount amount.

discountsarray of object

List of all discounts applied to the subscription.

draftboolean

Indicates the subscription is a draft.

grand_totalcurrency

Grand total of the next invoice including line items and taxes.

invoice_totalcurrency

Amount invoiced for the last billing period.

invoicesInvoice

Expandable list of all invoices created by the subscription.

item_discountcurrencyauto

Total discount applied to line items.

item_taxcurrency

Total taxes applied to line items.

item_totalcurrencyauto

Amount invoiced for the last billing period.

itemsarray of object

List of invoice line items added to the subscription. Recurring items are charged repeatedly, otherwise they are charged on the next invoice and then removed from the subscription.

notesstring

Internal admin notes. These are not visible to the customer. This field holds a single block of text. To record a series of notes against the subscription, each attributed to a user, see Notes.

numberstringauto

The order number for the subscription, based on the store order number format.

optionsarray of object

Plan options matching one or more of product.options. When setting this value, specify either option id or name (case-insensitive) to identify the option.

order_idobjectId

ID of the order that originated the subscription, if applicable.

order_item_idobjectId

ID of the line item from the order that originated the subscription, if applicable.

order_scheduleobject

Order schedule for the subscription plan.

orderingboolean

Indicates the subscription is actively placing orders.

ordersOrder

Expandable list of all orders created by the subscription plan. This happens when a plan contains physical products as bundle_items.

paidbooleanauto

Indicates the last invoice was fully paid.

pause_at_endboolean

Determines whether the subscription is paused at the end of the current billing period.

pause_at_scheduleboolean

Determines whether the subscription is paused immediately or according to the schedule.

pause_skip_cyclesint

Number of billing cycles to skip while the subscription is paused.

payment_balancecurrencyauto

Balance of payments on the invoice for the last billing period. A negative number indicates payment is owed, while a positive balance indicates refund is due. Zero balance indicates the invoice was fully paid.

payment_totalcurrency

Total amount of payments for the last billing period.

paymentsPayment

Expandable list of all payments made on behalf of the subscription.

pending_invoicesInvoice

Expandable list of invoices that haven't been fully paid.

plan_idobjectId

ID of the subscription plan.

plan_namestring

Name of the subscription plan.

pricecurrency

Price of the plan. Plan price can be overridden when creating or updating a subscription.

price_totalcurrencyauto

Total price of the plan (price * quantity).

product_discount_eachcurrencyauto

Total discount amount of the subscription plan, divided by quantity.

product_discount_totalcurrencyauto

Total discount applied to the subscription plan.

product_discountsarray of object

List of discounts applied to the subscription plan by coupons.

product_namestring

This field is a copy of the item's product.name.

product_tax_eachcurrencyauto

Total tax amount of the subscription plan, divided by quantity.

product_tax_totalcurrencyauto

Total tax applied to the subscription plan.

product_taxesarray of objectauto

List of tax rules applied to the subscription plan based on tax settings.

proratedboolean

When false, indicates the subscription should not be prorated if the plan product is changed, otherwise a prorated charge or credit will be added at the appropriate time.

quantityint

Quantity of the plan to charge.

recurring_discount_totalcurrencyauto

Total recurring discount applied to the subscription including line items.

recurring_item_discountcurrencyauto

Total discount applied to recurring line items.

recurring_item_taxcurrencyauto

Total taxes applied to recurring line items.

recurring_item_totalcurrencyauto

Sum of all recurring line items before discounts and taxes.

recurring_tax_included_totalcurrencyauto

Total of taxes applied separately from the subscription plan and recurring line items.

recurring_tax_totalcurrencyauto

Total taxes applied to the subscription including recurring line items.

recurring_totalcurrencyauto

Recurring total of the subscription including line items and taxes.

refund_totalcurrency

Total amount of refunds for the last billing period.

refundsRefund

Expandable list of all refunds made on behalf of the subscription.

statusenumauto

Current status of the subscription. Can be pending, active, trial, pastdue, unpaid, canceled, or paid.

Possible enum values:

pendingdraftcompletepausedactivetrialpastdueunpaidcanceledpaid
sub_totalcurrencyauto

Sum of all line items before discounts and taxes.

tax_includedbooleanauto

Indicates the subscription plan price includes taxes.

tax_included_totalcurrencyauto

Total of taxes applied separately from the subscription plan and line items.

tax_totalcurrencyauto

Total taxes applied to the subscription including line items.

taxesarray of objectauto

List of taxes applied to the subscription.

taxes_fixedboolean

When true, taxes are not applied to the subscription. When false, taxes are calculated and applied to the subscription.

trialbooleanauto

Indicates the subscription is in a trial period and the first invoice will be issued on date_trial_end.

unpaidbooleanauto

Indicates the last invoice was marked as unpaid. This occurs automatically after all payment attempts are exhausted, as configured in subscription settings.

variantProduct variant

Expandable link to the subscription plan variant, if applicable.

variant_idobjectId

ID of the subscription plan variant, if applicable.

variant_namestring

Name of the variant.

Create a new subscription to bill a customer for a product on a recurring schedule.

trial_days or date_trial_end being set means no invoices will be created; otherwise, the customer's default billing card will be charged immediately. If the charge fails, this will return a validation error describing the failure and an invoice will not be created. If the charge succeeds, an invoice will be created and paid by the charge immediately.

Arguments
account_idobjectIdrequired

ID of the subscribed customer's account.

product_idobjectIdrequired

ID of the subscription plan product. When changing the subscription product, the difference in price is prorated by adding a line item. The customer will be charged or credited the difference on their next invoice.

billingobject

Subscription billing details.

coupon_codestring

Coupon code applied to the subscription. See coupons for details.

optionsarray of object

Plan options matching one or more of `product.options`. When setting this value, specify either option `id` or `name` (case-insensitive) to identify the option.

quantityint

Quantity of the plan to charge.

POST/subscriptions
const { swell } = require('swell-node');
swell.init('store-id', 'secret-key');

await swell.post('/subscriptions', {
  billing: {
    first_name: 'John',
    last_name: 'Doe',
    address1: '123 Main Street',
    address2: 'Apt. 100',
    city: 'Anytown',
    state: 'CA',
    zip: 12345,
    country: 'US',
    phone: '123-456-7890',
    method: 'credit_card'
  },
  product_id: '62b1e30767145000197b2bbf',
  product_name: 'Skooma',
  variant_id: '62b1e30767145000197b2bc0',
  price: 75,
  quantity: 1,
  price_total: 75,
  options: [
    {
      id: 'Monthly',
      value: 99
    }
  ]
});
The subscription model
{
  "id": "60f199509111e7000000009a",
  "account_id": "60f199509111e700000000a9",
  "product_id": "60f199509111e700000000aa",
  "active": true,
  "cancel_at_end": false,
  "cancel_reason": null,
  "canceled": false,
  "currency": "USD",
  "date_canceled": null,
  "date_created": "2021-07-16T14:36:00.483Z",
  "date_payment_expiring": "2031-01-01T08:00:00.000Z",
  "date_payment_failed": null,
  "date_payment_retry": null,
  "date_period_end": "2019-03-24T04:28:12.962Z",
  "date_period_start": "2019-02-24T04:28:12.962Z",
  "date_trial_end": "2019-02-24T04:28:12.962Z",
  "date_trial_start": "2019-01-24T04:28:12.962Z",
  "date_updated": "2021-07-16T14:36:00.483Z",
  "discount_total": 0,
  "discounts": null,
  "grand_total": 148.8946,
  "interval": "monthly",
  "interval_count": 1,
  "invoice_total": 99,
  "item_discount": 0,
  "item_tax": 0,
  "item_total": 49.8946,
  "items": [
    {
      "id": "5ca537326a0ec32a521139dd",
      "date_created": "2019-03-24T22:56:33.467Z",
      "description": "Remaining time on Example Subscription",
      "proration": true,
      "quantity": 1,
      "price": 49.8946,
      "price_total": 49.8946,
      "recurring_price": 0,
      "recurring_price_total": 0,
      "discount_total": 0,
      "discount_each": 0,
      "recurring_discount_total": 0,
      "recurring_discount_each": 0,
      "tax_total": 0,
      "tax_each": 0,
      "recurring_tax_total": 0,
      "recurring_tax_each": 0
    }
  ],
  "notes": null,
  "options": [
    {
      "id": "5becb84fac207653a4816ee5",
      "name": "Plan",
      "value": "Monthly"
    }
  ],
  "order_id": "60f199509111e7000000009d",
  "order_item_id": "60f199509111e7000000009e",
  "paid": true,
  "payment_balance": 0,
  "payment_total": 99,
  "price": 99,
  "price_total": 99,
  "product_discount_each": 0,
  "product_discount_total": 0,
  "product_discounts": null,
  "product_tax_each": 0,
  "product_tax_total": 0,
  "product_taxes": null,
  "quantity": 1,
  "recurring_discount_total": 0,
  "recurring_item_discount": 0,
  "recurring_item_tax": 0,
  "recurring_item_total": 0,
  "recurring_tax_included_total": 0,
  "recurring_tax_total": 0,
  "recurring_total": 99,
  "refund_total": 0,
  "status": "active",
  "sub_total": 148.8946,
  "tax_included_total": 0,
  "tax_total": 0,
  "taxes": null,
  "trial": false,
  "trial_days": 14,
  "unpaid": false,
  "variant_id": "60f199509111e7000000009f"
}

Retrieve an existing subscription using the ID that was returned when created.

Arguments
idobjectIdrequired

The id of the subscription to retrieve.

GET/subscriptions/:id
const { swell } = require('swell-node');
swell.init('store-id', 'secret-key');

await swell.get('/subscriptions/60f199509111e700000000b1');
The subscription model
{
  "id": "60f199509111e700000000b1",
  "account_id": "60f199509111e700000000b2",
  "product_id": "60f199509111e700000000b3",
  "active": true,
  "cancel_at_end": false,
  "cancel_reason": null,
  "canceled": false,
  "currency": "USD",
  "date_canceled": null,
  "date_created": "2021-07-16T14:36:00.483Z",
  "date_payment_expiring": "2031-01-01T08:00:00.000Z",
  "date_payment_failed": null,
  "date_payment_retry": null,
  "date_period_end": "2019-03-24T04:28:12.962Z",
  "date_period_start": "2019-02-24T04:28:12.962Z",
  "date_trial_end": "2019-02-24T04:28:12.962Z",
  "date_trial_start": "2019-01-24T04:28:12.962Z",
  "date_updated": "2021-07-16T14:36:00.483Z",
  "discount_total": 0,
  "discounts": null,
  "grand_total": 148.8946,
  "interval": "monthly",
  "interval_count": 1,
  "invoice_total": 99,
  "item_discount": 0,
  "item_tax": 0,
  "item_total": 49.8946,
  "items": [
    {
      "id": "5ca537326a0ec32a521139dd",
      "date_created": "2019-03-24T22:56:33.467Z",
      "description": "Remaining time on Example Subscription",
      "proration": true,
      "quantity": 1,
      "price": 49.8946,
      "price_total": 49.8946,
      "recurring_price": 0,
      "recurring_price_total": 0,
      "discount_total": 0,
      "discount_each": 0,
      "recurring_discount_total": 0,
      "recurring_discount_each": 0,
      "tax_total": 0,
      "tax_each": 0,
      "recurring_tax_total": 0,
      "recurring_tax_each": 0
    }
  ],
  "notes": null,
  "options": [
    {
      "id": "5becb84fac207653a4816ee5",
      "name": "Plan",
      "value": "Monthly"
    }
  ],
  "order_id": "60f199509111e7000000009d",
  "order_item_id": "60f199509111e7000000009e",
  "paid": true,
  "payment_balance": 0,
  "payment_total": 99,
  "price": 99,
  "price_total": 99,
  "product_discount_each": 0,
  "product_discount_total": 0,
  "product_discounts": null,
  "product_tax_each": 0,
  "product_tax_total": 0,
  "product_taxes": null,
  "quantity": 1,
  "recurring_discount_total": 0,
  "recurring_item_discount": 0,
  "recurring_item_tax": 0,
  "recurring_item_total": 0,
  "recurring_tax_included_total": 0,
  "recurring_tax_total": 0,
  "recurring_total": 99,
  "refund_total": 0,
  "status": "active",
  "sub_total": 148.8946,
  "tax_included_total": 0,
  "tax_total": 0,
  "taxes": null,
  "trial": false,
  "trial_days": 14,
  "unpaid": false,
  "variant_id": "60f199509111e7000000009f"
}

Update an existing subscription using the ID that was returned when created. Updating performs a merge operation. To explicitly override values such as arrays, use the $set operator.

Arguments
idobjectIdrequired

Unique identifier for the subscription.

PUT/subscriptions/:id
const { swell } = require('swell-node');
swell.init('store-id', 'secret-key');

await swell.put('/subscriptions/{id}', {
  id: '60f199509111e700000000b1',
  quantity: 2,
  coupon_code: '10OFF'
});
The subscription model
{
  "id": "60f199509111e7000000009a",
  "account_id": "60f199509111e700000000a0",
  "product_id": "60f199509111e700000000a1",
  "active": true,
  "cancel_at_end": false,
  "cancel_reason": null,
  "canceled": false,
  "currency": "USD",
  "date_canceled": null,
  "date_created": "2021-07-16T14:36:00.483Z",
  "date_payment_expiring": "2031-01-01T08:00:00.000Z",
  "date_payment_failed": null,
  "date_payment_retry": null,
  "date_period_end": "2019-03-24T04:28:12.962Z",
  "date_period_start": "2019-02-24T04:28:12.962Z",
  "date_trial_end": "2019-02-24T04:28:12.962Z",
  "date_trial_start": "2019-01-24T04:28:12.962Z",
  "date_updated": "2021-07-16T14:36:00.483Z",
  "discount_total": 0,
  "discounts": null,
  "grand_total": 148.8946,
  "interval": "monthly",
  "interval_count": 1,
  "invoice_total": 99,
  "item_discount": 0,
  "item_tax": 0,
  "item_total": 49.8946,
  "items": [
    {
      "id": "5ca537326a0ec32a521139dd",
      "date_created": "2019-03-24T22:56:33.467Z",
      "description": "Remaining time on Skooma Subscription",
      "proration": true,
      "quantity": 1,
      "price": 49.8946,
      "price_total": 49.8946,
      "recurring_price": 0,
      "recurring_price_total": 0,
      "discount_total": 0,
      "discount_each": 0,
      "recurring_discount_total": 0,
      "recurring_discount_each": 0,
      "tax_total": 0,
      "tax_each": 0,
      "recurring_tax_total": 0,
      "recurring_tax_each": 0
    }
  ],
  "notes": null,
  "options": [
    {
      "id": "5becb84fac207653a4816ee5",
      "name": "Skooma delivery",
      "value": "Monthly"
    }
  ],
  "order_id": "60f199509111e7000000009d",
  "order_item_id": "60f199509111e7000000009e",
  "paid": true,
  "payment_balance": 0,
  "payment_total": 99,
  "price": 99,
  "price_total": 99,
  "product_discount_each": 0,
  "product_discount_total": 0,
  "product_discounts": null,
  "product_tax_each": 0,
  "product_tax_total": 0,
  "product_taxes": null,
  "quantity": 1,
  "recurring_discount_total": 0,
  "recurring_item_discount": 0,
  "recurring_item_tax": 0,
  "recurring_item_total": 0,
  "recurring_tax_included_total": 0,
  "recurring_tax_total": 0,
  "recurring_total": 99,
  "refund_total": 0,
  "status": "active",
  "sub_total": 148.8946,
  "tax_included_total": 0,
  "tax_total": 0,
  "taxes": null,
  "trial": false,
  "trial_days": 14,
  "unpaid": false,
  "variant_id": "60f199509111e7000000009f"
}

A subscription can be paused or canceled immediately, or scheduled to take effect on a future date. Both are driven by updating the subscription, and both distinguish intent from effect: canceled and paused record the intent, while active records whether the subscription is still running.

Set canceled to true with cancel_at_end set to false. When neither cancel_at_end nor cancel_at_schedule is already set on the subscription, sending canceled on its own cancels immediately too. The subscription is left with canceled: true, active: false, and date_canceled set to the current time.

Cancel a subscription immediately
const { swell } = require('swell-node');
swell.init('store-id', 'secret-key');

await swell.put('/subscriptions/{id}', {
  id: '5c15505200c7d14d851e510f',
  canceled: true,
  cancel_at_end: false
});

Send canceled together with cancel_at_schedule, or set the schedule first and confirm with canceled in a second request. The subscription is then canceled: true and active: true, with the calculated date in date_cancel_at. It keeps generating orders and invoices until that date, at which point active becomes false and date_canceled is set.

Schedule a cancellation
// Cancel on the next billing date
await swell.put('/subscriptions/{id}', {
  id: '5c15505200c7d14d851e510f',
  canceled: true,
  cancel_at_schedule: 'billing'
});

// Or cancel on a specific date
await swell.put('/subscriptions/{id}', {
  id: '5c15505200c7d14d851e510f',
  canceled: true,
  cancel_at_schedule: '2027-01-31T00:00:00.000Z'
});

The same values apply to cancel_at_schedule and pause_at_schedule.

  • billing: the end of the current billing period, from date_period_end. During a trial, date_trial_end is used instead.
  • order: the end of the current order period, from date_order_period_end.
  • first: whichever of the two comes first.
  • last: whichever of the two comes last.
  • An ISO 8601 date string: that exact date.

first and last both fall back to the billing period when the subscription has no order period. A value that cannot be read as a date, or a date that is not in the future, is ignored and no schedule is set.

Setting canceled to false reverses a cancellation whether it is still scheduled or already complete. A pending cancellation is dropped and date_cancel_at is cleared. A subscription that had already been canceled returns to active: true with date_canceled cleared, date_uncanceled set, and a new billing cycle starting immediately. If the most recent payment attempt had failed, it is retried.

Undo a cancellation
await swell.put('/subscriptions/{id}', {
  id: '5c15505200c7d14d851e510f',
  canceled: false
});

Pausing mirrors cancellation. Send paused: true with pause_at_end: false to pause immediately, which sets active: false and records date_paused. Send it with pause_at_schedule to schedule one, which keeps the subscription active and stores the calculated date in date_pause_at. Orders and invoices continue until that date.

Sending paused: true with pause_at_end: true is treated as pause_at_schedule: 'first'.

Pause a subscription
// Pause now
await swell.put('/subscriptions/{id}', {
  id: '5c15505200c7d14d851e510f',
  paused: true,
  pause_at_end: false
});

// Pause at the end of the current billing period
await swell.put('/subscriptions/{id}', {
  id: '5c15505200c7d14d851e510f',
  paused: true,
  pause_at_schedule: 'billing'
});

Setting paused to false both cancels a pause that has not taken effect yet, clearing date_pause_at, and resumes a subscription that is already paused. Resuming always begins a new billing and ordering period, and an invoice or order is generated at that moment.

A resume can also be dated ahead. Set date_pause_end to resume at a specific time, or set pause_skip_cycles to resume after a number of cycles. Skipped cycles are counted from the current period end, following the same pause_at_schedule the pause used, and the result is stored in date_pause_end. A date_pause_end you provide takes precedence over pause_skip_cycles.

Resume a subscription
// Resume now, or drop a pause that hasn't taken effect
await swell.put('/subscriptions/{id}', {
  id: '5c15505200c7d14d851e510f',
  paused: false
});

// Resume two cycles after the current period ends
await swell.put('/subscriptions/{id}', {
  id: '5c15505200c7d14d851e510f',
  paused: false,
  pause_skip_cycles: 2
});

// Resume on a specific date
await swell.put('/subscriptions/{id}', {
  id: '5c15505200c7d14d851e510f',
  date_pause_end: '2027-03-01T00:00:00.000Z'
});
Statecanceled / pausedactiveOrders and invoices
ActivefalsetrueGenerated normally
Scheduled, waitingtruetrueContinue until the scheduled date
Canceled or paused immediatelytruefalseStopped
Stopping at period end, waitingtruetrueStopped

A subscription with canceled: true and active: true is therefore not yet finished. Read active to tell whether a subscription is still running, and date_cancel_at or date_pause_at to tell when it will stop.

Sending canceled: true with cancel_at_end: true, and no schedule set, stops orders and invoices right away while leaving active: true until the billing period ends. Sending paused: true with no scheduling fields behaves the same way for pausing. When cancel_at_schedule is present it takes precedence over cancel_at_end.

Return a list of subscriptions.

Fields
expandstring

Expand link fields and child collections by using the expand argument.

  • For example, expand=account would return a related customer account if one exists.

When the field represents a collection, you can specify the query limit.

  • For example, expand=variants:10 would return up to 10 records of the variants collection.

See expanding for more details.

fieldsstring

Returns only the specified fields in the result.

  • For example fields=name,slug would return only the fields name and slug in the response.

Supports nested object and array fields using dot-notation.

  • For example, items.product_id. The product id is always returned.
includeobject

Include one or more arbitrary queries in the response which are potentially related to the main query.

See including for more details.

limitint

Limit the number of records returned, ranging between 1 and 1000. Defaults to 15.

pageint

The page number of results to return given the specified or default limit.

searchstring

A text search is performed using the search argument. Searchable fields are defined by the model.

  • For example, search=red would return records containing the word "red" anywhere in the defined text fields.

See searching for more details.

sortstring

Expression to sort results by using a format similar to a SQL sort statement.

  • For example, sort=name asc would return records sorted by name ascending.

See sorting for more details.

whereobject

An object with criteria to filter the result.

  • For example, active=true would return records containing a field active with the value true.

It's also possible to use query operators, for example, $eq, $ne, $gt, and more.

See querying for more details.

GET/subscriptions
const { swell } = require('swell-node');
swell.init('store-id', 'secret-key');

await swell.get('/subscriptions', {
  limit: 25,
  page: 1
});
The subscription model
{
  "count": 54,
  "page_count": 25,
  "page": 1,
  "results": [
    {
      "currency": "USD",
      "account_id": "62acbadb3edcc300128d4178",
      "billing": {
        "first_name": "Wandering",
        "last_name": "Traveller",
        "name": "Wandering Traveller",
        "card": {
          "brand": "Visa",
          "last4": "4242",
          "exp_month": 7,
          "exp_year": 2024,
          "token": "card_s4FQeFxdb8ErigKVxS9cR3js"
        },
        "method": "card",
        "account_card_id": "62b2117ed9dce40019a6587b",
        "use_account": true
      },
      "shipping": {
        "first_name": "Wandering",
        "last_name": "Traveller",
        "company": "Urbul gro-Orkulg's crew",
        "address1": "1234 City Isle",
        "address2": "Cyrodiil",
        "city": "Heartlands",
        "country": "US",
        "name": "Wandering Traveller",
        "account_address_id": "62acbbe0d69a3b0012c7eae5",
        "use_account": true
      },
      "order_id": "62b9ee09e342a30012319601",
      "order_item_id": "62b9f12391fed80013478224",
      "product_id": "62b1e30767145000197b2bbf",
      "product_name": "Skooma",
      "variant_id": null,
      "options": null,
      "price": 75,
      "quantity": 1,
      "billing_schedule": {
        "interval": "monthly",
        "interval_count": 1,
        "limit": null,
        "trial_days": 0
      },
      "order_schedule": null,
      "coupon_code": null,
      "discounts": [],
      "items": [],
      "price_total": 75,
      "payment_balance": -81,
      "trial": false,
      "paid": false,
      "unpaid": true,
      "sub_total": 75,
      "grand_total": 75,
      "recurring_total": 75,
      "ordering": true,
      "plan_id": null,
      "plan_name": null,
      "active": true,
      "date_period_start": "2023-08-27T18:14:53.861Z",
      "date_period_end": "2023-09-27T18:14:53.861Z",
      "test": true,
      "date_created": "2022-06-27T18:14:53.887Z",
      "status": "unpaid",
      "number": "100004",
      "date_updated": "2023-08-27T18:15:01.146Z",
      "invoices": "62b9f1d191fed8001347822a",
      "invoice_total": 81,
      "payment_total": 0,
      "date_payment_expiring": "2024-07-01T00:00:00.000Z",
      "date_payment_failed": "2023-01-27T18:15:03.450Z",
      "payment_error": "Unable to complete payment, invoice not found",
      "retry_resolve": "unpaid",
      "id": "62b9f39d8b9a9a00133b7784"
    },
    . . . 

Delete a subscription permanently.

Arguments
idobjectIdrequired

The id of the subscription to delete.

DELETE/subscriptions/:id
const { swell } = require('swell-node');
swell.init('store-id', 'secret-key');

await swell.delete('/subscriptions/60f199509111e700000000c7');
The subscription model
{
  "id": "60f199509111e700000000c7",
  "account_id": "60f199509111e700000000c8",
  "product_id": "60f199509111e700000000c9",
  "active": true,
  "cancel_at_end": false,
  "cancel_reason": null,
  "canceled": false,
  "currency": "USD",
  "date_canceled": null,
  "date_created": "2021-07-16T14:36:00.483Z",
  "date_payment_expiring": "2031-01-01T08:00:00.000Z",
  "date_payment_failed": null,
  "date_payment_retry": null,
  "date_period_end": "2019-03-24T04:28:12.962Z",
  "date_period_start": "2019-02-24T04:28:12.962Z",
  "date_trial_end": "2019-02-24T04:28:12.962Z",
  "date_trial_start": "2019-01-24T04:28:12.962Z",
  "date_updated": "2021-07-16T14:36:00.483Z",
  "discount_total": 0,
  "discounts": null,
  "grand_total": 148.8946,
  "interval": "monthly",
  "interval_count": 1,
  "invoice_total": 99,
  "item_discount": 0,
  "item_tax": 0,
  "item_total": 49.8946,
  "items": [
    {
      "id": "5ca537326a0ec32a521139dd",
      "date_created": "2019-03-24T22:56:33.467Z",
      "description": "Remaining time on Example Subscription",
      "proration": true,
      "quantity": 1,
      "price": 49.8946,
      "price_total": 49.8946,
      "recurring_price": 0,
      "recurring_price_total": 0,
      "discount_total": 0,
      "discount_each": 0,
      "recurring_discount_total": 0,
      "recurring_discount_each": 0,
      "tax_total": 0,
      "tax_each": 0,
      "recurring_tax_total": 0,
      "recurring_tax_each": 0
    }
  ],
  "notes": null,
  "options": [
    {
      "id": "5becb84fac207653a4816ee5",
      "name": "Plan",
      "value": "Monthly"
    }
  ],
  "order_id": "60f199509111e7000000009d",
  "order_item_id": "60f199509111e7000000009e",
  "paid": true,
  "payment_balance": 0,
  "payment_total": 99,
  "price": 99,
  "price_total": 99,
  "product_discount_each": 0,
  "product_discount_total": 0,
  "product_discounts": null,
  "product_tax_each": 0,
  "product_tax_total": 0,
  "product_taxes": null,
  "quantity": 1,
  "recurring_discount_total": 0,
  "recurring_item_discount": 0,
  "recurring_item_tax": 0,
  "recurring_item_total": 0,
  "recurring_tax_included_total": 0,
  "recurring_tax_total": 0,
  "recurring_total": 99,
  "refund_total": 0,
  "status": "active",
  "sub_total": 148.8946,
  "tax_included_total": 0,
  "tax_total": 0,
  "taxes": null,
  "trial": false,
  "trial_days": 14,
  "unpaid": false,
  "variant_id": "60f199509111e7000000009f"
}