ml-connector
Epicor KineticRamp

Epicor Kinetic and Ramp integration

Ramp consolidates corporate cards, bills, and expenses into one system. Epicor Kinetic manages your ERP and general ledger. When bills created in Ramp must post into Epicor AP with the right vendors, cost centers, and GL accounts, the manual entry step becomes a bottleneck. Connecting the two keeps your spend records and your ledger in real-time agreement, eliminating reconciliation delays and re-keying errors. ml-connector orchestrates the sync and handles the differences between the two platforms' authentication, polling, and write patterns.

How Epicor Kinetic works

Epicor Kinetic exposes vendors, purchase orders, GL accounts, APInvoices, APPayments, and other business objects through REST OData v4 endpoints. Cloud instances use https://<tenant>.epicorsaas.com/<instance>/api/v2/odata/<Company>/; on-premises installations use https://<server-host>/<instance>/api/v2/odata/<Company>/. Authentication is typically Basic Auth (username:password base64-encoded), API Key (x-api-key header), OAuth2 client credentials (SaaS only), or Token Resource Service for on-premises. Bearer tokens expire in approximately one hour and must be refreshed. Epicor offers polling only - there are no native outbound webhooks. Integrations retrieve changed records using OData filters on date fields (UpdatedOn gt {timestamp}) and offset pagination with $top=100 and $skip=0. Writes to complex objects like invoices and purchase orders require a two-step pattern: first a GetNewXxx call to initialize, then UpdateMaster to persist. The Company segment is mandatory in all v2 API URLs.

How Ramp works

Ramp exposes bills, vendors, purchase orders, transactions, GL accounts, accounting dimensions, and entities through REST API at https://api.ramp.com/developer/v1 (production) or https://sandbox-api.ramp.com/developer/v1 (sandbox). Authentication uses OAuth2 client credentials (recommended for server-to-server ERP connectors) with tokens valid for 10 days. Ramp supports webhooks for real-time push notifications on bills, transactions, vendors, users, and reimbursements, verified with HMAC-SHA256. Key constraints: vendors cannot be directly created via API; vendors are created implicitly via bills or through a separate intake flow. Purchase orders are read-only for creation but can be patched for memo and line items. Payments are initiated through bill creation or update, not via a standalone payment endpoint. GL Accounts require both accounting:read and accounting:write scopes for writes.

What moves between them

Bills created or updated in Ramp flow into Epicor Kinetic on a schedule controlled by your finance calendar. Vendors are synced to ensure bills reference vendors that already exist in Epicor. GL account allocations are mapped so each bill line posts to the correct Epicor GL account and cost center. Transactions and payment records are read from Ramp and matched to Epicor purchase orders and vendor records where applicable. The flow is primarily one-way: from Ramp into Epicor AP. Vendor master records flow in both directions to keep the two systems aligned on vendor names, payment terms, and contact information.

How ml-connector handles it

ml-connector stores both OAuth2 credentials encrypted. On the Epicor side it authenticates with either OAuth2 client credentials or Token Resource Service depending on your deployment (cloud or on-premises), includes the required API Key header on every request, and refreshes the Bearer token when expiry is detected to avoid outages. On the Ramp side it uses OAuth2 client credentials and stores the 10-day access token, refreshing as needed. Bills are polled from Ramp either on a fixed schedule or in response to webhook events (if enabled). For each bill, ml-connector maps Ramp vendors and GL dimensions to matching Epicor vendors and GL accounts. To post bills into Epicor AP, it follows the required two-step write pattern: GetNewAPInvoice to create the record skeleton, then UpdateMaster to persist the full invoice with line detail, vendor, and GL codes. It tracks each write operation for audit and replay if a downstream call fails. Unicorn edge case: Epicor v1 and v2 URL shapes differ - ml-connector validates and routes to the correct version per your tenant configuration to avoid silent failures. Rate limiting is not publicly documented for Epicor SaaS, so ml-connector observes 429 responses and backs off with exponential jitter.

A real-world example

A mid-market consulting firm uses Ramp for corporate cards and bill pay across three offices and Epicor Kinetic as its ERP. Before the integration, the accounting team received bills from Ramp weekly, manually looked up vendors in Epicor, assigned them to cost centers and GL accounts (billable projects, overhead, travel), and entered each bill by hand into Epicor AP. Month-end close meant chasing bill status across both systems - bills paid in Ramp but not yet posted in Epicor, or invoices in Epicor that never matched a Ramp payment. With the integration, bills flow into Epicor automatically on the day they are created in Ramp, vendors and GL dimensions are pre-mapped, and a full audit trail ties each Epicor AP entry back to its Ramp bill. The accounting team now focuses on exception handling - uncategorized bills, vendor mismatches - rather than data entry.

What you can do

  • Poll bills from Ramp and post them into Epicor Kinetic AP with the correct vendors, GL accounts, and cost center allocations.
  • Sync vendor master data in both directions to keep Ramp and Epicor vendor records aligned on names, payment terms, and contact details.
  • Handle Epicor's two-step write pattern (GetNewAPInvoice followed by UpdateMaster) and API Key header requirement transparently.
  • Refresh Epicor Bearer tokens (expires ~1 hour) and Ramp access tokens (10-day validity) to prevent authentication outages.
  • Maintain a full audit trail on every bill posted, with one-click replay if a downstream Epicor write fails.

Questions

Do bills move in both directions between Ramp and Epicor Kinetic?
No. Bills and expenses created in Ramp flow into Epicor Kinetic AP for posting, but bills created in Epicor do not flow back to Ramp. Vendor data is synced in both directions to keep the two systems aligned. The one-way flow from Ramp to Epicor AP reflects that Ramp is the source of truth for spend and bills; Epicor is the ledger.
How does ml-connector handle Epicor's API Key requirement and Bearer token expiry?
ml-connector includes the required x-api-key header on every Epicor request, regardless of which authentication method you choose (OAuth2 or Token Resource Service). Bearer tokens expire in approximately one hour, so ml-connector detects 401 responses, refreshes the token, and retries the request. This happens transparently without requiring manual intervention.
What happens if Epicor's v1 and v2 URL formats get mixed up?
Epicor v1 and v2 OData endpoints have different URL shapes and are not compatible. ml-connector validates your tenant configuration and routes to the correct version per your deployment type (cloud SaaS vs on-premises). A mismatch will fail fast with a clear error so it can be corrected before bills are lost.

Related integrations

Connect Epicor Kinetic and Ramp

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

Get started