You are viewing the documentation for the older version of our API (V1). Click here for information on upgrading to the latest version (V2).

Subscription represents the recurring items a customer has subscribed to. The recurring items can be - plan, addons. It may also contain the discount items like coupons.

Subscriptions are invoiced at the start of every term based on the recurring items and charged immediately against the customer's credit card if 'auto_collection' is turned 'on', otherwise the resulting invoice will be created as 'Payment Due'.

Sample subscription [ JSON ]

{ "activated_at": 1517506669, "created_at": 1517506669, "current_term_end": 1519925869, "current_term_start": 1517506669, "due_invoices_count": 0, "has_scheduled_changes": false, "id": "__test__5SK0bLNFRFuBvJV6x", "object": "subscription", "plan_id": "no_trial", "plan_quantity": 1, "started_at": 1517506669, "status": "active" }

Model Class

com.chargebee.models.Subscription
id
A unique and immutable identifier for the subscription. If not provided, it is autogenerated.
string, max chars=50
startDate
Applicable only for 'future' subscriptions. The scheduled start time of the subscription.
optional, timestamp(UTC) in seconds
trialEnd
End of the trial period for the subscription. Presence of this value for 'future' subscription implies the subscription will go into 'in_trial' state when it starts.
optional, timestamp(UTC) in seconds
remainingBillingCycles
  • When the subscription is not on a contract term: this value is the number of billing cycles remaining after the current cycle, at the end of which, the subscription cancels.
  • When the subscription is on a contract term: this value is the number of billing cycles remaining in the contract term after the current billing cycle.
.
optional, integer, min=0
poNumber
Purchase order number for this subscription.
optional, string, max chars=100
status
Current state of the subscription.
enumerated string
Possible values are
FUTUREThe subscription is scheduled to start at a future date.IN_TRIALThe subscription is in trial.ACTIVEThe subscription is active and will be charged for automatically based on the items in it.NON_RENEWINGThe subscription will be canceled at the end of the current term.CANCELLEDThe subscription has been canceled and is no longer in service.
trialStart
Start of the trial period for the subscription. Presence of this value for future subscription implies the subscription will go into in_trial state when it starts.
optional, timestamp(UTC) in seconds
currentTermStart
Start of the current billing period of the subscription.
optional, timestamp(UTC) in seconds
currentTermEnd
End of the current billing period of the subscription. Subscription is renewed immediately after this.
optional, timestamp(UTC) in seconds
createdAt
The time at which the subscription was created.
optional, timestamp(UTC) in seconds
startedAt
Time at which the subscription was started. Is null for futuresubscriptions as it is yet to be started.
optional, timestamp(UTC) in seconds
activatedAt
Time at which the subscription status last changed to  active. For example, this value is updated when an in_trial or  cancelled subscription activates.
optional, timestamp(UTC) in seconds
cancelledAt
Time at which subscription was cancelled or is set to be cancelled.
optional, timestamp(UTC) in seconds
cancelReason
The reason for canceling the subscription. Set by Chargebee automatically.
optional, enumerated string
Possible values are
NOT_PAIDNot Paid.NO_CARDNo Card.FRAUD_REVIEW_FAILEDFraud Review Failed.NON_COMPLIANT_EU_CUSTOMERNon Compliant EU Customer.
createdFromIp
The IP address of the user. Used primarly in Refersion integration. Refersion uses this field to track/log affiliate subscription.
optional, string, max chars=50
hasScheduledChanges
If true, there are subscription changes scheduled on next renewal.
boolean, default=false
dueInvoicesCount
Total number of invoices that are due for payment against the subscription.
Note: Not supported if consolidated invoicing is enabled or when the subscription is for the customer who is in hierarchy and the parent of this customer owns and pays for the invoices of the subscription.
optional, integer
dueSince
Time since this subscription has unpaid invoices.
Note: Not supported if consolidated invoicing is enabled or when the subscription is for the customer who is in hierarchy and the parent of this customer owns and pays for the invoices of the subscription.
optional, timestamp(UTC) in seconds
totalDues
Total invoice due amount for this subscription. The value depends on the type of currency.
Note: Not supported if consolidated invoicing is enabled or when the subscription is for the customer who is in hierarchy and the parent of this customer owns and pays for the invoices of the subscription.
optional, in cents, min=0
invoiceNotes
A customer-facing note added to all invoices associated with this subscription. This note is one among all the notes displayed on the invoice PDF.
optional, string, max chars=2000
metadata
A set of key-value pairs stored as additional information for the subscription. Learn more.
optional, jsonobject
List of coupons for this subscription.
optional, list of coupon
Coupon attributes
couponId
Used to uniquely identify the coupon.
string, max chars=100
applyTill
The date till when the coupon can be applied. Applicable for limited_period coupons only.
optional, timestamp(UTC) in seconds
appliedCount
Number of times this coupon has been applied for this subscription.
integer, default=0
couponCode
The coupon code used to redeem the coupon. Will be present only when associated code for a coupon is used.
optional, string, max chars=50
shippingAddress
Show attributes[+]
Shipping address for the subscription.
optional, shipping_address
Shipping address attributes
firstName
The first name of the contact.
optional, string, max chars=150
lastName
The last name of the contact.
optional, string, max chars=150
email
The email address.
optional, string, max chars=70
company
The company name.
optional, string, max chars=250
phone
The phone number.
optional, string, max chars=50
line1
Address line 1.
optional, string, max chars=180
line2
Address line 2.
optional, string, max chars=150
line3
Address line 3.
optional, string, max chars=150
city
The name of the city.
optional, string, max chars=50
stateCode
The ISO 3166-2 state/province code without the country prefix. Currently supported for USA, Canada and India. For instance, for Arizona (USA), set state_code as AZ (not US-AZ). For Tamil Nadu (India), set as TN (not IN-TN). For British Columbia (Canada), set as BC (not CA-BC).
optional, string, max chars=50
state
The state/province name.
optional, string, max chars=50
country
2-letter, ISO 3166 alpha-2 country code.

