Integrate iPaaS.com with Chargebee to enable seamless data synchronization for customers and their billing addresses, item prices (as products), invoices and credit notes TO iPaaS.com, and customers FROM iPaaS.com.
How to Connect
Prerequisites
A Chargebee site on Product Catalog 2.0. The integration is built for sites that use Product Catalog 2.0 (items and item prices). When Chargebee refuses the item price read as incompatible with the site's configuration, the integration treats the site as not using Product Catalog 2.0 and stops every transfer with CHGB-BIZL-1009. Subscribers or their MiSP should confirm the site's catalog with Chargebee support before subscribing, and validate the connection in a staging environment before relying on it in production.
A full-access Chargebee API key for that site. Chargebee states that "API keys can be viewed and created by users with admin access to Chargebee" and that "the API keys are different for your test site and your live site" (Chargebee API: Authentication). Create it in Chargebee under Settings > Configure Chargebee > API Keys and Webhooks, the API Keys tab (some Chargebee help names the page API Keys and Events: Chargebee: API keys): click Add API Key, choose Full-Access Key, name it (for example "iPaaS.com") and click Create Key.
A free webhook slot on the site. Chargebee allows "up to five webhook endpoints per site" (Chargebee API: Webhook endpoints); the integration registers one per iPaaS.com subscription.
Configuration Details
Chargebee Site: the Chargebee site the subscription connects to, from your Chargebee address. Enter the bare site name or the full address. Example: acme-test, or acme-test.chargebee.com.
API Key: the full-access API key of that same site. Example: (your key, as Chargebee shows it when you create it).
Configure Subscription Settings
Field | Description | Required | Example |
Chargebee Site | The Chargebee site to connect to. A bare site name, a full address (with or without https://), capital letters, a trailing slash or the address of a page on the site all work and point to the same site. A value that isn't a site name, including an API key pasted here, is refused with CHGB-AUTH-1001 on the next transfer. iPaaS.com refuses to save it empty. | Yes | acme-test |
API Key | A full-access API key of the same site. Masked once saved; never shown in logs or errors. iPaaS.com refuses to save it empty. | Yes | (your full-access key) |
Initial Poll Days | How many days back the first poll of each data type looks; each later poll picks up from the last change it saw. Allowed values 1 to 3650. Blank is saved as 7. | No | 7 |
Poll Page Size | How many records each poll request reads from Chargebee. Allowed values 1 to 100 (Chargebee's largest page). Blank is saved as 100. | No | 100 |
API Throttle Limit | The number of calls to Chargebee allowed per throttle period. Pre-populated. | Yes | 500 |
API Throttle Seconds | The length of the throttle period, in seconds. Pre-populated. | Yes | 60 |
API Throttle Limit (To iPaaS) | The number of calls back to iPaaS.com allowed per throttle period, for transfers TO iPaaS.com. Pre-populated. | Yes | 500 |
API Throttle Seconds (To iPaaS) | The length of that throttle period, in seconds. Pre-populated. | Yes | 60 |
Concurrent Connections | How many transfers run at the same time. Pre-populated. Keep it low, within what your Chargebee plan's API limit allows. | Yes | 2 |
Concurrent Batch Executions | Not used by this integration. Leave the default. | No | 10 |
Number Settings
iPaaS.com refuses to save Initial Poll Days or Poll Page Size when it holds something that isn't a number (VALD-1156), and saves a blank one as its default (7 days, 100 per page). A number the integration can't use as entered is adjusted rather than refused: a value outside the allowed range uses the nearest allowed value, and a decimal uses its whole part. Each time the integration connects, it writes a warning in the transfer's activity log (Dashboard / Integration Monitoring) naming the setting and the value it used, never the value entered, for example: The "Poll Page Size" setting is above 100, so 100 is used. The warning does not appear in Logs or in Error Logs, and the transfer carries on.
Initial Poll Days matters only before the first poll of each data type: raising it later doesn't re-read older records. The poll events themselves are events of the type Webhook (Poll Request); the Chargebee Installation Instructions describe them, including the Filter rule each transaction poll needs.
Values the Integration Stores
Once the subscription has exchanged data with Chargebee, the settings page also lists values the integration saved for itself:
Chargebee Linked Site: the Chargebee site this subscription first exchanged data with. The integration compares it with Chargebee Site at the start of every transfer and stops with CHGB-BIZL-1008 when they differ. Don't edit or delete it to move the subscription to another site; add a new subscription for that site instead.
Chargebee Webhook Endpoint: the id of the webhook endpoint the integration registered in Chargebee. The integration keeps it current itself; don't edit it.
Authentication Methods
In Chargebee, create a full-access API key on the site this subscription connects to (see Prerequisites).
In the iPaaS.com subscription settings, enter Chargebee Site and API Key, then click Apply. There is no separate Authorize step: saving is the authorization.
iPaaS.com uses the API key to sign every call to Chargebee. Chargebee "uses HTTP Basic authentication for API calls. The username is your API key while the password is empty" (Chargebee API: Authentication). The integration keeps using the saved key until you change it.
At the start of every transfer, the integration checks the connection by reading item prices from the site. This checks the key, the site name and that the site answers item price requests at once. When the check fails, the transfer's error in Dashboard / Integration Monitoring / Error Logs reads only "Unable to connect to subscription with id N"; the reason is in the company's Logs at the error's time:
CHGB-AUTH-1001: Chargebee Site holds something that isn't a site name (the message says when it looks like an API key, without repeating it).
CHGB-AUTH-1002: Chargebee refused the key (HTTP 401, with Chargebee's reason): wrong, deleted, or from another site.
CHGB-NFND-1001 naming site_not_found: Chargebee has no site with the name in Chargebee Site, for example a mistyped site name.
CHGB-EXTN-1002: no answer came back from Chargebee at all, for example because of a Chargebee Site value with extra text in it, or a network or Chargebee outage; after an outage the transfer retries by itself.
CHGB-BIZL-1009: Chargebee refused the item price read as incompatible with the site's configuration; the site does not appear to use Product Catalog 2.0.
CHGB-BIZL-1008: Chargebee Site names another site than the one this subscription remembers (see below).
Use a Full-Access Key. Chargebee's Read-Only Key "allows read-only access to transactional and configuration data", and a restricted read-only key reaches only the API groups selected for it (Chargebee: API keys). Such a key is refused with CHGB-AUTZ-1001 wherever it lacks permission, including customer writes FROM iPaaS.com and the webhook endpoint registration. Subscribers or their MiSP should validate any key other than a Full-Access Key in a staging environment before relying on it in production.
One subscription per Chargebee site. The subscription remembers the Chargebee site it first exchanged data with. Each Chargebee site keeps its own numbering, so two sites can each hold an invoice 1042, and another site's records could overwrite this site's in iPaaS.com. If Chargebee Site later names another site, every transfer stops with CHGB-BIZL-1008: change it back to the site the message names, or add a new subscription for the other site. Correcting a mistyped site name is safe, because a site that doesn't exist never exchanges data (it gives CHGB-NFND-1001 with site_not_found).
Changing the key: create a new full-access key on the same site, enter it in API Key and click Apply; the next transfer uses it. Delete the old key in Chargebee only after the new one is saved.
Webhooks: Chargebee's webhooks reach iPaaS.com on an endpoint the integration registers in Chargebee when the first scope is set Active, named "iPaaS.com subscription {your subscription id}". Its address carries the subscription's own webhook key, so Chargebee needs no other credential. Leave that endpoint alone in Chargebee.
Initialization Support
Currently, initialization is not supported for Chargebee in iPaaS.com. All data synchronization and mappings must be configured manually during the integration process. Existing Chargebee records arrive through the first poll of each data type, which looks back Initial Poll Days: raise that setting before the first poll to bring in a longer history, or use bulk sync using Postman. A single record can be sent at any time with a Manual Sync.
Throttling
The subscription's throttle fields are pre-populated with these defaults: API Throttle Limit 500 and API Throttle Seconds 60, API Throttle Limit (To iPaaS) 500 and API Throttle Seconds (To iPaaS) 60, Concurrent Connections 2 and Concurrent Batch Executions 10. Set API Throttle Limit to no more than your Chargebee site's published per-minute limit (with API Throttle Seconds at 60). Chargebee states: "For test sites, it is 150 API calls per minute"; for live sites its published defaults are 150 (Starter), 1000 (Performance) and 3500 (Enterprise default), and "you can easily request higher limits by contacting Chargebee Support with your requirements" (Chargebee API: Error handling). On a test site or the Starter plan, lower the default 500 to 150 or less. Keep Concurrent Connections low for the same reason: each concurrent transfer calls Chargebee, so more of them use the per-minute limit faster. Concurrent Batch Executions is not used by this integration. See Subscription Configuration - Edit in the iPaaS.com Help Center for what each throttle field does.
Chargebee states: "If you receive an HTTP 429 Too Many Requests error response to an API call, it means that the API requests for your Chargebee site have exceeded acceptable limits", and that it "may also send a Retry-After header". The integration then writes a warning in the transfer's activity log, and the transfer is held and retried after that wait (60 seconds when Chargebee gives none). Subscribers or their MiSP should validate this behaviour in a staging environment before relying on it in production.

