Hosted pages are the easiest and most secure way to integrate chargebee with your website. By using hosted pages, you can avoid the sensitive card information passing through your server and be compliant with most of the PCI DSS requirements.

When you request for a hosted page, a secure & unique URL will be returned which you could either embed or redirect depending upon the embed parameter value that you had passed.

Specifying "embed" parameter as true allows you to embed the "hosted page" in an iframe in your own website. This helps you provide the best experience to your user as they do not have to leave your website to provide card information. Drawbacks are

  • Your site should also be in https
  • You have to be careful with height and width of the iframe otherwise users might get scroll.

To use the hosted pages, you must configure Redirect URL in the ChargeBee web interface under HOSTED PAGES SETTINGS -> Configuration. The configured redirect URL will be called with the following parameters after user had submitted the page.

  • id - unique identifier of the hosted page resource
  • state - succeeded, failed or cancelled

After the Redirect URL is called by ChargeBee with the above parameters, the details of the hosted page can be fetched using Retrieve a hosted page API. The content attribute will have the details about the customer, subscription, card & invoice based on the type of the hosted page.

For Checkout New Subscription:

  • Customer - The details about the new customer created.
  • Subscription - The details about the new subscription created.
  • Card - The details about the card provided while subscribing.
  • Invoice - The details about the invoice, if one is generated.

For Checkout Existing Subscription:

  • Customer - The updated details of the customer.
  • Subscription - The updated details of the subscription.
  • Card - The details about the card provided while subscribing.
  • Invoice - The details about the invoice, if one is generated.

For Update Payment Method:

  • Customer - The details about the customer for whom the card was updated.
  • Card - The details about the updated card. It will be present only if the type of payment method is card.

When an embedded hosted page is cancelled by your end user, the content attribute will have the unmodified details of customer, subscription & card resources.

Sample hosted page [ JSON ]

{ "id": "hX5XDpqpSN4g82uew8pbzCe15qdyS2YP", "type": "checkout_new", "url": "https://yourapp.chargebee.com/pages/v2/hX5XDpqpSN4g82uew8pbzCe15qdyS2YP/checkout", "state": "succeeded", "embed": true, "created_at": 1505917604, "expires_at": 1505921204, "object": "hosted_page", "content": { "subscription": { "id": "3Nl8KfcQVm8nIa6j", "customer_id": "3Nl8KfcQVm8nIa6j", "plan_id": "basic", "plan_quantity": 1, "plan_unit_price": 900, "billing_period": 1, "billing_period_unit": "month", "plan_free_quantity": 0, "status": "in_trial", "trial_start": 1505917615, "trial_end": 1508509615, "next_billing_at": 1508509615, "created_at": 1505917615, "started_at": 1505917615, "affiliate_token": "hX5XDpqpSN4g82uew8pbzCe15qdyS2YP", "created_from_ip": "127.0.0.1", "updated_at": 1505917616, "has_scheduled_changes": false, "resource_version": 1505917616000, "deleted": false, "object": "subscription", "currency_code": "USD", "due_invoices_count": 0, "shipping_address": { "first_name": "Hello", "last_name": "World", "phone": "122242222", "line1": "Wow", "line2": "Cool", "city": "Chennai", "state_code": "TN", "state": "Tamil Nadu", "country": "IN", "zip": "600041", "validation_status": "not_validated", "object": "shipping_address" } }, "customer": { "id": "3Nl8KfcQVm8nIa6j", "first_name": "Hello", "last_name": "World", "email": "john@acmeinc.com", "auto_collection": "on", "net_term_days": 0, "allow_direct_debit": false, "created_at": 1505917615, "created_from_ip": "127.0.0.1", "taxability": "taxable", "updated_at": 1505917616, "resource_version": 1505917616000, "deleted": false, "object": "customer", "billing_address": { "first_name": "Hello", "last_name": "World", "phone": "122242222", "line1": "Wow", "line2": "Cool", "city": "Chennai", "state_code": "TN", "state": "Tamil Nadu", "country": "IN", "zip": "600041", "validation_status": "not_validated", "object": "billing_address" }, "card_status": "valid", "primary_payment_source_id": "pm_3Nl8KVeQVm8qdN5", "payment_method": { "object": "payment_method", "type": "card", "reference_id": "tok_3Nl8KVeQVm8qcr4", "gateway": "chargebee", "gateway_account_id": "gw_3Nl8KfcQVm8Whp2", "status": "valid" }, "promotional_credits": 0, "refundable_credits": 0, "excess_payments": 0, "unbilled_charges": 0, "preferred_currency_code": "USD" }, "card": { "status": "valid", "gateway": "chargebee", "gateway_account_id": "gw_3Nl8KfcQVm8Whp2", "first_name": "Hello", "last_name": "World", "iin": "411111", "last4": "1111", "card_type": "visa", "funding_type": "credit", "expiry_month": 10, "expiry_year": 2020, "ip_address": "127.0.0.1", "object": "card", "masked_number": "************1111", "customer_id": "3Nl8KfcQVm8nIa6j", "payment_source_id": "pm_3Nl8KVeQVm8qdN5" } }, "updated_at": 1505917616, "resource_version": 1505917616000, "checkout_info": { "client_ip": "127.0.0.1", "order_value": 900, "currency": "USD", "locale": "en", "checkout_submit": [ { "gateway": { "id": "gw_3Nl8KfcQVm8Whp2", "name": "CHARGEBEE" }, "status": "succeeded", "timestamp": 1505917616441, "payment_method": "card", "card_type": "visa" }, {..} ], "order_items": [ { "entity_type": "plan", "entity_id": "basic" }, {..} ], "shipping.ship.to.billing": "true", "customer": {"email": "john@acmeinc.com"}, "billing_address": { "first_name": "Hello", "last_name": "World", "line1": "Wow", "line2": "Cool", "city": "Chennai", "zip": "600041", "country": "IN", "state_code": "TN", "phone": "122242222" } } }
id
Unique identifier generated for each hosted page requested.
optional, string, max chars=70
type
Type of the requested hosted page.
optional, enumerated string
Possible values are
checkout_newCheckout new Subscription.checkout_existingCheckout existing Subscription.update_payment_methodUpdate Payment Method for a Customer.manage_payment_sourcesManage Payments for a customer.collect_nowCollect Unpaid Invoices for a Customer.
url
Unique URL for the hosted page that will be included in your website.
optional, string, max chars=250
state
Indicating the current state of the hosted page resource.
optional, enumerated string, default=created
Possible values are
createdIndicates the hosted page is just created.requestedIndicates the hosted page is requested by the website.succeededIndicates the hosted page is successfully submitted by the user and response is sent to the return url.cancelledIndicates the page is cancelled by the end user after requesting it.acknowledgedIndicates the succeeded hosted page is acknowledged.
pass_thru_content
You can pass through any content specific to the hosted page request and get it back after user had submitted the hosted page.
optional, string, max chars=2048
embed
If true then hosted page formatted to be shown in in-app iframe embed.If false, it is formatted to be shown as a separate page .
boolean, default=true
created_at
Indicates when this hosted page url is generated.
optional, timestamp(UTC) in seconds
expires_at
Indicates when this hosted page url will expire. After this, the hosted page cannot be accessed.
optional, timestamp(UTC) in seconds
content
This attribute will be returned only during retrieve hosted page API call and also the retrieved hosted page resource state should be either in "succeeded" or "canceled" state.
If hosted page state is "succeeded", then the subscription, customer, card & invoice(optional) resources during checkout can be obtained.
If hosted page is state is "canceled", then it will be empty i.e no information about checkout.
jsonobject
updated_at
Timestamp indicating when this hosted page was last updated. This attribute will be present only if the resource has been updated after 2017-04-14.
optional, timestamp(UTC) in seconds
resource_version
Version number of this resource. Each update of this resource results in incremental change of this number. This attribute will be present only if the resource has been updated after 2017-04-14.
optional, long
checkout_info
Customer Info (email, first name and last name) given in the checkout page used for tracking abandoned carts.
Learn more.
optional, jsonobject