If you have enabled EU VAT in 2021 or have manually enabled the Brexit configuration, then XI (the code for United Kingdom – Northern Ireland) is available as an option.
optional, string, max chars=50
zip
Zip or Postal code.
optional, string, max chars=20
Returns a list of subscriptions meeting all the conditions specified in the filter parameters below.
Sample Codes
import java.io.IOException;
import com.chargebee.*;
import com.chargebee.models.*;
import com.chargebee.models.enums.*;

public class Sample{
  
  public static void main(String args[]) throws IOException{
    
    

Environment.configure("{site}","{site_api_key}");
ListResult result = Subscription.list()
	.limit(2)
	.request();
for(ListResult.Entry entry:result) {
	Subscription subscription = entry.subscription();
	Customer customer = entry.customer();
	Card card = entry.card();
}
    System.out.println(result);
  }
}
copy full code
copy snippet

Environment.configure("{site}","{site_api_key}");
ListResult result = Subscription.list()
	.limit(2)
	.request();
for(ListResult.Entry entry:result) {
	Subscription subscription = entry.subscription();
	Customer customer = entry.customer();
	Card card = entry.card();
}

Sample Result [ JSON ]

Show more...
{ "list": [ { "card": { "card_type": "american_express", "customer_id": "__test__5SK0bLNFRFuBvJV6x", "expiry_month": 12, "expiry_year": 2019, "gateway": "chargebee", "iin": "378282", "last4": "0005", "masked_number": "***********0005", "object": "card", "status": "valid" }, "customer": { "account_credits": 0, "allow_direct_debit": false, "auto_collection": "on", "card_status": "valid", "created_at": 1517506669, "excess_payments": 0, "id": "__test__5SK0bLNFRFuBvJV6x", "object": "customer", "payment_method": { "gateway": "chargebee", "object": "payment_method", "reference_id": "tok___test__5SK0bLNFRFuBvJm6y", "status": "valid", "type": "card" }, "refundable_credits": 0, "taxability": "taxable" }, "subscription": { "activated_at": 1517506669, "created_at": 1517506669, "current_term_end": 1519925869, "current_term_start": 1517506669, "due_invoices_count": 0, "has_scheduled_changes": false, "id": "__test__5SK0bLNFRFuBvJV6x", "object": "subscription", "plan_id": "no_trial", "plan_quantity": 1, "started_at": 1517506669, "status": "active" } }, {..} ], "next_offset": "[\"1517506669000\",\"182000000066\"]" }

