IFS Cloud and Tipalti integration
IFS Cloud runs manufacturing, procurement, and finance operations. Tipalti automates accounts payable and handles mass payments to global suppliers. Connecting them keeps your supplier master and invoice data flowing from IFS into Tipalti without manual data entry. New supplier records in IFS automatically create payees in Tipalti, and invoices posted in IFS appear in Tipalti for approval, payment processing, and compliance workflows.
What moves between them
Data flows primarily from IFS Cloud into Tipalti. Supplier records (SupplierSet) sync to Tipalti payees, and purchase proposal headers (PostingProposalHeadSet) sync to Tipalti invoices, allowing Tipalti to manage the approval and payment workflow. Reference data such as GL accounts and company codes flow in both directions to keep invoice dimensions aligned. Payment status and completion notifications are read from Tipalti (via IPN webhooks) and recorded in IFS for audit trails. The sync runs on a schedule configured by the customer, typically daily or after batch invoice posting in IFS.
How ml-connector handles it
ml-connector stores OAuth2 credentials for both IFS Cloud and Tipalti encrypted in the database. On the IFS side, it uses the tenant-specific base URL provided at setup and queries the OData API with filters on the CreatedDateTime and ModifiedDateTime fields to fetch new and changed suppliers and invoices. For each IFS supplier record, it maps the SupplierCode to the Tipalti payee identifier; for invoices, it maps IFS PostingProposalHeadSet to Tipalti invoices with the correct company code and GL account references. IFS requires an ETag header (If-Match) for mutation operations, so ml-connector captures the @odata.etag value on each read and includes it when writing back status or payment information. On the Tipalti side, ml-connector uses the OAuth2 REST endpoints for writes (new invoices and payees) and subscribes to IPN webhooks for payment events; webhook signatures are verified with HMAC-SHA256 before processing. Because IFS enforces a 5000-element array limit on expanded nested collections, ml-connector pages large result sets separately. Rate-limit responses (HTTP 429 from IFS) trigger exponential backoff with jitter. Deduplication is model-based: before creating a new payee or invoice, ml-connector queries for existing records by supplier code and invoice number.
A real-world example
A mid-sized discrete manufacturer runs IFS Cloud for production, procurement, and accounting across three plants. They use Tipalti for global supplier payments and vendor compliance to automate AP processing for over 2000 suppliers across five countries. Before integration, the AP team manually exported supplier lists and invoices from IFS weekly, re-entered them into Tipalti, and reconciled payment status back into IFS for month-end reporting. With IFS Cloud and Tipalti connected, new suppliers in IFS automatically populate in Tipalti for compliance workflows, invoices flow directly without re-keying, and payment status updates sync back to IFS. The AP team now focuses on approvals and exceptions instead of data transfer.
What you can do
- Sync supplier records from IFS Cloud to Tipalti payees, keeping vendor master data aligned across both systems.
- Push purchase proposal invoices from IFS into Tipalti with company codes and GL account references intact for AP processing.
- Verify Tipalti webhook signatures (HMAC-SHA256) and ingest payment status, approval, and completion events back into IFS for audit trails.
- Handle IFS ETag concurrency headers and OAuth2 token refresh on both platforms, with exponential backoff on rate-limit responses.
- Page large OData result sets separately and deduplicate supplier and invoice records by code and invoice number before create operations.
Questions
- What data moves between IFS Cloud and Tipalti?
- Supplier records (SupplierSet) and purchase proposal headers (PostingProposalHeadSet) flow from IFS into Tipalti as payees and invoices. GL accounts and company codes are synced to ensure invoice allocations match IFS dimensions. Payment status updates and completion events flow from Tipalti back to IFS via webhooks for audit and reporting.
- Why does IFS require an ETag header for updates, and how does ml-connector handle it?
- IFS Cloud enforces optimistic concurrency control using ETag headers to prevent simultaneous overwrites. ml-connector captures the @odata.etag value when reading a record and includes it in the If-Match header when writing back updates. If the ETag has changed (another process modified the record), IFS returns a 409 Conflict, and ml-connector retries the read-then-write cycle.
- How does ml-connector handle the differences between IFS polling and Tipalti webhooks?
- IFS does not offer webhooks as a self-registerable API, so ml-connector polls OData endpoints on a schedule using modified timestamps to fetch new and changed records. Tipalti supports IPN webhooks for payment events, so ml-connector subscribes to payment notifications and processes them in real time while still polling IFS on the configured schedule.
Related integrations
More IFS Cloud integrations
Other systems that connect to Tipalti
Connect IFS Cloud and Tipalti
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started