Hosted page to accept card details from the subscriber and create a new subscription. This is similar to our server to server API Create a Subscription.

When the redirect URL is notified of the result, we would advise you to retrieve the subscription and verify the details.

Related Tutorials

Notes

As mentioned before this behavior is very similar to the create subscription API call. All the web hook events will be fired only after the submission of payment details by the customer and successful creation of subscription.

Any errors related to the payment form that is submitted is handled as a response within the form so that the user is kept informed about the reason for failure to take corrective action.

Sample Request
curl  https://{site}.chargebee.com/api/v2/hosted_pages/checkout_new \
     -u {site_api_key}: \
     -d customer[email]="john@user.com" \
     -d customer[first_name]="John" \
     -d customer[last_name]="Doe" \
     -d customer[locale]="fr-CA" \
     -d customer[phone]="+1-949-999-9999" \
     -d subscription[plan_id]="basic" \
     -d billing_address[first_name]="John" \
     -d billing_address[last_name]="Doe" \
     -d billing_address[line1]="PO Box 9999" \
     -d billing_address[city]="Walnut" \
     -d billing_address[state]="California" \
     -d billing_address[zip]="91789" \
     -d billing_address[country]="US"
copy
curl  https://{site}.chargebee.com/api/v2/hosted_pages/checkout_new \
     -u {site_api_key}: \
     -d customer[email]="john@user.com" \
     -d customer[first_name]="John" \
     -d customer[last_name]="Doe" \
     -d customer[locale]="fr-CA" \
     -d customer[phone]="+1-949-999-9999" \
     -d subscription[plan_id]="basic" \
     -d billing_address[first_name]="John" \
     -d billing_address[last_name]="Doe" \
     -d billing_address[line1]="PO Box 9999" \
     -d billing_address[city]="Walnut" \
     -d billing_address[state]="California" \
     -d billing_address[zip]="91789" \
     -d billing_address[country]="US"

Sample Response [ JSON ]

{"hosted_page": { "id": "o8xwnLFiMaIbmrIrcuIkzERXoyD3GRhV4", "type": "checkout_new", "url": "https://yourapp.chargebee.com/pages/v2/o8xwnLFiMaIbmrIrcuIkzERXoyD3GRhV4/checkout", "state": "created", "embed": true, "created_at": 1505917715, "expires_at": 1505921315, "object": "hosted_page", "updated_at": 1505917715, "resource_version": 1505917715000 }}

