ml-connector
Sage 300Chargebee

Sage 300 and Chargebee integration

Sage 300 runs financial operations for mid-market businesses. Chargebee manages recurring billing and subscriptions. Connecting them keeps your billing records and general ledger in agreement. New invoices in Chargebee post into Sage 300's Accounts Receivable, customer payments flow into receipt batches, and credit notes adjust outstanding balances. ml-connector bridges the different authentication models and handles the polling and webhook logic so revenue records land on the correct GL accounts without manual entry.

How Sage 300 works

Sage 300 is an on-premise ERP that exposes Accounts Payable, Accounts Receivable, General Ledger, and inventory data through REST and OData endpoints using HTTP Basic Authentication with uppercase username and password. Master data such as AR customers and GL accounts are read and written via individual resource endpoints; AR invoice batches and receipt batches are posted as complete sets. Sage 300 has no webhooks or change-data-capture, so all data is retrieved by polling using OData date/time filters and pagination. The API customer must be created in Administrative Services with Web API security group assigned, and the IIS server must be self-hosted by the customer over HTTPS.

How Chargebee works

Chargebee is a cloud subscription billing platform that exposes customers, subscriptions, invoices, payments, credit notes, and transactions through REST over HTTPS with HTTP Basic Authentication using an API key. Chargebee supports webhooks for 200+ event types across billing lifecycle, including invoice created, payment success, and credit note issued, with retries up to two days. The webhook system does not use HMAC signatures but events can be verified by fetching the original event record via API. Chargebee is read-only for revenue recognition; historical invoices and payments cannot be modified after creation.

What moves between them

Chargebee invoices, payments, and credit notes flow into Sage 300. When Chargebee generates a subscription invoice, ml-connector receives the webhook event and posts an AR invoice batch into Sage 300, mapped to the matching AR customer. When a payment succeeds in Chargebee, ml-connector creates a receipt batch in Sage 300 against the original invoice. Credit notes from Chargebee post as adjustment batches. Sage 300 customer and GL account master data is polled on a regular schedule so invoices land on valid AR customer records and GL accounts. All transactions are read-only in Chargebee; Sage 300 is the system of record for reconciliation.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the Chargebee side, it registers a webhook endpoint and receives invoice, payment, and credit note events; the endpoint URL is configurable per customer so Chargebee can push to a ml-connector-hosted or customer-hosted gateway. On the Sage 300 side, ml-connector polls GL accounts and AR customers at regular intervals to cache valid customer and account mappings. When an invoice event arrives from Chargebee, ml-connector looks up the Chargebee customer in the cached Sage 300 AR customer list, creates a new AR invoice batch with invoice line items assigned to the correct GL accounts, and posts the batch via HTTP Basic Auth with the uppercase credentials. HTTP 401 responses are retried with fresh credential parsing. Since Sage 300 is self-hosted, ml-connector accepts the full base URL per customer and validates all endpoint paths against that instance before making requests. Webhook delivery is idempotent; ml-connector deduplicates on the Chargebee event ID so duplicate pushes do not create duplicate batches. Every record carries a full audit trail.

A real-world example

A mid-sized SaaS company uses Sage 300 for financial consolidation across three business units and Chargebee for subscription management across their product lines. Before the integration, the finance team exported subscription invoices from Chargebee weekly and manually re-entered line items into Sage 300's AR module, then spent days matching payments to invoices during close. With Sage 300 and Chargebee connected, each monthly invoice posts to AR automatically on creation, payments are applied as they clear Chargebee's payment processor, and month-end reconciliation is driven by automated records instead of manual keying. The finance team can focus on close analysis instead of data entry.

What you can do

  • Post Chargebee subscription invoices into Sage 300 Accounts Receivable as invoice batches, with line items assigned to the correct GL accounts.
  • Apply Chargebee payments and create receipt batches in Sage 300 to match invoices and reduce outstanding AR balances.
  • Create adjustment batches in Sage 300 when Chargebee issues credit notes for refunds or corrections.
  • Map Chargebee customers to Sage 300 AR customers and fetch GL account master data on a schedule so invoices land on valid dimensions.
  • Deduplicate webhook events by Chargebee event ID and maintain a complete audit trail on every invoice, payment, and credit note.

Questions

Which direction does data move between Sage 300 and Chargebee?
Data flows primarily from Chargebee into Sage 300. Chargebee invoices, payments, and credit notes post into Sage 300 as AR invoice batches, receipt batches, and adjustments. Sage 300 customer and GL account master data is polled regularly so invoices land on valid records. Chargebee is read-only for revenue, so ml-connector does not write transactions back into Chargebee.
How does ml-connector handle the difference between Chargebee's webhooks and Sage 300's polling-only API?
ml-connector registers a webhook endpoint with Chargebee to receive invoice, payment, and credit note events in real time. When events arrive, ml-connector immediately maps the Chargebee customer to a Sage 300 AR customer and posts the transaction. In parallel, ml-connector polls Sage 300 on a schedule to fetch and cache GL account and AR customer master data so line items map to valid dimensions. This hybrid approach lets billing events post quickly while master data stays current.
What happens if a Chargebee customer does not have a matching AR customer in Sage 300?
ml-connector can be configured to either skip the invoice with an audit log entry or create a new AR customer in Sage 300 based on the Chargebee customer name and email. The choice depends on your close controls. If you require pre-existing customers, ml-connector will alert you via email or webhook when a Chargebee invoice arrives for a customer not found in Sage 300.

Related integrations

Connect Sage 300 and Chargebee

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

Get started