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

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_new

Checkout new Subscription

checkout_existing

Checkout existing Subscription

update_card

Update Card for a Customer

checkout_onetime_charge

Checkout 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
created

Indicates the hosted page is just created.

requested

Indicates the hosted page is requested by the website

succeeded

Indicates the hosted page is successfully submitted by the user and response is sent to the return url.

cancelled

Indicates 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.


Possible values are
checkout_new

Checkout new Subscription

checkout_existing

Checkout existing Subscription

update_card

Update Card for a Customer

checkout_onetime_charge

Checkout One time Charge

Show all values[+]
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.


Possible values are
created

Indicates the hosted page is just created.

requested

Indicates the hosted page is requested by the website

succeeded

Indicates the hosted page is successfully submitted by the user and response is sent to the return url.

cancelled

Indicates the page is cancelled by the end user after requesting it.

Show all values[+]
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

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/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
Checkout a new subscription with customer details.
200:
OK
STATUS

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=&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=&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[phone]
optional, string, max chars=50
customer[taxability]
optional, enumerated string, default=taxable
Possible values are
taxable

Computes 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[+]
card[gateway]
optional, enumerated string
Possible values are
chargebee

Chargebee test gateway.

stripe

Stripe is a payment gateway.

braintree

Braintree is a payment gateway.

authorize_net

Authorize.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

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
200:
OK
STATUS

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=&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=&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
chargebee

Chargebee test gateway.

stripe

Stripe is a payment gateway.

braintree

Braintree is a payment gateway.

authorize_net

Authorize.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.
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
200:
OK
STATUS

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=&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=&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
chargebee

Chargebee test gateway.

stripe

Stripe is a payment gateway.

braintree

Braintree is a payment gateway.

authorize_net

Authorize.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.

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
200:
OK
STATUS

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
chargebee

Chargebee test gateway.

stripe

Stripe is a payment gateway.

braintree

Braintree is a payment gateway.

authorize_net

Authorize.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.

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
200:
OK
STATUS

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
chargebee

Chargebee test gateway.

stripe

Stripe is a payment gateway.

braintree

Braintree is a payment gateway.

authorize_net

Authorize.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.

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

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