API Version
Product Catalog
Library

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 and 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. There are a few limitations:

  • Your site URL must be embedded with HTTPS.
  • Set the appropriate height and width for the iframe to avoid scrolling.

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 and invoice based on the type of the hosted page.

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.

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.

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 and card resources.

Sample hosted page [ JSON ]

{ "created_at": 1517506797, "embed": true, "expires_at": 1517510397, "id": "__test__KfW0lW3V4e8fhHtugBdLaUcuJL60OycPv", "object": "hosted_page", "state": "created", "type": "checkout_new", "url": "https://yourapp.chargebee.com/pages/v2/__test__KfW0lW3V4e8fhHtugBdLaUcuJL60OycPv/checkout" }

API Index URL GET

https://{site}.chargebee.com/api/v1/hosted_pages

Model Class

id
optional, string, max chars=70
Unique identifier generated for each hosted page requested.
type
optional, enumerated string
Type of the requested hosted page.
Possible values are
checkout_newCheckout new Subscriptioncheckout_existingCheckout existing Subscriptionupdate_cardUpdate Card for a Customercheckout_onetime_chargeCheckout One time Charge
Show all values[+]
url
optional, string, max chars=250
Unique URL for the hosted page that will be included in your website.
state
optional, enumerated string, default=created
Indicating the current state of the hosted page resource.
Possible values are
createdIndicates the hosted page is just created.requestedIndicates the hosted page is requested by the websitesucceededIndicates 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.
Show all values[+]
pass_thru_content
optional, string, max chars=2048
You can pass through any content specific to the hosted page request and get it back after user had submitted the hosted page.
embed
boolean, default=true
If true then hosted page formatted to be shown in iframe. If false, it is formatted to be shown as a separate page.

Note : For in-app checkout, default is false.

created_at
optional, timestamp(UTC) in seconds
Indicates when this hosted page url is generated.
expires_at
optional, timestamp(UTC) in seconds
Indicates when this hosted page url will expire. After this, the hosted page cannot be accessed.
content
jsonobject
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 "cancelled" 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 "cancelled", then it will be empty i.e no information about checkout.

id id
optional, string, max chars=70
Unique identifier generated for each hosted page requested.
type type
optional, enumerated string
Type of the requested hosted page.
url url
optional, string, max chars=250
Unique URL for the hosted page that will be included in your website.
state state
optional, enumerated string, default=created
Indicating the current state of the hosted page resource.
pass_thru_content pass_thru_content
optional, string, max chars=2048
You can pass through any content specific to the hosted page request and get it back after user had submitted the hosted page.
embed embed
boolean, default=true
If true then hosted page formatted to be shown in iframe. If false, it is formatted to be shown as a separate page.

Note : For in-app checkout, default is false.

created_at created_at
optional, timestamp(UTC) in seconds
Indicates when this hosted page url is generated.
expires_at expires_at
optional, timestamp(UTC) in seconds
Indicates when this hosted page url will expire. After this, the hosted page cannot be accessed.
content
jsonobject
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 "cancelled" 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 "cancelled", then it will be empty i.e no information about checkout.

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
# checkout a new subscription with customer details.
curl  https://{site}.chargebee.com/api/v1/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[phone]="+1-949-999-9999" 
     -d subscription[plan_id]="no_trial"
copy
Click to Copy

Sample Response [ JSON ]

Show more...
{
    "hosted_page": {
        "created_at": 1517506797,
        "embed": true,
        "expires_at": 1517510397,
        "id": "__test__KfW0lW3V4e8fhHtugBdLaUcuJL60OycPv",
        "object": "hosted_page",
        "state": "created",
        "type": "checkout_new",
        "url": "https://yourapp.chargebee.com/pages/v2/__test__KfW0lW3V4e8fhHtugBdLaUcuJL60OycPv/checkout"
    }
}

URL Format POST

https://{site}.chargebee.com/api/v1/hosted_pages/checkout_new

Method