URL Format POST

https://{site}.chargebee.com/api/v2/hosted_pages/checkout_new
billing_cycles
Number of cycles(plan interval) this subscription should be charged. After the billing cycles exhausted, the subscription will be cancelled.
optional, integer, min=0
terms_to_charge
The number of future renewals for which advance invoicing is done. However, if a new term gets started in this operation, the specified terms_to_charge will be inclusive of this new term.
optional, integer, min=1
billing_alignment_mode
Applicable when calendar billing is enabled and subscription is getting created in active / non_renewing states. Unless specified the configured default value will be used.
optional, enumerated string
Possible values are
immediateSubscription period will be aligned with the configured billing date immediately.delayedSubscription period will be aligned with the configured billing date at a later date (subsequent renewals).
redirect_url
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. This parameter is not applicable for iframe messaging.
Note : Redirect URL configured in Settings > Hosted Pages Settings would be overriden by this redirect URL.
Eg : http://yoursite.com?id=<hosted_page_id>&state=succeeded.
optional, string, max chars=250
cancel_url
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. This parameter is not applicable for iframe messaging.
Note : Cancel URL configured in Settings > Hosted Pages Settings would be overriden by this cancel URL.
Eg : http://yoursite.com?id=<hosted_page_id>&state=cancelled.
optional, string, max chars=250
pass_thru_content
You can pass through any content specific to the hosted page request and get it back after user had submitted the hosted page.
optional, string, max chars=2048
embed
If true then hosted page formatted to be shown in in-app iframe embed.If false, it is formatted to be shown as a separate page .
optional, boolean, default=true
iframe_messaging
If true then iframe will communicate with the parent window. Applicable only for embedded(iframe) hosted pages. If you're using iframe_messaging you need to implement onSuccess & onCancel callbacks. To know more about iframe_messaging please refer to this tutorial.
optional, boolean, default=false
subscription
Parameters for subscription
pass parameters as subscription[<param name>]
subscription[id]
A unique identifier to identify the subscription. You will use this to perform all operations on this subscription.
optional, string, max chars=50
subscription[plan_id]
Identifier of the plan for this subscription.
required, string, max chars=100
subscription[plan_quantity]
Plan quantity for this subscription.
optional, integer, default=1, min=1
subscription[plan_unit_price]
Amount that will override the Plan's default price.
optional, in cents, min=0
subscription[setup_fee]
Amount that will override the default setup fee.
optional, in cents, min=0
subscription[start_date]
Allows you to specify a future date or a past date on which the subscription starts.Past dates can be entered in case the subscription has already started. Any past date entered must be within the current billing cycle/plan term. The subscription will start immediately if this parameter is not passed.
optional, timestamp(UTC) in seconds
subscription[trial_end]
The time at which the trial ends for this subscription. Can be specified to override the default trial period.If '0' is passed, the subscription will be activated immediately.
optional, timestamp(UTC) in seconds
subscription[coupon]

The id of the coupon. For validating the coupon code provided by the user , use the following codes in combination with the param attribute in the error response.

  • resource_not_found : Returned if the coupon is not present.
  • resource_limit_exhausted : Returned if the coupon has expired or the maximum redemption for the coupon has already been reached.
  • invalid_request : Returned if the coupon is not applicable for the particular plan/addon.