Method

Subscription.list()
limit(val)
The number of resources to be returned.
optional, integer, default=10, min=1, max=100
offset(val)
Determines your position in the list for pagination. To ensure that the next page is retrieved correctly, always set offset to the value of next_offset obtained in the previous iteration of the API call.
optional, string, max chars=1000
Resource object representing subscription.
always returned
Resource object representing customer.
always returned
Resource object representing card.
optional
next_offset
This attribute is returned only if more resources are present. To fetch the next set of resources use this value for the input parameter “offset”.
optional, string, max chars=1000
Retrieves the list of subscriptions for a customer sorted by recent created ones on top.
Sample Codes
import java.io.IOException;
import com.chargebee.*;
import com.chargebee.models.*;
import com.chargebee.models.enums.*;

public class Sample{
  
  public static void main(String args[]) throws IOException{
    
    

Environment.configure("{site}","{site_api_key}");
ListResult result = Subscription.subscriptionsForCustomer("__test__5SK0bLNFRFuBvQU7D")
	.limit(3)
	.request();
for(ListResult.Entry entry:result) {
	Subscription subscription = entry.subscription();
}
    System.out.println(result);
  }
}
copy full code
copy snippet

Environment.configure("{site}","{site_api_key}");
ListResult result = Subscription.subscriptionsForCustomer("__test__5SK0bLNFRFuBvQU7D")
	.limit(3)
	.request();
for(ListResult.Entry entry:result) {
	Subscription subscription = entry.subscription();
}

Sample Result [ JSON ]

Show more...
{"list": [ { "customer": { "account_credits": 0, "allow_direct_debit": false, "auto_collection": "off", "card_status": "no_card", "created_at": 1517506670, "excess_payments": 0, "id": "__test__5SK0bLNFRFuBvQU7D", "object": "customer", "refundable_credits": 0, "taxability": "taxable" }, "subscription": { "activated_at": 1517506670, "created_at": 1517506670, "current_term_end": 1519925870, "current_term_start": 1517506670, "due_invoices_count": 1, "due_since": 1517506670, "has_scheduled_changes": false, "id": "__test__5SK0bLNFRFuBvSQ7J", "object": "subscription", "plan_id": "no_trial", "plan_quantity": 1, "started_at": 1517506670, "status": "active", "total_dues": 895 } }, {..} ]}

Method

Subscription.subscriptionsForCustomer(<customer_id>)
limit(val)
The number of resources to be returned.
optional, integer, default=10, min=1, max=100
offset(val)
Determines your position in the list for pagination. To ensure that the next page is retrieved correctly, always set offset to the value of next_offset obtained in the previous iteration of the API call.
optional, string, max chars=1000
Resource object representing subscription.
always returned
next_offset
This attribute is returned only if more resources are present. To fetch the next set of resources use this value for the input parameter “offset”.
optional, string, max chars=1000
Retrieves a subscription.
Sample Codes
import java.io.IOException;
import com.chargebee.*;
import com.chargebee.models.*;
import com.chargebee.models.enums.*;

public class Sample{
  
  public static void main(String args[]) throws IOException{
    
    

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.retrieve("__test__5SK0bLNFRFuBwQA9L").request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();
    System.out.println(result);
  }
}
copy full code
copy snippet

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.retrieve("__test__5SK0bLNFRFuBwQA9L").request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();