billing_cycles[]
optional, integer, min=0
Number of cycles(plan interval) this subscription should be charged. After the billing cycles exhausted, the subscription will be cancelled.
redirect_url[]
optional, string, max chars=250
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. Although the customer will be redirected to the redirect_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.

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
  • This parameter is not applicable for iframe messaging.
cancel_url[]
optional, string, max chars=250
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 :
  • 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
  • This parameter is not applicable for iframe messaging and in-app checkout.
pass_thru_content[]
optional, string, max chars=2048
You can pass through any content specific to the hosted page request and get it back after user had submitted the hosted page.
embed[]
optional, boolean, default=true
If true then hosted page formatted to be shown in iframe. If false, it is formatted to be shown as a separate page.

Note : For in-app checkout, default is false.
iframe_messaging[]
optional, boolean, default=false
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.

Note : This parameter is not applicable for in-app checkout.
subscription[id]
optional, string, max chars=50
subscription[plan_id]
required, string, max chars=100
subscription[plan_quantity]
optional, integer, default=1, min=1
subscription[trial_end]
optional, timestamp(UTC) in seconds
subscription[start_date]
optional, timestamp(UTC) in seconds
subscription[coupon]
optional, string, max chars=100
customer[id]
optional, string, max chars=50
customer[email]
optional, string, max chars=70
customer[first_name]
optional, string, max chars=150
customer[last_name]
optional, string, max chars=150
customer[company]
optional, string, max chars=250
customer[taxability]
optional, enumerated string, default=taxable
Possible values are
taxableComputes tax for the customer based on the site configuration. In some cases, depending on the region, shipping_address is needed. If not provided, then billing_address is used to compute tax. If that’s not available either, the tax is taken as zero.exempt
  • Customer is exempted from tax. When using Chargebee’s native Taxes feature or when using the TaxJar integration, no other action is needed.
  • However, when using our Avalara integration, optionally, specify entity_code or exempt_number attributes if you use Chargebee’s AvaTax for Sales or specify exemption_details attribute if you use Chargebee’s AvaTax for Communications integration. Tax may still be applied by Avalara for certain values of entity_code/exempt_number/exemption_details based on the state/region/province of the taxable address.
Show all values[+]
customer[phone]
optional, string, max chars=50
card[gateway]
optional, enumerated string
Possible values are
chargebeeChargebee test gateway.stripeStripe is a payment gateway.braintreeBraintree is a payment gateway.authorize_netAuthorize.net is a payment gateway
Show all values[+]
addons[id][0..n]
optional, string, max chars=100
addons[quantity][0..n]
optional, integer, default=1, min=1
hosted_page hosted_page
always returned
Resource object representing hosted_page

Sample admin console URL

https://{site}.chargebee.com/admin-console/hosted_pages/123x

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/v1/hosted_pages/checkout_existing \
     -u {site_api_key}:\
     -d subscription[id]="__test__5SK0bLNFRFuCRrBP6" \
     -d subscription[plan_id]="sub_plan1"
copy
Click to Copy

Sample Response [ JSON ]

Show more...
{
    "hosted_page": {
        "created_at": 1517506795,
        "embed": true,
        "expires_at": 1517510395,
        "id": "__test__IOc7dyRIztXRW3StXU1aEv72qcdxcuoscu",
        "object": "hosted_page",
        "state": "created",
        "type": "checkout_existing",
        "url": "https://yourapp.chargebee.com/pages/v2/__test__IOc7dyRIztXRW3StXU1aEv72qcdxcuoscu/checkout"
    }
}

URL Format POST

https://{site}.chargebee.com/api/v1/hosted_pages/checkout_existing

Method

replace_addon_list[]
optional, boolean, default=false
Should be true if the existing addons should be replaced with the ones that are being passed.
billing_cycles[]
optional, integer, min=0
The number of billing cycles the subscription runs before canceling. If not provided, then the billing cycles set for the plan is used.
redirect_url[]
optional, string, max chars=250
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. Although the customer will be redirected to the redirect_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.

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
  • This parameter is not applicable for iframe messaging.
cancel_url[]
optional, string, max chars=250
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 :
  • 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
  • This parameter is not applicable for iframe messaging and in-app checkout.