optional, string, max chars=50
subscription[auto_collection]
Defines whether payments need to be collected automatically for this subscription. Overrides customer's auto-collection property.
optional, enumerated string
Possible values are
onWhenever an invoice is created for this subscription, an automatic charge will be attempted on the payment method available.offAutomatic collection of charges will not be made for this subscription. All payments must be recorded offline.
subscription[invoice_notes]
Invoice Notes for this resource. Read More.
optional, string, max chars=1000
customer
Parameters for customer
pass parameters as customer[<param name>]
customer[id]
Id for the new customer. If not given, this will be same as the subscription id.
optional, string, max chars=50
customer[email]
Email of the customer. Configured email notifications will be sent to this email.
optional, string, max chars=70
customer[first_name]
First name of the customer. If not provided it will be got from contact information entered in the hosted page .
optional, string, max chars=150
customer[last_name]
Last name of the customer. If not provided it will be got from contact information entered in the hosted page .
optional, string, max chars=150
customer[company]
Company name of the customer.
optional, string, max chars=250
customer[taxability]
Specifies if the customer is liable for tax.
optional, enumerated string, default=taxable
Possible values are
taxableCustomer is taxable.exemptCustomer is exempted from tax.
customer[locale]
Determines which region-specific language Chargebee uses to communicate with the customer. In the absence of the locale attribute, Chargebee will use your site's default language for customer communication.
optional, string, max chars=50
customer[phone]
Phone number of the customer.
optional, string, max chars=50
customer[vat_number]
VAT/ Tax registration number of the customer. Learn more.
optional, string, max chars=20
customer[consolidated_invoicing]
Applicable when consolidated invoicing is enabled. Indicates whether invoice consolidation should happen during subscription renewals. Needs to be set only if this value is different from the defaults configured.
optional, boolean
card
Parameters for card
pass parameters as card[<param name>]
card[gateway_account_id]
The gateway account in which this payment source is stored.
optional, string, max chars=50
billing_address
Parameters for billing_address
pass parameters as billing_address[<param name>]
billing_address[first_name]
First name.
optional, string, max chars=150
billing_address[last_name]
Last name.
optional, string, max chars=150
billing_address[email]
Email.
optional, string, max chars=70
billing_address[company]
Company name.
optional, string, max chars=250
billing_address[phone]
Phone number.
optional, string, max chars=50
billing_address[line1]
Address line 1.
optional, string, max chars=150
billing_address[line2]
Address line 2.
optional, string, max chars=150
billing_address[line3]
Address line 3.
optional, string, max chars=150
billing_address[city]
City.
optional, string, max chars=50
billing_address[state_code]
The ISO 3166-2 state/province code. The recommended way of passing the state/province information. Supported for US, Canada and India now. Further if this is specified, 'state' attribute should not be specified as it will be set automatically.
optional, string, max chars=50
billing_address[state]
The state/province name. Use this to pass the state/province information for cases where 'state_code' is not supported or cannot be passed.
optional, string, max chars=50
billing_address[zip]
Zip or Postal code.
optional, string, max chars=20
billing_address[country]
2-letter ISO 3166 alpha-2 country code.
optional, string, max chars=50
billing_address[validation_status]
The address verification status.
optional, enumerated string, default=not_validated
Possible values are
not_validatedAddress is not yet validated.validAddress was validated successfully.partially_validAddress is verified but only partially.invalidAddress is invalid.
shipping_address
Parameters for shipping_address
pass parameters as shipping_address[<param name>]
shipping_address[first_name]
First name.
optional, string, max chars=150
shipping_address[last_name]
Last name.
optional, string, max chars=150
shipping_address[email]
Email.
optional, string, max chars=70
shipping_address[company]
Company name.
optional, string, max chars=250
shipping_address[phone]
Phone number.
optional, string, max chars=50
shipping_address[line1]
Address line 1.
optional, string, max chars=180
shipping_address[line2]
Address line 2.
optional, string, max chars=150
shipping_address[line3]
Address line 3.
optional, string, max chars=150
shipping_address[city]
City.
optional, string, max chars=50
shipping_address[state_code]
The ISO 3166-2 state/province code. The recommended way of passing the state/province information. Supported for US, Canada and India now. Further if this is specified, 'state' attribute should not be specified as it will be set automatically.
optional, string, max chars=50
shipping_address[state]
The state/province name. Use this to pass the state/province information for cases where 'state_code' is not supported or cannot be passed.
optional, string, max chars=50
shipping_address[zip]
Zip or Postal code.
optional, string, max chars=20
shipping_address[country]
2-letter ISO 3166 alpha-2 country code.
optional, string, max chars=50
shipping_address[validation_status]
The address verification status.
optional, enumerated string, default=not_validated
Possible values are
not_validatedAddress is not yet validated.validAddress was validated successfully.partially_validAddress is verified but only partially.invalidAddress is invalid.
addons
Parameters for addons. Multiple addons can be passed by specifying unique indices.
pass parameters as addons[<param name>][<idx:0..n>]
addons[id][0..n]
Identifier of the addon. Multiple addons can be passed.
optional, string, max chars=100
addons[quantity][0..n]
Addon quantity. Applicable only for the quantity based addons. Should be passed with the same index as that of associated addon id.
optional, integer, default=1, min=1
addons[unit_price][0..n]
Amount that will override the Addon's default price. The Plan's billing frequency will not be considered for overriding. E.g. If the Plan's billing frequency is every 3 months, and if the price override amount is $10, $10 will be used, and not $30 (i.e $10*3).
optional, in cents, min=0
Resource object representing hosted_page.
always returned

You can checkout an existing subscription(typically in the trial state) by passing in the plan, quantity and addon details(like Update a Subscription)

When the redirect URL is notified of the result, we would advise you to retrieve the subscription and verify the details.

Related Tutorial

Notes

As mentioned before this behavior is very similar to the update subscription API call. All the web hook events will be fired only after the submission of payment details by the customer and successful checkout of subscription.

Any errors related to the payment form that is submitted is handled as a response within the form so that the user is kept informed about the reason for failure to take corrective action.

Sample Request
curl  https://{site}.chargebee.com/api/v2/hosted_pages/checkout_existing \
     -u {site_api_key}: \
     -d subscription[id]="8avVGOkx8U1MX" \
     -d subscription[plan_id]="basic"
copy
curl  https://{site}.chargebee.com/api/v2/hosted_pages/checkout_existing \
     -u {site_api_key}: \
     -d subscription[id]="8avVGOkx8U1MX" \
     -d subscription[plan_id]="basic"

Sample Response [ JSON ]

