ml-connector
Epicor KineticChargebee

Epicor Kinetic and Chargebee integration

Epicor Kinetic manages your manufacturing and distribution business, while Chargebee handles subscription billing and recurring revenue. Connecting the two keeps your customer master in sync and ensures that every billing invoice and payment in Chargebee posts automatically into Epicor's general ledger without manual re-entry. New customers created in Epicor flow to Chargebee, and billing records flow back for accounting reconciliation.

How Epicor Kinetic works

Epicor Kinetic exposes customers, vendors, parts, purchase orders, invoices, AP payments, GL accounts, and custom BAQ (Business Activity Queries) through REST OData v4 endpoints. Cloud instances use a tenant-specific URL at https://<tenant>.epicorsaas.com/<instance>/api/v2/odata/<Company>/. Authentication supports Basic Auth (username and password), API Key headers (x-api-key), OAuth2 client credentials (cloud SaaS only), or Token Resource Service (on-premises). Epicor publishes no native webhooks for outbound events, so ml-connector polls using OData $filter on date fields to retrieve changed records since the last sync, with offset pagination at $top=100&$skip=0.

How Chargebee works

Chargebee is a subscription billing platform that manages customers, subscriptions, invoices, credit notes, transactions, and payment methods. It exposes data through REST API at https://{site}.chargebee.com/api/v2/, with separate test and live API keys. Authentication uses HTTP Basic Auth with the API key as the username and an empty password. Chargebee pushes outbound webhooks for over 200 event types across customers, subscriptions, invoices, payments, and credit notes, with automatic retries up to 2 days and increasing delays. API rate limits depend on the plan tier: Starter 150 requests per minute, Performance 1000 per minute, and Enterprise 3500 per minute, with 50 concurrent GET requests and 100 concurrent POST requests.

What moves between them

Customers flow from Epicor Kinetic into Chargebee on a daily or weekly schedule. ml-connector polls Epicor for customers with UpdatedOn dates since the last sync and creates or updates matching Chargebee customer records. Billing data flows in the opposite direction: Chargebee pushes invoice.created, invoice.updated, and transaction.success webhooks, and ml-connector receives those events, retrieves the full invoice and transaction details via GET, then posts corresponding GL entries into Epicor's general ledger accounts mapped to the customer's cost center or business segment.

How ml-connector handles it

ml-connector stores both credential sets encrypted and uses HTTP Basic Auth for Chargebee (API key as username) and Basic or OAuth2 for Epicor depending on the customer's deployment. On the Epicor side it accepts the full tenant and instance URL and polls using OData $filter on UpdatedOn to retrieve only changed records, using offset pagination to handle large customer sets. Chargebee webhooks arrive unsigned, so ml-connector verifies them by re-fetching the event via GET /api/v2/events/{event_id} before processing. When posting GL entries from Chargebee invoices into Epicor, ml-connector follows Epicor's two-step write pattern: it first calls GetNewAPInvHed to prepare the invoice structure, then UpdateMaster to persist it, ensuring the GL distribution lines align with pre-mapped cost centers and GL accounts. Chargebee rate limits are tracked per plan tier, and ml-connector backs off on HTTP 429 responses. Bearer tokens in Epicor expire in roughly one hour, so the OAuth2 flow implements token refresh logic. Every customer sync and every GL posting carries a full audit trail.

A real-world example

A mid-market software company sells on-premises and cloud subscription licenses through Chargebee. The finance team uses Epicor Kinetic to manage vendor relationships, procurement, and GL, but customer master data exists only in Chargebee. Each month, billing invoices and payments from Chargebee had to be re-entered into Epicor by hand for GL reconciliation and cash application. With Epicor Kinetic and Chargebee connected, new customers from Epicor are automatically synced to Chargebee when set up in the ERP, and subscription invoices and payments flow back into Epicor's GL daily. The accounting team no longer re-enters subscription revenue, payment transactions are matched to customers automatically, and month-end close runs faster because the billing accounts and GL are already in agreement.

What you can do

  • Sync Epicor Kinetic customers to Chargebee on a schedule, creating new billing accounts and updating existing ones.
  • Receive Chargebee invoice and transaction webhooks and post corresponding GL entries into Epicor's general ledger.
  • Map Chargebee invoice line items to Epicor GL accounts and cost centers, handling multi-currency and tax variations.
  • Authenticate Epicor with Basic Auth, API Key, or OAuth2, and Chargebee with HTTP Basic Auth and encrypted API keys.
  • Poll Epicor using OData with date-based filters and offset pagination, with retries on rate-limit 429 responses and full audit trails on every record.

Questions

Which direction does data flow between Epicor Kinetic and Chargebee?
Customers flow from Epicor Kinetic into Chargebee on a regular schedule, so your billing account master stays current with your ERP. Billing data flows the opposite direction: Chargebee invoice and payment webhooks trigger GL postings in Epicor, keeping your general ledger in sync with subscription revenue and cash receipts. Both directions are bidirectional for customer updates, so changes to name or billing address in either system can be reflected in the other depending on your configuration.
How does ml-connector handle Epicor's OData API and lack of webhooks?
ml-connector polls Epicor using OData $filter on the UpdatedOn date field to retrieve only customers changed since the last sync, with offset pagination to handle large datasets efficiently. Because Epicor publishes no native webhooks, polling on a daily or weekly schedule is the standard pattern. ml-connector automatically refreshes OAuth2 bearer tokens, which expire in about one hour, so credentials stay valid across multiple poll cycles.
How are Chargebee invoices mapped into Epicor GL accounts?
Before the integration runs, ml-connector requires a mapping from Chargebee items and customer segments to Epicor GL accounts and cost centers. When a Chargebee invoice.created webhook arrives, ml-connector retrieves the full invoice, maps each line item to the correct GL account and cost center, then posts a two-step AP invoice into Epicor using the GetNewAPInvHed and UpdateMaster pattern. Chargebee rate limits are monitored, and HTTP 429 responses trigger automatic exponential backoff and retry.

Related integrations

Connect Epicor Kinetic and Chargebee

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

Get started