pass_thru_content[]
optional, string, max chars=2048
You can pass through any content specific to the hosted page request and get it back after user had submitted the hosted page.
embed[]
optional, boolean, default=true
If true then hosted page formatted to be shown in iframe. If false, it is formatted to be shown as a separate page.

Note : For in-app checkout, default is false.
iframe_messaging[]
optional, boolean, default=false
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.

Note : This parameter is not applicable for in-app checkout.
subscription[id]
required, string, max chars=50
subscription[plan_id]
optional, string, max chars=100
subscription[plan_quantity]
optional, integer, default=1, min=1
subscription[start_date]
optional, timestamp(UTC) in seconds
subscription[trial_end]
optional, timestamp(UTC) in seconds
subscription[coupon]
optional, string, max chars=100
card[gateway]
optional, enumerated string
Possible values are
chargebeeChargebee test gateway.stripeStripe is a payment gateway.braintreeBraintree is a payment gateway.authorize_netAuthorize.net is a payment gateway
Show all values[+]
addons[id][0..n]
optional, string, max chars=100
addons[quantity][0..n]
optional, integer, default=1, min=1
hosted_page hosted_page
always returned
Resource object representing hosted_page

Sample admin console URL

https://{site}.chargebee.com/admin-console/hosted_pages/123x

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.

Notes

Sample Request
curl  https://{site}.chargebee.com/api/v1/hosted_pages/update_payment_method \
     -u {site_api_key}:\
     -d customer[id]="__test__5SK0bLNFRFuCV8XPz" 
     -d card[gateway]="STRIPE"
copy
Click to Copy

Sample Response [ JSON ]

Show more...
{
    "hosted_page": {
        "created_at": 1517506808,
        "embed": true,
        "expires_at": 1517593208,
        "id": "__test__LCYvWQeyDm1CRJ2XtHLWbMcXBC1qIpwX",
        "object": "hosted_page",
        "state": "created",
        "type": "update_payment_method",
        "url": "https://yourapp.chargebee.com/pages/v2/__test__LCYvWQeyDm1CRJ2XtHLWbMcXBC1qIpwX/update_payment_method"
    }
}

URL Format POST

https://{site}.chargebee.com/api/v1/hosted_pages/update_payment_method

Method

redirect_url[]
optional, string, max chars=250
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. Although the customer will be redirected to the redirect_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.

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
  • This parameter is not applicable for iframe messaging.
cancel_url[]
optional, string, max chars=250
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 :
  • 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
  • This parameter is not applicable for iframe messaging and in-app checkout.
pass_thru_content[]
optional, string, max chars=2048
You can pass through any content specific to the hosted page request and get it back after user had submitted the hosted page.
embed[]
optional, boolean, default=true
If true then hosted page formatted to be shown in iframe. If false, it is formatted to be shown as a separate page.

Note : For in-app checkout, default is false.
iframe_messaging[]
optional, boolean, default=false
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.

Note : This parameter is not applicable for in-app checkout.
customer[id]
required, string, max chars=50
card[gateway]
optional, enumerated string
Possible values are
chargebeeChargebee test gateway.stripeStripe is a payment gateway.braintreeBraintree is a payment gateway.authorize_netAuthorize.net is a payment gateway
Show all values[+]
hosted_page hosted_page
always returned
Resource object representing hosted_page

Sample admin console URL

https://{site}.chargebee.com/admin-console/hosted_pages/123x

This operation is only supported by the 2Checkout payment gateway.

Notes

Sample Request
curl  https://{site}.chargebee.com/api/v1/hosted_pages/checkout_onetime_charge \
     -u {site_api_key}:\
     -d amount=1000 \
     -d description="Support charge" \
     -d card[gateway]="TCO" 
     -d subscription[id]="__test__3Nl9RLTRcPq8iN4D"
copy
Click to Copy

Sample Response [ JSON ]