Sample Result [ JSON ]

Show more...
{ "customer": { "account_credits": 0, "allow_direct_debit": false, "auto_collection": "off", "card_status": "no_card", "created_at": 1517506674, "excess_payments": 0, "id": "__test__5SK0bLNFRFuBwQA9L", "object": "customer", "refundable_credits": 0, "taxability": "taxable" }, "subscription": { "activated_at": 1517506674, "created_at": 1517506674, "current_term_end": 1519925874, "current_term_start": 1517506674, "due_invoices_count": 1, "due_since": 1517506674, "has_scheduled_changes": false, "id": "__test__5SK0bLNFRFuBwQA9L", "object": "subscription", "plan_id": "no_trial", "plan_quantity": 1, "started_at": 1517506674, "status": "active", "total_dues": 895 } }

Method

Subscription.retrieve(<subscription_id>)
Resource object representing subscription.
always returned
Resource object representing customer.
always returned
Resource object representing card.
optional

Retrieves a subscription with the scheduled changes applied.
Note: Only the following attributes are changed

  • plan_id
  • plan_quantity
  • remaining_billing_cycles
  • addons
  • coupons
Other attributes such as status, next_billing_at are not changed and will reflect the current subscription values.

Sample Codes
import java.io.IOException;
import com.chargebee.*;
import com.chargebee.models.*;
import com.chargebee.models.enums.*;

public class Sample{
  
  public static void main(String args[]) throws IOException{
    
    

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.retrieveWithScheduledChanges("__test__5SK0bLNFRFuBwSh9S").request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();
    System.out.println(result);
  }
}
copy full code
copy snippet

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.retrieveWithScheduledChanges("__test__5SK0bLNFRFuBwSh9S").request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();

Sample Result [ JSON ]

Show more...
{ "card": { "card_type": "visa", "customer_id": "__test__5SK0bLNFRFuBwSh9S", "expiry_month": 12, "expiry_year": 2019, "gateway": "chargebee", "iin": "411111", "last4": "1111", "masked_number": "************1111", "object": "card", "status": "valid" }, "customer": { "account_credits": 0, "allow_direct_debit": false, "auto_collection": "on", "card_status": "valid", "created_at": 1517506674, "excess_payments": 0, "id": "__test__5SK0bLNFRFuBwSh9S", "object": "customer", "payment_method": { "gateway": "chargebee", "object": "payment_method", "reference_id": "tok___test__5SK0bLNFRFuBwSw9T", "status": "valid", "type": "card" }, "refundable_credits": 0, "taxability": "taxable" }, "subscription": { "activated_at": 1517506674, "created_at": 1517506674, "current_term_end": 1519925874, "current_term_start": 1517506674, "due_invoices_count": 0, "has_scheduled_changes": true, "id": "__test__5SK0bLNFRFuBwSh9S", "object": "subscription", "plan_id": "sub_free", "plan_quantity": 1, "started_at": 1517506674, "status": "active" } }

Method

Subscription.retrieveWithScheduledChanges(<subscription_id>)
Resource object representing subscription.
always returned
Resource object representing customer.
always returned
Resource object representing card.
optional
Removes the subscription changes scheduled on next renewal. Advance charges, if any, will be refunded as credits and a new invoice will be generated on renewal.
Sample Codes
import java.io.IOException;
import com.chargebee.*;
import com.chargebee.models.*;
import com.chargebee.models.enums.*;

public class Sample{
  
  public static void main(String args[]) throws IOException{
    
    

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.removeScheduledChanges("__test__5SK0bLNFRFuBw1g8Z").request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();
    System.out.println(result);
  }
}
copy full code
copy snippet

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.removeScheduledChanges("__test__5SK0bLNFRFuBw1g8Z").request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();

Sample Result [ JSON ]