{"hosted_page": { "id": "hXcuGef8aOZU71wYLO27SJ05LUAxAqeGW", "type": "checkout_existing", "url": "https://yourapp.chargebee.com/pages/v2/hXcuGef8aOZU71wYLO27SJ05LUAxAqeGW/checkout", "state": "created", "embed": true, "created_at": 1505917715, "expires_at": 1505921315, "object": "hosted_page", "updated_at": 1505917715, "resource_version": 1505917715000 }}

URL Format POST

https://{site}.chargebee.com/api/v2/hosted_pages/checkout_existing
billing_cycles
Number of cycles(plan interval) this subscription should be charged. After the billing cycles exhausted, the subscription will be cancelled.
optional, integer, min=0
replace_addon_list
Should be true if the existing addons should be replaced with the ones that are being passed.
optional, boolean, default=false
terms_to_charge
The number of future renewals for which advance invoicing is done. However, if a new term gets started in this operation, the specified terms_to_charge will be inclusive of this new term.
optional, integer, min=1
reactivate_from
The time from which this subscription should be reactivated.
optional, timestamp(UTC) in seconds
billing_alignment_mode
Applicable when calendar billing is enabled and a new term gets started during this operation. Unless specified the configured default value will be used.
optional, enumerated string
Possible values are
immediateSubscription period will be aligned with the configured billing date immediately.delayedSubscription period will be aligned with the configured billing date at a later date (subsequent renewals).
reactivate
Applicable only for canceled subscriptions. Once this is passed as true, canceled subscription will become active; otherwise subscription changes will be made but the the subscription state will remain canceled. If not passed, subscription will be activated only if there is any change in subscription data.
optional, boolean
force_term_reset
Applicable for 'Active' & 'Non Renewing' states alone. Generally, subscription's term will be reset (i.e current term is ended and a new term starts immediately) when a new plan having different billing frequency is specified in the input. For all the other cases, the subscription's term will remain intact. Now for this later scenario, if you want to force a term reset you can specify this param as 'true'.
Note: Specifying this value as 'false' has no impact on the default behaviour.
optional, boolean, default=false
redirect_url
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. This parameter is not applicable for iframe messaging.
Note : Redirect URL configured in Settings > Hosted Pages Settings would be overriden by this redirect URL.
Eg : http://yoursite.com?id=<hosted_page_id>&state=succeeded.
optional, string, max chars=250
cancel_url
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. This parameter is not applicable for iframe messaging.
Note : Cancel URL configured in Settings > Hosted Pages Settings would be overriden by this cancel URL.
Eg : http://yoursite.com?id=<hosted_page_id>&state=cancelled.
optional, string, max chars=250
pass_thru_content
You can pass through any content specific to the hosted page request and get it back after user had submitted the hosted page.
optional, string, max chars=2048
embed
If true then hosted page formatted to be shown in in-app iframe embed.If false, it is formatted to be shown as a separate page .
optional, boolean, default=true
iframe_messaging
If true then iframe will communicate with the parent window. Applicable only for embedded(iframe) hosted pages. If you're using iframe_messaging you need to implement onSuccess & onCancel callbacks. To know more about iframe_messaging please refer to this tutorial.
optional, boolean, default=false
subscription
Parameters for subscription
pass parameters as subscription[<param name>]
subscription[id]
A unique identifier to identify the subscription. You will use this to perform all operations on this subscription.
required, string, max chars=50
subscription[plan_id]
Identifier of the plan for this subscription.
optional, string, max chars=100
subscription[plan_quantity]
Represents the plan quantity for this subscription.
optional, integer, default=1, min=1
subscription[plan_unit_price]
Amount that will override the Plan's default price.
optional, in cents, min=0
subscription[setup_fee]
Amount that will override the default setup fee.
optional, in cents, min=0
subscription[start_date]
Applicable only for 'future' subscriptions. The new start date of the 'future' subscription.
optional, timestamp(UTC) in seconds
subscription[trial_end]
The time at which the trial should end for this subscription. Can be specified to override the default trial period defined in plan. If '0' is passed, the subscription will be activated immediately.
optional, timestamp(UTC) in seconds
subscription[coupon]
Used to uniquely identify the coupon in your website/application and to integrate with Chargebee.
optional, string, max chars=50
subscription[invoice_notes]
Invoice Notes for this resource. Read More.
optional, string, max chars=1000
customer
Parameters for customer
pass parameters as customer[<param name>]
customer[vat_number]
VAT/ Tax registration number of the customer. Learn more.
optional, string, max chars=20
card
Parameters for card
pass parameters as card[<param name>]
card[gateway_account_id]
The gateway account in which this payment source is stored.
optional, string, max chars=50
addons
Parameters for addons. Multiple addons can be passed by specifying unique indices.
pass parameters as addons[<param name>][<idx:0..n>]
addons[id][0..n]
Identifier of the addon. Multiple addons can be passed.
optional, string, max chars=100
addons[quantity][0..n]
Addon quantity. Applicable only for the quantity based addons. Should be passed with the same index as that of associated addon id.
optional, integer, default=1, min=1
addons[unit_price][0..n]
Amount that will override the Addon's default price. The Plan's billing frequency will not be considered for overriding. E.g. If the Plan's billing frequency is every 3 months, and if the price override amount is $10, $10 will be used, and not $30 (i.e $10*3).
optional, in cents, min=0
Resource object representing hosted_page.
always returned

