ml-connector
IFS CloudRamp

IFS Cloud and Ramp integration

IFS Cloud runs your manufacturing and finance operations. Ramp runs your corporate spend and bill pay. Connecting the two keeps your general ledger and your spend records in agreement. Supplier invoices recorded in IFS Cloud flow into Ramp as bills aligned to the correct GL accounts, and bill approvals in Ramp can post back to IFS as vouchers. ml-connector bridges the different authentication and API models on each side and moves the data on a schedule you control.

How IFS Cloud works

IFS Cloud exposes supplier invoices, purchase orders, vendors, GL accounts, and journal vouchers through an OData v4 REST API. Each customer has a tenant-specific base URL with the structure https://<tenant>.ifs.cloud/main/ifsapplications/projection/v1/<ProjectionName>.svc/<EntitySet>. Authentication uses OAuth2 client credentials against a tenant-specific token endpoint, and access tokens last about 60 minutes. IFS Cloud recommends pull-based polling because Event Actions require manual per-customer configuration in the admin UI and are not API-driven. Mutation operations require OData ETag headers for optimistic concurrency control, and the API enforces a 5000-element page-size limit per request.

How Ramp works

Ramp exposes bills, vendors, purchase orders, GL accounts, transactions, and users through a REST API at https://api.ramp.com/developer/v1. Authentication uses OAuth2 client credentials or authorization code flow; client credentials tokens last 10 days. Ramp supports push webhooks for real-time events such as bill creation, updates, and payment status changes, with HMAC-SHA256 signature verification on each webhook. Vendors are created implicitly via bill intake rather than a direct API call, and purchase orders are read-only at the endpoint level. The API has no direct vendor creation endpoint, so bill records drive vendor onboarding into Ramp.

What moves between them

The primary flow moves supplier invoices from IFS Cloud into Ramp as bills. After an invoice is recorded in IFS Cloud, ml-connector polls the PostingProposalHeadSet, extracts the supplier and amount, and creates a matching bill in Ramp mapped to the same GL account and accounting dimension from IFS. If Ramp webhooks are enabled, payment status changes on bills flow back as read events to confirm posting into Ramp. GL accounts and vendors are synchronized in both directions so bills in Ramp reference GL accounts that exist in IFS and suppliers match between systems. Cost allocation follows IFS accounting dimensions mapped to Ramp accounting connections.

How ml-connector handles it

ml-connector stores IFS OAuth2 credentials and Ramp OAuth2 credentials encrypted and refreshes tokens before expiry. On the IFS side it accepts the tenant-specific base URL and validates that projections exist at connect time via the AllProjections.svc endpoint, then polls PostingProposalHeadSet with OData filters on modified timestamps to find new invoices. When reading IFS records for update, ml-connector captures the ETag value and includes it in any PATCH request to enforce optimistic concurrency. When writing to Ramp, it creates bills with the correct GL account mapping and lets Ramp implicitly create vendors if they do not exist. IFS rate limits are approximately 1000 requests per minute per tenant, and ml-connector backs off with exponential jitter on HTTP 429 responses. Ramp webhooks push bill payment events in real time when enabled, reducing polling overhead. Every record carries a full audit trail, and failed bill creates are stored with the original invoice data so they can be replayed once the issue is resolved.

A real-world example

A mid-sized manufacturing company runs IFS Cloud for production planning, procurement, and finance across three regional plants. The company uses Ramp for corporate cards, bill pay, and expense management. Before the integration, accounts payable staff received supplier invoices in IFS, manually exported the data, and re-entered it into Ramp as bills with GL coding by hand. Month-end reconciliation required matching invoices across two systems and chasing discrepancies between IFS supplier records and Ramp vendor files. With IFS Cloud and Ramp connected, each invoice flows into Ramp automatically with the correct GL account and cost center from IFS. Ramp webhooks notify the integration of payment status changes, which sync back to close the invoice in IFS. The manual re-entry step is eliminated, and month-end matching is automated.

What you can do

  • Poll IFS Cloud for supplier invoices on a schedule and write them into Ramp as bills with GL account and cost center alignment.
  • Map IFS GL accounts and accounting dimensions to Ramp GL accounts and accounting connections so bill coding is consistent across systems.
  • Bridge IFS OAuth2 client credentials authentication and Ramp OAuth2 credentials, with automatic token refresh before expiry.
  • Respect IFS OData ETag concurrency control and page-size limits, backing off on rate-limit responses with exponential jitter.
  • Capture Ramp bill payment webhooks to confirm posting status and update invoice records in IFS without re-polling.

Questions

Which direction does data move between IFS Cloud and Ramp?
The main flow is IFS Cloud to Ramp. Supplier invoices move from IFS Cloud into Ramp as bills with GL account mapping. GL accounts and vendors are synchronized in both directions so bill coding is consistent. Payment status updates from Ramp webhooks can flow back to IFS to mark invoices as paid or reconciled.
How does ml-connector handle IFS Cloud's ETag requirement and page-size limit?
ml-connector queries PostingProposalHeadSet with OData filters on modified timestamps, requesting results in pages under the 5000-element limit. When updating an invoice record, it reads the ETag value first, then includes it in the PATCH request header so IFS enforces optimistic concurrency and rejects stale updates. Large bill batches are paginated automatically.
What happens if an invoice fails to create in Ramp?
ml-connector stores the invoice record with error details in its audit trail. The record can be retried once the issue is resolved (for example, if a GL account mapping was missing). Webhooks from Ramp confirm successful bill creation and payment status so the integration knows which invoices have reached Ramp successfully.

Related integrations

Connect IFS Cloud and Ramp

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

Get started