Show more...
{ "card": { "card_type": "visa", "customer_id": "__test__5SK0bLNFRFuBw1g8Z", "expiry_month": 12, "expiry_year": 2019, "gateway": "chargebee", "iin": "411111", "last4": "1111", "masked_number": "************1111", "object": "card", "status": "valid" }, "customer": { "account_credits": 0, "allow_direct_debit": false, "auto_collection": "on", "card_status": "valid", "created_at": 1517506672, "excess_payments": 0, "id": "__test__5SK0bLNFRFuBw1g8Z", "object": "customer", "payment_method": { "gateway": "chargebee", "object": "payment_method", "reference_id": "tok___test__5SK0bLNFRFuBw1s8a", "status": "valid", "type": "card" }, "refundable_credits": 0, "taxability": "taxable" }, "subscription": { "activated_at": 1517506672, "created_at": 1517506672, "current_term_end": 1519925872, "current_term_start": 1517506672, "due_invoices_count": 0, "has_scheduled_changes": false, "id": "__test__5SK0bLNFRFuBw1g8Z", "object": "subscription", "plan_id": "no_trial", "plan_quantity": 1, "started_at": 1517506672, "status": "active" } }

Method

Subscription.removeScheduledChanges(<subscription_id>)
Resource object representing subscription.
always returned
Resource object representing customer.
always returned
Resource object representing card.
optional

If the subscription is in Non Renewing or In Trial state and is also scheduled to cancel at the end of current term, then this API can be used to remove the scheduled cancellation. When a scheduled cancellation is removed, the subscription will revert to Active or In Trial state, whichever is the state before cancellation was scheduled.

While removing the scheduled cancellation, you may specify the number of billing cycles. If the billing cycle is not specified, the default billing cycle from the plan will be applied on the subscription.

Sample Codes
import java.io.IOException;
import com.chargebee.*;
import com.chargebee.models.*;
import com.chargebee.models.enums.*;

public class Sample{
  
  public static void main(String args[]) throws IOException{
    
    

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.removeScheduledCancellation("__test__5SK0bLNFRFuBvxO8Q").request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();
    System.out.println(result);
  }
}
copy full code
copy snippet

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.removeScheduledCancellation("__test__5SK0bLNFRFuBvxO8Q").request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();

Sample Result [ JSON ]

Show more...
{ "customer": { "account_credits": 0, "allow_direct_debit": false, "auto_collection": "off", "card_status": "no_card", "created_at": 1517506672, "excess_payments": 0, "id": "__test__5SK0bLNFRFuBvxO8Q", "object": "customer", "refundable_credits": 0, "taxability": "taxable" }, "subscription": { "activated_at": 1517506672, "created_at": 1517506672, "current_term_end": 1519925872, "current_term_start": 1517506672, "due_invoices_count": 1, "due_since": 1517506672, "has_scheduled_changes": false, "id": "__test__5SK0bLNFRFuBvxO8Q", "object": "subscription", "plan_id": "no_trial", "plan_quantity": 1, "started_at": 1517506672, "status": "active", "total_dues": 895 } }

Method

Subscription.removeScheduledCancellation(<subscription_id>)
billingCycles(val)
Number of cycles(plan interval) this subscription should be charged. After the billing cycles exhausted, the subscription will be cancelled.
optional, integer, min=0
Resource object representing subscription.
always returned
Resource object representing customer.
always returned
Resource object representing card.
optional

Changes the subscription's current term end date. Depending on the "status" of the subscription, "term end date" has different effects.

  • If the Subscription is in trial, it affects trial end date.
  • If the Subscription is active, it affects the next billing date.
  • If the Subscription's status is non_renewing, this affects the upcoming cancellation date.

When changing the current term there won't be any prorations calculated. All future renewals(if applicable) of the subscription will be shifted based on the new date.

Tip: To cycle through a couple of billing cycles and test webhooks, you may use this API.

Notes

Advance charges, if any, will be refunded as credits and a new invoice will be generated on renewal.

Sample Codes
import java.io.IOException;
import com.chargebee.*;
import com.chargebee.models.*;
import com.chargebee.models.enums.*;