Using this API, you can request your customers to update their payment method details or change their payment method. This is used in scenarios like customers updating their payment methods before the end of trial or customers switching among payment methods.

When this API is invoked, it returns a hosted page URL. When the customers are directed to this URL, they will be able to change/update their payment methods.

Depending on the payment methods (Card, PayPal Express Checkout, Amazon Payments) that you offer your customers, they will find options to switch among the various methods of payment.

Note:
  • If the card[gateway] parameter is passed, and the customer chooses Card as a payment method, then the card details are stored in the gateway which is passed. However, if the card[gateway] parameter is passed and the customer chooses PayPal Express Checkout/Amazon Payments as a payment method, the gateway passed will be ignored.
  • The option of embedding into an iframe is not supported for PayPal Express Checkout and Amazon Payments as customers are redirected to the respective website pages. Hence if you have PayPal Express Checkout/Amazon Payments configured and pass the parameter embed=true, this will result in an unsuccessful API request. Also, if you have all the three payment methods (Card, Paypal Express Checkout and Amazon Payments) configured and pass the parameter embed=true, the returned hosted page URL will show only Card Payment as a payment method.
Sample Request
curl  https://{site}.chargebee.com/api/v2/hosted_pages/update_payment_method \
     -u {site_api_key}: \
     -d customer[id]="4gkYnd21ouvW"
copy
curl  https://{site}.chargebee.com/api/v2/hosted_pages/update_payment_method \
     -u {site_api_key}: \
     -d customer[id]="4gkYnd21ouvW"

Sample Response [ JSON ]

{"hosted_page": { "id": "ElmeTDHPbYjpExjwE41Iwpzb0dIFTIF7", "type": "update_payment_method", "url": "https://yourapp.chargebee.com/pages/v2/ElmeTDHPbYjpExjwE41Iwpzb0dIFTIF7/update_payment_method", "state": "created", "embed": true, "created_at": 1505917715, "expires_at": 1506004115, "object": "hosted_page", "updated_at": 1505917715, "resource_version": 1505917715000 }}

URL Format POST

https://{site}.chargebee.com/api/v2/hosted_pages/update_payment_method
redirect_url
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. This parameter is not applicable for iframe messaging.
Note : Redirect URL configured in Settings > Hosted Pages Settings would be overriden by this redirect URL.
Eg : http://yoursite.com?id=<hosted_page_id>&state=succeeded.
optional, string, max chars=250
cancel_url
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. This parameter is not applicable for iframe messaging.
Note : Cancel URL configured in Settings > Hosted Pages Settings would be overriden by this cancel URL.
Eg : http://yoursite.com?id=<hosted_page_id>&state=cancelled.
optional, string, max chars=250
pass_thru_content
You can pass through any content specific to the hosted page request and get it back after user had submitted the hosted page.
optional, string, max chars=2048
embed
If true then hosted page formatted to be shown in in-app iframe embed.If false, it is formatted to be shown as a separate page .
optional, boolean, default=true
iframe_messaging
If true then iframe will communicate with the parent window. Applicable only for embedded(iframe) hosted pages. If you're using iframe_messaging you need to implement onSuccess & onCancel callbacks. To know more about iframe_messaging please refer to this tutorial.
optional, boolean, default=false
customer
Parameters for customer
pass parameters as customer[<param name>]
customer[id]
Identifier of the customer.
required, string, max chars=50
card
Parameters for card
pass parameters as card[<param name>]
card[gateway_account_id]
The gateway account in which this payment source is stored.
optional, string, max chars=50
Resource object representing hosted_page.
always returned
Acknowledges the success hosted page. Applicable only if the hosted page state is succeeded.
Sample Request
curl  https://{site}.chargebee.com/api/v2/hosted_pages/hX5XDpqpSN4g82uew8pbzCe15qdyS2YP/acknowledge \
     -X POST  \
     -u {site_api_key}:
copy
curl  https://{site}.chargebee.com/api/v2/hosted_pages/hX5XDpqpSN4g82uew8pbzCe15qdyS2YP/acknowledge \
     -X POST  \
     -u {site_api_key}:

Sample Response [ JSON ]

