POST /hosted_pages/checkout_existing_for_items
Create a Chargebee hosted page to accept payment details from a customer and checkout to update the subscription.
The following steps describe how best to use this API:
-
Provide item prices, coupons and a host of other details such as billing and shipping addresses to be prefilled for the customer on the checkout page. You may also provide
pass_thru_content
containing information and IDs from your systems that must be associated with the checkout page.Warning
The first item price in the list (parameter
subscription_items[item_price_id][0]
) must be anitem_price
of item_typeplan
. -
Send the customer to the Checkout
url
received in the response. They can now add a payment method or use an existing one, to complete the checkout. -
The subscription is updated and the customer is redirected to the
redirect_url
with theid
andstate
attributes passed as query string parameters.
Although the customer will be redirected to theredirect_url
after successful checkout, we do not recommend relying on it for completing critical post-checkout actions. This is because redirection may not happen due to unforeseen reasons. Chargebee recommends listening to appropriate webhooks such as subscription_created or invoice_generated to verify a successful checkout. -
Retrieve the hosted page at this stage to get the subscription and invoice details.
Servers
- {protocol}://{site}.{environment}:{port}/api/v2
- {protocol}://{site}-test.{environment}:{port}/api/v2
Request headers
Name | Type | Required | Description |
---|---|---|---|
chargebee-request-origin-device |
String | No |
The device from which the customer has made the request |
Content-Type |
String | Yes |
The media type of the request body.
Default value: "application/x-www-form-urlencoded" |
chargebee-event-webhook |
String | No |
skip only webhooks Possible values:
|
chargebee-business-entity-id |
String | No |
If the site has multiple business entities, you can use this custom HTTP header to specify the business entity for which Chargebee should perform the operation. |
chargebee-event-actions |
String | No |
skip all actions to be done on the events Possible values:
|
chargebee-request-origin-user |
String | No |
The email address of your customer/user. Use this when the email address has only ASCII characters. |
chargebee-request-origin-ip |
String | No |
The IP address of the customer where the request originated |
chargebee-request-origin-user-encoded |
String | No |
The Base64-encoded email address of your customer/user. Use this if the email address has UTF-8 characters. When this header is provided, the header |
chargebee-event-email |
String | No |
skip only emails Possible values:
|
Request body fields
Name | Type | Required | Description |
---|---|---|---|
discounts |
Object | No |
Parameters for discounts |
discounts.apply_on[] |
Array | No | |
discounts.included_in_mrr[] |
Array | No |
The discount is included in MRR calculations for your site. This attribute is only applicable when |
discounts.id[] |
Array | No |
An immutable unique id for the discount. It is always auto-generated. |
discounts.period_unit[] |
Array | No | |
discounts.operation_type[] |
Array | Yes | |
discounts.percentage[] |
Array | No |
The percentage of the original amount that should be deducted from it. |
discounts.period[] |
Array | No |
The duration of time for which the discount is attached to the subscription, in |
discounts.amount[] |
Array | No |
The value of the discount. The format of this value depends on the kind of currency. |
discounts.duration_type[] |
Array | Yes | |
discounts.item_price_id[] |
Array | No |
The id of the item price in the subscription to which the discount is to be applied. Relevant only when |
subscription |
Object | No |
Parameters for subscription |
subscription.id |
String | Yes |
A unique and immutable identifier for the subscription. If not provided, it is autogenerated. |
subscription.offline_payment_method |
String | No |
The preferred offline payment method for the subscription. * uk_automated_bank_transfer - UK Automated Bank Transfer * jp_automated_bank_transfer - JP Automated Bank Transfer * bank_transfer - Bank Transfer * us_automated_bank_transfer - US Automated Bank Transfer * boleto - Boleto * no_preference - No Preference * sepa_credit - SEPA Credit * mx_automated_bank_transfer - MX Automated Bank Transfer * ach_credit - ACH Credit * custom - Custom * eu_automated_bank_transfer - EU Automated Bank Transfer * cash - Cash * check - Check Possible values:
|
subscription.start_date |
Integer | No |
The new start date of a |
subscription.auto_collection |
String | No |
Defines whether payments need to be collected automatically for this subscription. Overrides customer's auto-collection property. * off - Automatic collection of charges will not be made for this subscription. Use this for offline payments. * on - Whenever an invoice is created for this subscription, an automatic charge will be attempted on the payment method available. Possible values:
|
subscription.invoice_notes |
String | No |
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. |
subscription.trial_end |
Integer | No |
The time at which the trial has ended or will end for the subscription. This is only allowed when the subscription |
subscription.contract_term_billing_cycle_on_renewal |
Integer | No |
Number of billing cycles the new contract term should run for, on contract renewal. The default value is the same as |
layout |
String | No |
Specifies the checkout layout that overrides the default checkout layout configured in the Checkout & Self-Serve Portal settings. . * in_app - Indicates in-app checkout version * full_page - Indicates full page checkout version Possible values:
|
pass_thru_content |
String | No |
This attribute allows you to store custom information with the For example, you can store the ID of the marketing campaign that initiated the user session. After a successful checkout, when the customer is redirected, you can retrieve the hosted page ID from the redirect URL's query parameters. Using this ID, you can fetch the hosted page and perform actions related to the success of the marketing campaign. |
cancel_url |
String | No |
The customers will be redirected to this URL upon canceling checkout. The hosted page id and state will be passed as parameters to this URL. Note :
|
force_term_reset |
Boolean | No |
Note : This parameter is relevant only for subscriptions with When you set this parameter to By default, if you change the plan-item price to another with the same billing period, the subscription term remains unchanged. For example, if the subscription renews on the 28th of every month, it will continue to renew on the 28th after the change. Default value: false |
entity_identifiers |
Object | No |
Parameters for entity_identifiers |
entity_identifiers.id[] |
Array | No |
The unique id for the |
entity_identifiers.operation[] |
Array | No | |
entity_identifiers.value[] |
Array | No |
The value of the If there is only one entity identifier for the customer and the value is the same as |
entity_identifiers.scheme[] |
Array | No |
The Peppol BIS scheme associated with the vat_number of the customer. This helps identify the specific type of customer entity. For example, If there is only one entity identifier for the customer and the value is the same as |
entity_identifiers.standard[] |
Array | No |
The standard used for specifying the If there is only one entity identifier for the customer and the value is the same as |
subscription_items |
Object | No |
Parameters for subscription_items |
subscription_items.charge_on_event[] |
Array | No | |
subscription_items.unit_price[] |
Array | No |
The price/per unit price of the item. When not provided, the value set for the item price is used. This is only applicable when the |
subscription_items.charge_once[] |
Array | No |
Indicates if the charge-item is to be charged only once or each time the |
subscription_items.charge_on_option[] |
Array | No | |
subscription_items.unit_price_in_decimal[] |
Array | No |
When price overriding is enabled for the site, the price or per-unit price of the item can be set here. The value set for the item price is used by default. Provide the value as a decimal string in major units of the currency. Can be provided only when multi-decimal pricing is enabled. If |
subscription_items.item_price_id[] |
Array | Yes |
The unique identifier of the item price. The first item price in the list ( |
subscription_items.quantity[] |
Array | No |
The quantity of the item purchased |
subscription_items.quantity_in_decimal[] |
Array | No |
The decimal representation of the quantity of the item purchased. Can be provided for quantity-based item prices and only when multi-decimal pricing is enabled. |
subscription_items.service_period_days[] |
Array | No |
Not supported: This parameter is not supported in the API. If included in a request, it will be ignored. |
subscription_items.trial_end[] |
Array | No |
The date/time when the trial period of the item ends. This applies to plan-items. |
subscription_items.billing_cycles[] |
Array | No |
For the plan-item price: For addon-item prices: |
coupon_ids[] |
Array | No |
List of coupons to be applied to this subscription. You can provide coupon ids or coupon codes. |
allow_offline_payment_methods |
Boolean | No |
Allow the customer to select an offline payment method during checkout. The choice of payment methods can be configured via the Chargebee UI. |
changes_scheduled_at |
Integer | No |
When
|
replace_coupon_list |
Boolean | No |
If Default value: false |
reactivate_from |
Integer | No |
If the subscription
|
reactivate |
Boolean | No |
This parameter is only relevant for |
contract_term |
Object | No |
Parameters for contract_term |
contract_term.action_at_term_end |
String | No |
Action to be taken when the contract term completes. * evergreen - Contract term completes and the subscription renews. * renew -
Possible values:
|
contract_term.cancellation_cutoff_period |
Integer | No |
The number of days before Default value: 0 |
terms_to_charge |
Integer | No |
The number of subscription billing cycles to invoice in advance. If a new term is started for the subscription due to this API call, then |
mandatory_items_to_remove[] |
Array | No |
Item ids of mandatorily attached addons that are to be removed from the subscription. |
card |
Object | No |
Parameters for card |
card.gateway_account_id |
String | No |
The gateway account in which this payment source is stored. |
replace_items_list |
Boolean | No |
If Default value: false |
billing_cycles |
Integer | No |
Billing cycles set for plan-item price is used by default. |
customer |
Object | No |
Parameters for customer |
customer.vat_number_prefix |
String | No |
An overridden value for the first two characters of the full VAT
number. Only applicable specifically for customers with billing_address When you have enabled EU VAT in 2021 or have manually
enabled the Brexit configuration, you have the option of setting billing_address |
customer.entity_identifier_standard |
String | No |
The standard used for specifying the If there are additional entity identifiers for the customer not associated with the Default value: "iso6523-actorid-upis" |
customer.entity_identifier_scheme |
String | No |
The Peppol BIS scheme associated with the vat_number of the customer. This helps identify the specific type of customer entity. For example, If there are additional entity identifiers for the customer not associated with the |
customer.vat_number |
String | No |
The VAT/tax registration number for the customer. For customers with billing_address |
customer.is_einvoice_enabled |
Boolean | No |
Determines whether the customer is e-invoiced. When set to It is possible to set a value for this flag even when E-Invoicing is disabled. However, it comes into effect only when E-Invoicing is enabled. |
redirect_url |
String | No |
The customers will be redirected to this URL upon successful checkout. The hosted page id and state will be passed as parameters to this URL. Note :
|
billing_alignment_mode |
String | No |
Override the billing alignment mode chosen for the site for calendar billing. Only applicable when using calendar billing. * immediate - Subscription period will be aligned with the configured billing date immediately, with credits or charges raised accordingly.. * delayed - Subscription period will be aligned with the configured billing date at the next renewal. Possible values:
|
item_tiers |
Object | No |
Parameters for item_tiers |
item_tiers.starting_unit_in_decimal[] |
Array | No |
The decimal representation of the lowest value of quantity in this tier. This is zero for the lowest tier. For all other tiers, it is the same as |
item_tiers.price_in_decimal[] |
Array | No |
The decimal representation of the per-unit price for the tier when the |
item_tiers.package_size[] |
Array | No |
Package size for the tier when pricing type is |
item_tiers.price[] |
Array | No |
The overridden price of the tier. The value depends on the type of currency. |
item_tiers.ending_unit[] |
Array | No |
The highest value in the quantity tier. |
item_tiers.item_price_id[] |
Array | No |
The id of the item price for which the tier price is being overridden. |
item_tiers.pricing_type[] |
Array | No | |
item_tiers.starting_unit[] |
Array | No |
The lowest value in the quantity tier. |
item_tiers.ending_unit_in_decimal[] |
Array | No |
The decimal representation of the highest value of quantity in this tier. This attribute is not applicable for the highest tier. For all other tiers, it must be equal to the |
invoice_date |
Integer | No |
The document date displayed on the invoice PDF. The default value is the current date. Provide this value to backdate the invoice. Backdating an invoice is done for reasons such as booking revenue for a previous date or when the subscription is effective as of a past date. Moreover, if
|
change_option |
String | No |
Specifies the date or time when the subscription change will take effect after the quote is converted. * end_of_term - The change will be carried out at the end of the current billing cycle of the subscription * specific_date - The change will be carried out on the date specified under Possible values:
|
How to start integrating
- Add HTTP Task to your workflow definition.
- Search for the API you want to integrate with and click on the name.
- This loads the API reference documentation and prepares the Http request settings.
- Click Test request to test run your request to the API and see the API's response.