public class Sample{
  
  public static void main(String args[]) throws IOException{
    
    

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.changeTermEnd("__test__5SK0bLNFRFuBuqE6C")
	.termEndsAt(1548700200)
	.request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();
    System.out.println(result);
  }
}
copy full code
copy snippet

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.changeTermEnd("__test__5SK0bLNFRFuBuqE6C")
	.termEndsAt(1548700200)
	.request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();

Sample Result [ JSON ]

Show more...
{ "customer": { "account_credits": 0, "allow_direct_debit": false, "auto_collection": "off", "card_status": "no_card", "created_at": 1517506668, "excess_payments": 0, "id": "__test__5SK0bLNFRFuBuqE6C", "object": "customer", "refundable_credits": 0, "taxability": "taxable" }, "subscription": { "activated_at": 1517506668, "created_at": 1517506668, "current_term_end": 1548700200, "current_term_start": 1517506668, "due_invoices_count": 1, "due_since": 1517506668, "has_scheduled_changes": false, "id": "__test__5SK0bLNFRFuBuqE6C", "object": "subscription", "plan_id": "no_trial", "plan_quantity": 1, "started_at": 1517506668, "status": "active", "total_dues": 895 } }

Method

Subscription.changeTermEnd(<subscription_id>)
termEndsAt(val)
The time at which the current term should end for this subscription.
required, timestamp(UTC) in seconds
Resource object representing subscription.
always returned
Resource object representing customer.
always returned
Resource object representing card.
optional
This operation supports 3DS verification flow. To achieve the same, create the Payment Intent and pass it as input parameter to this API.

This API is used to reactivate a cancelled subscription. You may also optionally specify a trial end date, to move the subscription to In Trial state. If trial end is not specified, the subscription will be activated and any applicable charges will be initiated.

Unless the billing cycle is specified, it will be set to plan's default billing cycle.

During an in-term reactivation++, unless the billing cycle is specified, the subscription's remaining billing cycles will be restored. If a trial end date is specified, then the plan's default billing cycle is used.

What is an "in-term reactivation"?
An "in-term reactivation" happens when the billing term of the subscription is retained upon cancellation and reactivation is initiated within that term.

When is the ‘billing term’ retained for a cancelled subscription?
When dunning (payment failure retry settings) is configured with the last retry configured as

  • cancel subscription and mark invoice as ‘Not Paid’, or
  • cancel subscription and mark the invoice as ‘Voided’ and the case if any of the current term invoices is partially or fully paid, the invoice is not voided but instead Chargebee marks the invoices as ‘Not Paid’.

Note : In both cases, the billing term is retained and upon reactivation the subscription will be moved to active state (if the plan does not have a trial period) and no invoice will be generated. Ensure that you collect any unpaid invoices.

Example : A Subscription was billed from 1st to 31st of a month and it was cancelled on the 20th due to one of the above cases (billing term is not reset). If the reactivation happens on 25th then it is considered an in-term reactivation.

Notes

Reactivation of a subscription in non_renewing state has been deprecated. To remove a scheduled cancellation of a non_renewing Subscription, use Remove Scheduled Cancellation API.

However, if you use reactivate API to remove scheduled cancellation for a non_renewing Subscription, then the status will be set to active and the billing cycle will be set to forever. If any value is passed for trial_end or billing cycle, an error will be thrown.

If an invoice gets generated during this operation, available Credits and Excess Payments will be automatically applied.

Additional Error Scenarios: If there is a need to create an immediate charge and the collection fails, an error will be thrown.

Sample Codes
import java.io.IOException;
import com.chargebee.*;
import com.chargebee.models.*;
import com.chargebee.models.enums.*;

public class Sample{
  
  public static void main(String args[]) throws IOException{
    
    

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.reactivate("__test__5SK0bLNFRFuBvia7x")
	.billingCycles(4)
	.request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();
Invoice invoice = result.invoice();
    System.out.println(result);
  }
}
copy full code
copy snippet

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.reactivate("__test__5SK0bLNFRFuBvia7x")
	.billingCycles(4)
	.request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();