Show more...
{
    "hosted_page": {
        "created_at": 1517479643,
        "embed": false,
        "expires_at": 1517483243,
        "id": "__test__5X3rIcaJacdULq1RmylwfFfmKZg66jFa5",
        "object": "hosted_page",
        "state": "created",
        "type": "checkout_onetime_charge",
        "url": "https://yourapp.chargebee.com/pages/__test__5X3rIcaJacdULq1RmylwfFfmKZg66jFa5/checkout"
    }
}

URL Format POST

https://{site}.chargebee.com/api/v1/hosted_pages/checkout_onetime_charge

Method

amount[]
required, in cents, min=1
The amount to be charged. The unit depends on the type of currency.
description[]
required, string, max chars=250
Description for this charge.
pass_thru_content[]
optional, string, max chars=2048
You can pass through any content specific to the hosted page request and get it back after user had submitted the hosted page.
subscription[id]
required, string, max chars=50
card[gateway]
optional, enumerated string
Possible values are
chargebeeChargebee test gateway.stripeStripe is a payment gateway.braintreeBraintree is a payment gateway.authorize_netAuthorize.net is a payment gateway
Show all values[+]
hosted_page hosted_page
always returned
Resource object representing hosted_page

Sample admin console URL

https://{site}.chargebee.com/admin-console/hosted_pages/123x

This operation is only supported by the 2Checkout payment gateway.

Notes

Sample Request
curl  https://{site}.chargebee.com/api/v1/hosted_pages/checkout_onetime_addons \
     -u {site_api_key}:\
     -d subscription[id]="__test__3Nl9RLTRcPq8eH3z" 
     -d card[gateway]="TCO" 
     -d addons[id][0]="non_recurring_addon" \
     -d addons[quantity][0]=1 
copy
Click to Copy

Sample Response [ JSON ]

Show more...
{
    "hosted_page": {
        "created_at": 1517479643,
        "embed": false,
        "expires_at": 1517483243,
        "id": "__test__0aMPyYyzZNVFNcu1qDoh9aQ7UERW8YJ1g",
        "object": "hosted_page",
        "state": "created",
        "type": "checkout_onetime_addons",
        "url": "https://yourapp.chargebee.com/pages/__test__0aMPyYyzZNVFNcu1qDoh9aQ7UERW8YJ1g/checkout"
    }
}

URL Format POST

https://{site}.chargebee.com/api/v1/hosted_pages/checkout_onetime_addons

Method

coupon[]
optional, string, max chars=100
The coupon code to be applied.
pass_thru_content[]
optional, string, max chars=2048
You can pass through any content specific to the hosted page request and get it back after user had submitted the hosted page.
subscription[id]
required, string, max chars=50
card[gateway]
optional, enumerated string
Possible values are
chargebeeChargebee test gateway.stripeStripe is a payment gateway.braintreeBraintree is a payment gateway.authorize_netAuthorize.net is a payment gateway
Show all values[+]
addons[id][0..n]
required, string, max chars=100
addons[quantity][0..n]
optional, integer, default=1, min=1
hosted_page hosted_page
always returned
Resource object representing hosted_page

Sample admin console URL

https://{site}.chargebee.com/admin-console/hosted_pages/123x
This API is used to retrieve a hosted page. You will get the URL from the API response.

Notes

Sample Request
curl  https://{site}.chargebee.com/api/v1/hosted_pages/__test__notOvqU0psFG0HAxwoePXHQJAN2ruDhG \
     -u {site_api_key}:
copy
Click to Copy

Sample Response [ JSON ]

Show more...
{
    "hosted_page": {
        "created_at": 1517506803,
        "embed": true,
        "expires_at": 1517510403,
        "id": "__test__notOvqU0psFG0HAxwoePXHQJAN2ruDhG",
        "object": "hosted_page",
        "state": "created",
        "type": "checkout_existing",
        "url": "https://yourapp.chargebee.com/pages/v2/__test__notOvqU0psFG0HAxwoePXHQJAN2ruDhG/checkout"
    }
}

URL Format GET

https://{site}.chargebee.com/api/v1/hosted_pages/{hosted-page-id}

Method

hosted_page hosted_page
always returned
Resource object representing hosted_page

Sample admin console URL

https://{site}.chargebee.com/admin-console/hosted_pages/123x