ml-connector
Sage 100Chargebee

Sage 100 and Chargebee integration

Sage 100 is your on-premises ERP for order-to-cash and invoice-to-pay. Chargebee is your subscription and recurring billing engine. Connecting the two keeps customer AR records in Sage 100 aligned with subscription invoices in Chargebee, and payment status flows back into your AR ledger automatically. ml-connector handles the transport bridge between your local Sage 100 server and Chargebee's multi-region REST platform, so you do not have to re-key billing records by hand.

How Sage 100 works

Sage 100 runs on the customer's Windows server and exposes AR, AP, GL, inventory, and purchasing entities through SOAP Web Services (eBusiness) or a local COM-based agent. Customers and sales orders are accessible via SOAP at the IIS endpoint; full AP, GL, and purchasing access requires a local Windows service running the BOI (Business Object Interface) layer. Authentication uses username and password passed per call with no token refresh. Sage 100 has no webhooks or push events, so records are read by polling the DateLastUpdated and DateCreated fields on a schedule you set. Every call requires the customer's three-character company code and an IIS SSL certificate on the server.

How Chargebee works

Chargebee is a REST-only SaaS billing platform with a per-customer subdomain and region-specific endpoint (US, EU, or AU). Authentication is HTTP Basic Auth using an API key as username and no password, base64-encoded in the Authorization header. Chargebee exposes customers, subscriptions, invoices, transactions, and payment sources. The platform pushes 200+ event types via outbound webhooks and also supports read-back via GET with offset-based pagination and a limit of 100 items per page. Rate limits depend on the plan tier (150 to 3500 requests per minute) and apply per site and region.

What moves between them

The integration flows in both directions. ml-connector polls Sage 100 for new and updated customers and AR invoices on a schedule tied to your billing cycle. Those records are mapped and upserted as Chargebee customers and subscriptions. Payment receipts and transaction status from Chargebee are read via webhook or periodic poll and posted back to Sage 100 AR as cash receipts and invoice adjustments. Each direction is idempotent and keyed on the customer record or invoice number.

How ml-connector handles it

ml-connector stores Sage 100 credentials encrypted and connects to the customer's on-premises SOAP endpoint on every poll cycle, passing the company code and user credentials per call. It respects Sage 100's COM record-locking constraints and backs off on conflicts. On the Chargebee side, it looks up the customer's subdomain and region from its configuration and makes all calls to the region-specific base URL, authenticated with the site's API key via Basic Auth. Chargebee's rate limits are tracked across request types (concurrent GETs capped at 50, POSTs at 100) so ml-connector does not exceed tier limits. Webhook events from Chargebee carry no HMAC signature, so ml-connector verifies them by re-fetching from the Chargebee API. Customer and invoice matches are keyed on Sage 100 AR customer number and invoice reference; the mapping is configurable per customer.

A real-world example

A mid-market SaaS company bills customers through Chargebee for recurring software subscriptions, but also runs Sage 100 on-premises for order fulfillment and AR. Before the integration, the billing team exported new subscriptions from Chargebee weekly and manually entered them as invoices into Sage 100's AR ledger, and when payment arrived in Chargebee it was logged by hand in Sage 100 as a cash receipt. With Sage 100 and Chargebee connected, each new subscription is written to Sage 100 as an invoice automatically, and payment receipts flow back without re-keying. AR reconciliation runs faster because the two systems agree on open invoices and payment status.

What you can do

  • Poll Sage 100 AR for new and updated customer records and sync them to Chargebee as customers and contacts.
  • Create subscriptions in Chargebee from Sage 100 sales order templates, with billing mapped to the customer and amount.
  • Post Chargebee invoices back to Sage 100 AR with correct invoice reference and revenue account coding.
  • Write Chargebee payment receipts and transaction status back to Sage 100 AR to keep cash receipts aligned.
  • Route all communication through the correct Chargebee region and respect Sage 100's company code, on-premises server address, and record-lock retry backoff.

Questions

How does ml-connector connect to Sage 100 if it runs on-premises?
ml-connector uses SOAP over HTTPS to call the Sage 100 eBusiness Web Services endpoint on your customer's IIS server, or it can connect to a local Windows service running the BOI (Business Object Interface) COM agent if that is deployed. Credentials are stored encrypted and passed per call. The integration requires the customer's exact server address (host and port), IIS SSL certificate, and three-character company code.
Does the integration handle Chargebee's rate limits and pagination?
Yes. ml-connector respects Chargebee's rate limits per plan tier (150 to 3500 requests per minute) and enforces a max of 50 concurrent GETs and 100 concurrent POSTs. Pagination uses offset-based limits of 100 items per page, and ml-connector handles page iteration transparently. The integration also adapts to the customer's Chargebee region (US, EU, or AU) and uses the correct subdomain and endpoint.
What happens when a payment is received in Chargebee?
Chargebee pushes a payment.succeeded event via webhook. ml-connector receives the event, verifies it by re-fetching from the Chargebee API (since Chargebee does not use HMAC signatures), extracts the customer and invoice reference, and posts a cash receipt into Sage 100 AR with the correct amount and date. If the webhook is missed, ml-connector can also poll Chargebee transactions on a schedule and catch up on the next cycle.

Related integrations

Connect Sage 100 and Chargebee

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started