ml-connector
IFS CloudCleo

IFS Cloud and Cleo integration

IFS Cloud manages enterprise procurement, finance, and supply chain operations across your organization. Cleo Integration Cloud moves purchase orders and invoices between trading partners, your suppliers, and your systems. Connecting the two keeps your procurement data in sync with your trading partner network. Purchase orders created in IFS flow to suppliers through Cleo as EDI 850 transactions, and supplier invoices from Cleo land back in IFS as posting proposals, eliminating manual entry and reducing order-to-pay cycle time.

How IFS Cloud works

IFS Cloud exposes suppliers, purchase orders, supplier invoices, GL accounts, and journal vouchers through OData v4 REST APIs, each with a tenant-specific base URL. Authentication uses OAuth 2.0 client credentials against a tenant-specific token endpoint. All mutation operations require OData If-Match ETag headers for optimistic concurrency control. IFS does not expose standard webhooks; it offers Event Actions that are manually configured per customer in the IFS admin UI, so polling on a schedule is the standard pattern. Rate limits are approximately 1000 requests per minute per tenant, and the API recommends keeping result sets under 5000 elements per request to avoid 500 errors.

How Cleo works

Cleo Integration Cloud is a B2B/EDI platform that moves invoices, purchase orders, and other supply chain documents between trading partners and internal systems. It accepts JSON via REST APIs and manages EDI transactions (810 invoices, 850 purchase orders) as files or payloads. Authentication uses OAuth 2.0 password grant to exchange username and password for a bearer token. Cleo does not expose a programmatic webhook subscription API; outbound webhooks and actions are configured by administrators in Cleo Studio. Cleo functions as integration middleware rather than a finance or ERP system, so documents flow through as transactions, not as standalone financial objects.

What moves between them

The primary flow moves purchase orders and supplier invoices between IFS Cloud and Cleo. When a purchase order is created or modified in IFS Cloud, ml-connector reads it from the OData API and pushes it into Cleo as an EDI 850 transaction for transmission to suppliers. When a supplier invoice arrives in Cleo as an EDI 810 transaction or file, ml-connector parses it and writes it back into IFS Cloud as a posting proposal, ready for approval in the accounts payable process. Reference data such as supplier codes and GL account mappings flow in both directions so that invoices line up with the correct vendors and cost centers.

How ml-connector handles it

ml-connector stores both credential sets encrypted: the IFS OAuth 2.0 client ID and secret are exchanged for a bearer token before each request, and the Cleo password grant is handled similarly. For IFS Cloud mutations (creating posting proposals), ml-connector reads the target record first to capture its ETag, then issues the PATCH with the If-Match header to satisfy OData concurrency requirements. For Cleo, ml-connector polls the transaction folder on a configurable schedule, reads EDI 810 and 850 payloads, and maps Cleo trading partner codes to IFS suppliers and GL account numbers. IFS rate limits return HTTP 429; ml-connector backs off with exponential jitter and retries. ETag mismatches (when a record changes between read and update) trigger a re-read and retry of the mutation. Because IFS has no dedup key, ml-connector checks for existing posting proposals by invoice number before creating new ones. Every record carries a full audit trail and can be replayed if a downstream validation fails.

A real-world example

A mid-sized discrete manufacturer uses IFS Cloud for procurement and accounts payable, and trades with a dozen key suppliers through an EDI network managed by Cleo. Before the integration, the procurement team exported purchase orders from IFS, manually converted them to EDI 850 format, uploaded them to Cleo, and then downloaded supplier invoices from Cleo and re-keyed them into IFS as posting proposals for approval. This process was error-prone and delayed invoice processing by several days. With IFS Cloud and Cleo connected, every purchase order flows automatically from IFS to Cleo in EDI format, and supplier invoices arrive in Cleo and are automatically created as posting proposals in IFS, ready for three-way matching. The procurement team now focuses on exception handling and vendor management, not data entry.

What you can do

  • Read purchase orders and supplier invoices from IFS Cloud via OData 4 REST APIs and write them into Cleo as EDI 850 and 810 transactions.
  • Automatically create posting proposals in IFS Cloud from incoming EDI invoices in Cleo, mapped to the correct suppliers and GL accounts.
  • Handle IFS OData's If-Match ETag concurrency requirement and retry on ETag mismatches to ensure reliable mutations.
  • Authenticate to IFS Cloud with OAuth 2.0 client credentials and to Cleo with OAuth 2.0 password grant, managing token expiry and refresh transparently.
  • Poll IFS Cloud and Cleo on a schedule you control, with exponential backoff on rate limits, a full audit trail on every record, and the ability to replay failed transactions.

Questions

Which direction do purchase orders and invoices flow between IFS Cloud and Cleo?
Purchase orders flow from IFS Cloud into Cleo as EDI 850 transactions for transmission to suppliers. Supplier invoices flow from Cleo into IFS Cloud as posting proposals in accounts payable. Reference data such as supplier codes and GL accounts flow in both directions to keep both systems in agreement.
Does ml-connector handle IFS Cloud's OData concurrency requirement?
Yes. ml-connector reads the ETag from the target record before any mutation, then includes the If-Match header with that ETag value in the PATCH request. If the ETag has changed because another system modified the record, ml-connector re-reads it and retries the operation.
How does ml-connector prevent duplicate posting proposals when invoices arrive from Cleo?
ml-connector queries IFS Cloud for existing posting proposals by invoice number before creating new ones. If a proposal with that number already exists, ml-connector skips the create and logs the duplicate as an audit event.

Related integrations

Connect IFS Cloud and Cleo

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

Get started