Invoice invoice = result.invoice();

Sample Result [ JSON ]

Show more...
{ "customer": { "account_credits": 0, "allow_direct_debit": false, "auto_collection": "off", "card_status": "no_card", "created_at": 1517506671, "excess_payments": 0, "id": "__test__5SK0bLNFRFuBvia7x", "object": "customer", "refundable_credits": 0, "taxability": "taxable" }, "invoice": { "amount": 895, "amount_adjusted": 0, "amount_due": 895, "amount_paid": 0, "credits_applied": 0, "currency_code": "USD", "customer_id": "__test__5SK0bLNFRFuBvia7x", "end_date": 1517506671, "first_invoice": false, "id": "__demo_inv__13", "line_items": [ { "amount": 895, "date_from": 1517506671, "date_to": 1519925871, "description": "No Trial", "entity_id": "no_trial", "entity_type": "plan", "is_taxed": false, "object": "line_item", "quantity": 1, "tax": 0, "type": "charge", "unit_amount": 895 }, {..} ], "linked_orders": [], "linked_transactions": [], "object": "invoice", "price_type": "tax_exclusive", "recurring": true, "start_date": 1517506671, "status": "payment_due", "sub_total": 895, "subscription_id": "__test__5SK0bLNFRFuBvia7x", "tax": 0 }, "subscription": { "activated_at": 1517506671, "created_at": 1517506671, "current_term_end": 1519925871, "current_term_start": 1517506671, "due_invoices_count": 2, "due_since": 1517506671, "has_scheduled_changes": false, "id": "__test__5SK0bLNFRFuBvia7x", "object": "subscription", "plan_id": "no_trial", "plan_quantity": 1, "remaining_billing_cycles": 3, "started_at": 1517506671, "status": "active", "total_dues": 1790 } }

Method

Subscription.reactivate(<subscription_id>)
trialEnd(val)
Providing this parameter indicates that the subscription reactivates with an in_trial status and the trial period ends at the date provided. The value must not be earlier than reactivate_from. Note: This parameter can be backdated (set to a value in the past) only when reactivate_from has been backdated. Do this to keep a record of when the trial ended in case it ended at some point in the past. When trial_end is backdated, the subscription immediately goes into active or non_renewing status.
optional, timestamp(UTC) in seconds
billingCycles(val)
Number of cycles(plan interval) this subscription should be charged. After the billing cycles exhausted, the subscription will be cancelled.
optional, integer, min=0
+
paymentIntent
Parameters for paymentIntent
methods are prefixed like paymentIntent<param name>(val)
paymentIntentId(val)
Identifier for PaymentIntent generated by Chargebee.js. Applicable only when you are using Chargebee.js for completing the 3DS flow. The PaymentIntent should be in 'authorized' state while passing it here. You need not pass other PaymentIntent parameters if this is passed.
optional, string, max chars=150
paymentIntentGatewayAccountId(val)
The gateway account used for performing the 3DS flow.
required if payment intent token provided, string, max chars=50
paymentIntentGwToken(val)
Identifier for 3DS transaction/verification object at the gateway. Can be passed only after successfully completing the 3DS flow. Refer 3DS implementation in Chargebee to find out the gateway-specific gw_token format. Applicable when you are using gateway APIs directly for completing the 3DS flow.
optional, string, max chars=65k
paymentIntentReferenceId(val)
Identifier for Braintree permanent token. Applicable when you are using Braintree APIs for completing the 3DS flow.
optional, string, max chars=65k
Resource object representing subscription.
always returned
Resource object representing customer.
always returned
Resource object representing card.
optional
Resource object representing invoice.
optional

Adds a one time charge to the subscription which will be added to the invoice generated at the end of the current term. If there are any applicable coupons in the subscription, an appropriate discount will be applied.