{"hosted_page": { "id": "hX5XDpqpSN4g82uew8pbzCe15qdyS2YP", "type": "checkout_new", "url": "https://yourapp.chargebee.com/pages/v2/hX5XDpqpSN4g82uew8pbzCe15qdyS2YP/checkout", "state": "acknowledged", "embed": true, "created_at": 1505917604, "expires_at": 1505921204, "object": "hosted_page", "content": { "subscription": { "id": "3Nl8KfcQVm8nIa6j", "customer_id": "3Nl8KfcQVm8nIa6j", "plan_id": "basic", "plan_quantity": 1, "plan_unit_price": 900, "billing_period": 1, "billing_period_unit": "month", "plan_free_quantity": 0, "status": "in_trial", "trial_start": 1505917615, "trial_end": 1508509615, "next_billing_at": 1508509615, "created_at": 1505917615, "started_at": 1505917615, "affiliate_token": "hX5XDpqpSN4g82uew8pbzCe15qdyS2YP", "created_from_ip": "127.0.0.1", "updated_at": 1505917616, "has_scheduled_changes": false, "resource_version": 1505917616000, "deleted": false, "object": "subscription", "currency_code": "USD", "due_invoices_count": 0, "shipping_address": { "first_name": "Hello", "last_name": "World", "phone": "122242222", "line1": "Wow", "line2": "Cool", "city": "Chennai", "state_code": "TN", "state": "Tamil Nadu", "country": "IN", "zip": "600041", "validation_status": "not_validated", "object": "shipping_address" } }, "customer": { "id": "3Nl8KfcQVm8nIa6j", "first_name": "Hello", "last_name": "World", "email": "john@acmeinc.com", "auto_collection": "on", "net_term_days": 0, "allow_direct_debit": false, "created_at": 1505917615, "created_from_ip": "127.0.0.1", "taxability": "taxable", "updated_at": 1505917616, "resource_version": 1505917616000, "deleted": false, "object": "customer", "billing_address": { "first_name": "Hello", "last_name": "World", "phone": "122242222", "line1": "Wow", "line2": "Cool", "city": "Chennai", "state_code": "TN", "state": "Tamil Nadu", "country": "IN", "zip": "600041", "validation_status": "not_validated", "object": "billing_address" }, "card_status": "valid", "primary_payment_source_id": "pm_3Nl8KVeQVm8qdN5", "payment_method": { "object": "payment_method", "type": "card", "reference_id": "tok_3Nl8KVeQVm8qcr4", "gateway": "chargebee", "gateway_account_id": "gw_3Nl8KfcQVm8Whp2", "status": "valid" }, "promotional_credits": 0, "refundable_credits": 0, "excess_payments": 0, "unbilled_charges": 0, "preferred_currency_code": "USD" }, "card": { "status": "valid", "gateway": "chargebee", "gateway_account_id": "gw_3Nl8KfcQVm8Whp2", "first_name": "Hello", "last_name": "World", "iin": "411111", "last4": "1111", "card_type": "visa", "funding_type": "credit", "expiry_month": 10, "expiry_year": 2020, "ip_address": "127.0.0.1", "object": "card", "masked_number": "************1111", "customer_id": "3Nl8KfcQVm8nIa6j", "payment_source_id": "pm_3Nl8KVeQVm8qdN5" } }, "updated_at": 1505917715, "resource_version": 1505917715000, "checkout_info": { "client_ip": "127.0.0.1", "order_value": 900, "currency": "USD", "locale": "en", "checkout_submit": [ { "gateway": { "id": "gw_3Nl8KfcQVm8Whp2", "name": "CHARGEBEE" }, "status": "succeeded", "timestamp": 1505917616441, "payment_method": "card", "card_type": "visa" }, {..} ], "order_items": [ { "entity_type": "plan", "entity_id": "basic" }, {..} ], "shipping.ship.to.billing": "true", "customer": {"email": "john@acmeinc.com"}, "billing_address": { "first_name": "Hello", "last_name": "World", "line1": "Wow", "line2": "Cool", "city": "Chennai", "zip": "600041", "country": "IN", "state_code": "TN", "phone": "122242222" } } }}

URL Format POST

https://{site}.chargebee.com/api/v2/hosted_pages/{hosted_page_id}/acknowledge
Resource object representing hosted_page.
always returned
Retrieves the hosted page resource.
Sample Request
curl  https://{site}.chargebee.com/api/v2/hosted_pages/hX5XDpqpSN4g82uew8pbzCe15qdyS2YP \
     -u {site_api_key}:
copy
curl  https://{site}.chargebee.com/api/v2/hosted_pages/hX5XDpqpSN4g82uew8pbzCe15qdyS2YP \
     -u {site_api_key}:

Sample Response [ JSON ]

{"hosted_page": { "id": "hX5XDpqpSN4g82uew8pbzCe15qdyS2YP", "type": "checkout_new", "url": "https://yourapp.chargebee.com/pages/v2/hX5XDpqpSN4g82uew8pbzCe15qdyS2YP/checkout", "state": "acknowledged", "embed": true, "created_at": 1505917604, "expires_at": 1505921204, "object": "hosted_page", "content": { "subscription": { "id": "3Nl8KfcQVm8nIa6j", "customer_id": "3Nl8KfcQVm8nIa6j", "plan_id": "basic", "plan_quantity": 1, "plan_unit_price": 900, "billing_period": 1, "billing_period_unit": "month", "plan_free_quantity": 0, "status": "in_trial", "trial_start": 1505917615, "trial_end": 1508509615, "next_billing_at": 1508509615, "created_at": 1505917615, "started_at": 1505917615, "affiliate_token": "hX5XDpqpSN4g82uew8pbzCe15qdyS2YP", "created_from_ip": "127.0.0.1", "updated_at": 1505917616, "has_scheduled_changes": false, "resource_version": 1505917616000, "deleted": false, "object": "subscription", "currency_code": "USD", "due_invoices_count": 0, "shipping_address": { "first_name": "Hello", "last_name": "World", "phone": "122242222", "line1": "Wow", "line2": "Cool", "city": "Chennai", "state_code": "TN", "state": "Tamil Nadu", "country": "IN", "zip": "600041", "validation_status": "not_validated", "object": "shipping_address" } }, "customer": { "id": "3Nl8KfcQVm8nIa6j", "first_name": "Hello", "last_name": "World", "email": "john@acmeinc.com", "auto_collection": "on", "net_term_days": 0, "allow_direct_debit": false, "created_at": 1505917615, "created_from_ip": "127.0.0.1", "taxability": "taxable", "updated_at": 1505917616, "resource_version": 1505917616000, "deleted": false, "object": "customer", "billing_address": { "first_name": "Hello", "last_name": "World", "phone": "122242222", "line1": "Wow", "line2": "Cool", "city": "Chennai", "state_code": "TN", "state": "Tamil Nadu", "country": "IN", "zip": "600041", "validation_status": "not_validated", "object": "billing_address" }, "card_status": "valid", "primary_payment_source_id": "pm_3Nl8KVeQVm8qdN5", "payment_method": { "object": "payment_method", "type": "card", "reference_id": "tok_3Nl8KVeQVm8qcr4", "gateway": "chargebee", "gateway_account_id": "gw_3Nl8KfcQVm8Whp2", "status": "valid" }, "promotional_credits": 0, "refundable_credits": 0, "excess_payments": 0, "unbilled_charges": 0, "preferred_currency_code": "USD" }, "card": { "status": "valid", "gateway": "chargebee", "gateway_account_id": "gw_3Nl8KfcQVm8Whp2", "first_name": "Hello", "last_name": "World", "iin": "411111", "last4": "1111", "card_type": "visa", "funding_type": "credit", "expiry_month": 10, "expiry_year": 2020, "ip_address": "127.0.0.1", "object": "card", "masked_number": "************1111", "customer_id": "3Nl8KfcQVm8nIa6j", "payment_source_id": "pm_3Nl8KVeQVm8qdN5" } }, "updated_at": 1505917715, "resource_version": 1505917715000, "checkout_info": { "client_ip": "127.0.0.1", "order_value": 900, "currency": "USD", "locale": "en", "checkout_submit": [ { "gateway": { "id": "gw_3Nl8KfcQVm8Whp2", "name": "CHARGEBEE" }, "status": "succeeded", "timestamp": 1505917616441, "payment_method": "card", "card_type": "visa" }, {..} ], "order_items": [ { "entity_type": "plan", "entity_id": "basic" }, {..} ], "shipping.ship.to.billing": "true", "customer": {"email": "john@acmeinc.com"}, "billing_address": { "first_name": "Hello", "last_name": "World", "line1": "Wow", "line2": "Cool", "city": "Chennai", "zip": "600041", "country": "IN", "state_code": "TN", "phone": "122242222" } } }}

URL Format GET

https://{site}.chargebee.com/api/v2/hosted_pages/{hosted_page_id}
Resource object representing hosted_page.
always returned
Sample Request
curl  https://{site}.chargebee.com/api/v2/hosted_pages \
     -G  \
     -u {site_api_key}: \
     --data-urlencode limit="5"
copy
curl  https://{site}.chargebee.com/api/v2/hosted_pages \
     -G  \
     -u {site_api_key}: \
     --data-urlencode limit="5"

Sample Response [ JSON ]

{ "list": [ {"hosted_page": { "id": "o8xwnLFiMaIbmrIrcuIkzERXoyD3GRhV4", "type": "checkout_new", "url": "https://yourapp.chargebee.com/pages/v2/o8xwnLFiMaIbmrIrcuIkzERXoyD3GRhV4/checkout", "state": "created", "embed": true, "created_at": 1505917715, "expires_at": 1505921315, "object": "hosted_page", "updated_at": 1505917715, "resource_version": 1505917715000 }}, {..} ], "next_offset": "[\"1505917715000\",\"117000000004\"]" }

URL Format GET

https://{site}.chargebee.com/api/v2/hosted_pages
limit
Limits the number of resources to be returned.
optional, integer, default=10, min=1, max=100
offset
Allows you to fetch the next set of resources. The value used for this parameter must be the value returned for next_offset parameter in the previous API call.
optional, string, max chars=1000
Filter Params
For operator usages, see the Pagination and Filtering section.
id[<operator>]
To filter based on HostedPage Id.
Supported operators : is, is_not, starts_with, in, not_in

Example id[is] = "Edi69nxpu6BeGBd9Fjcd0tqCSwb0sRcuKa"
optional, string filter
type[<operator>]
To filter based on HostedPage Type. Possible values are : checkout_new, checkout_existing, update_payment_method, manage_payment_sources, collect_now.
Supported operators : is, is_not, in, not_in

Example type[is] = "checkout_new"
optional, enumerated string filter
state[<operator>]
To filter based on HostedPage State. Possible values are : created, requested, succeeded, cancelled, acknowledged.
Supported operators : is, is_not, in, not_in

Example state[is] = "succeeded"
optional, enumerated string filter
updated_at[<operator>]
To filter based on Updated At.
Supported operators : after, before, on, between

Example updated_at[before] = "1490784813"
optional, timestamp(UTC) in seconds filter
Resource object representing hosted_page.
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