To collect a charge immediately, use this API.

Notes

If any subscription changes happen before the end of the current term, these charges will be collected along with it.

Sample Codes
import java.io.IOException;
import com.chargebee.*;
import com.chargebee.models.*;
import com.chargebee.models.enums.*;

public class Sample{
  
  public static void main(String args[]) throws IOException{
    
    

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.addChargeAtTermEnd("__test__5SK0bLNFRFuBuUd5f")
	.amount(300)
	.description("Service Charge")
	.request();
Estimate estimate = result.estimate();
    System.out.println(result);
  }
}
copy full code
copy snippet

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.addChargeAtTermEnd("__test__5SK0bLNFRFuBuUd5f")
	.amount(300)
	.description("Service Charge")
	.request();
Estimate estimate = result.estimate();

Sample Result [ JSON ]

Show more...
{"estimate": { "amount": 1195, "amount_due": 1195, "collect_now": false, "created_at": 1517506667, "credits_applied": 0, "line_items": [ { "amount": 300, "date_from": 1517506667, "date_to": 1517506667, "description": "Service Charge", "entity_type": "adhoc", "is_taxed": false, "object": "line_item", "quantity": 1, "tax": 0, "type": "charge", "unit_amount": 300 }, {..} ], "object": "estimate", "price_type": "tax_exclusive", "recurring": true, "sub_total": 1195, "subscription_id": "__test__5SK0bLNFRFuBuUd5f", "subscription_status": "active", "term_ends_at": 1519925866 }}

Method

Subscription.addChargeAtTermEnd(<subscription_id>)
amount(val)
The amount to be charged. The unit depends on the type of currency.
optional, in cents, min=1
description(val)
Description for this charge.
required, string, max chars=250
Resource object representing estimate.
always returned

Deletes the subscription resource.

Notes

This operation is irreversible - all data related to the subscription, such as invoices, transactions, and reports, will be deleted.

Note: This operation schedules the subscription resource for deletion. It will be deleted in a few minutes.

Sample Codes
import java.io.IOException;
import com.chargebee.*;
import com.chargebee.models.*;
import com.chargebee.models.enums.*;

public class Sample{
  
  public static void main(String args[]) throws IOException{
    
    

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.delete("__test__5SK0bLNFRFuBvJV6x").request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();
    System.out.println(result);
  }
}
copy full code
copy snippet

Environment.configure("{site}","{site_api_key}");
Result result = Subscription.delete("__test__5SK0bLNFRFuBvJV6x").request();
Subscription subscription = result.subscription();
Customer customer = result.customer();
Card card = result.card();

Sample Result [ JSON ]

Show more...
{ "card": { "card_type": "american_express", "customer_id": "__test__5SK0bLNFRFuBvJV6x", "expiry_month": 12, "expiry_year": 2019, "gateway": "chargebee", "iin": "378282", "last4": "0005", "masked_number": "***********0005", "object": "card", "status": "valid" }, "customer": { "account_credits": 0, "allow_direct_debit": false, "auto_collection": "on", "card_status": "valid", "created_at": 1517506669, "excess_payments": 0, "id": "__test__5SK0bLNFRFuBvJV6x", "object": "customer", "payment_method": { "gateway": "chargebee", "object": "payment_method", "reference_id": "tok___test__5SK0bLNFRFuBvJm6y", "status": "valid", "type": "card" }, "refundable_credits": 0, "taxability": "taxable" }, "subscription": { "activated_at": 1517506669, "created_at": 1517506669, "current_term_end": 1519925869, "current_term_start": 1517506669, "due_invoices_count": 0, "has_scheduled_changes": false, "id": "__test__5SK0bLNFRFuBvJV6x", "object": "subscription", "plan_id": "no_trial", "plan_quantity": 1, "started_at": 1517506669, "status": "active" } }

Method

Subscription.delete(<subscription_id>)
Resource object representing subscription.
always returned
Resource object representing customer.
always returned
Resource object representing card.
optional