ml-connector
PlexTipalti

Plex and Tipalti integration

Plex runs manufacturing and finance for discrete manufacturers. Tipalti runs accounts payable and payments. Connecting the two keeps supplier master data and invoices in sync, and posts payment GL entries from Tipalti back into Plex's general ledger. New suppliers in Plex flow to Tipalti as payees, invoices are matched and approved in Tipalti, and the GL entries that Tipalti generates after payment processing post back into Plex without re-keying. ml-connector handles both the OAuth2 REST calls and the legacy SOAP authentication on the Plex side, bridges Tipalti's webhook notifications, and manages the GL account mapping.

How Plex works

Plex is a cloud-native ERP and MES platform targeting discrete manufacturers such as automotive and aerospace suppliers. It exposes suppliers, invoices, purchase orders, GL accounts, and containers through REST JSON APIs authenticated with OAuth2 client credentials, and through legacy SOAP XML Web Services authenticated with Basic auth and a company code (PCN). Plex offers no native webhooks, so supplier and invoice records are retrieved by polling the REST or SOAP APIs on a configurable interval, typically 5 to 15 minutes, filtering by modified_date or created_date. Developer documentation is available at https://developers.plex.com for authenticated Plex account holders.

How Tipalti works

Tipalti is an end-to-end accounts payable automation and mass payments platform. It exposes payees, invoices, purchase orders, GL accounts, and payment batches through SOAP XML Web Services at https://api.tipalti.com and REST JSON APIs at https://triggers.approve.com, both authenticated with either HMAC-SHA256 signatures (SOAP) or OAuth2 client credentials and x-api-key headers (REST). Tipalti supports IPN (Instant Payment Notifications) webhooks on a single account-wide endpoint for events such as payment_submitted, completed, and error, verified via HMAC-SHA256 signatures. The sandbox environments for testing are at https://api.sandbox.tipalti.com and https://triggers.sandbox.approve.com.

What moves between them

The main flow is bidirectional. Plex suppliers and invoices flow into Tipalti as payees and bills on a configurable schedule, typically after each invoice receipt or at daily cadence. Once Tipalti approves and processes a payment, ml-connector receives the payment_submitted and completed IPN webhook events, maps the payment GL entries back to the correct Plex GL accounts and cost allocations, and posts the entries into Plex's general ledger. Purchase order history is synced from Plex to Tipalti to provide context for invoice matching.

How ml-connector handles it

ml-connector stores both Plex credentials (OAuth2 client ID and secret for REST, or username and password for SOAP with PCN) and Tipalti credentials (API key or OAuth2 client ID and secret) encrypted. On each sync cycle, it polls Plex's REST or SOAP API for suppliers, invoices, and purchase orders modified since the last run, filters by Plex role-based permissions to avoid empty or 403 results, and posts them into Tipalti via SOAP or REST as payees, bills, and PO references. Tipalti's IPN webhooks report payment status (submitted, approved, declined, completed); ml-connector verifies the webhook signature using HMAC-SHA256, maps each payment to the originating Plex invoice and cost center, and POSTs the GL journal entry into Plex's GL account. Because Plex offers no public rate limit documentation, ml-connector implements exponential backoff on HTTP 429 responses. GL account and cost center mappings are maintained in a configuration table so finance entries post to the correct Plex accounts regardless of rounding or multi-leg payments.

A real-world example

A mid-sized automotive supplier manufactures stamped and welded parts and runs Plex as their cloud ERP for production scheduling, inventory, and finance. They use Tipalti to manage payables to their network of material suppliers and contract manufacturers, some international with complex compliance requirements. Before the integration, the finance team reviewed Plex invoices weekly, manually entered them into Tipalti for approval and payment, and then manually posted the payment GL entries back into Plex's general ledger at month-end close. The manual process introduced keying errors, delayed supplier payments, and extended close cycles. With Plex and Tipalti connected, suppliers are onboarded into Tipalti automatically from Plex, invoices flow in daily, and payment GL entries post back to Plex without manual intervention. The finance team now focuses on compliance and policy exceptions instead of data entry.

What you can do

  • Sync Plex suppliers to Tipalti as payees on a configurable schedule, preserving supplier master data and payment terms.
  • Load Plex invoices and purchase orders into Tipalti for matching, approval, and payment processing.
  • Map Plex GL accounts and cost centers to Tipalti payment GL entries so journal lines post to the correct financial dimensions.
  • Bridge Plex OAuth2 REST and legacy SOAP Basic authentication, and verify Tipalti webhook signatures via HMAC-SHA256.
  • Receive Tipalti payment notifications via IPN webhooks, post completed GL entries into Plex, and retry failed postings with exponential backoff.

Questions

Which direction does data move between Plex and Tipalti?
The flow is primarily from Plex to Tipalti for suppliers, invoices, and purchase orders. Payment GL entries then flow back from Tipalti into Plex after payments are processed. This keeps Plex's AP accounting current without manual re-entry, and Tipalti's payee master and invoice context synced with Plex's source records.
How does ml-connector handle Plex's lack of webhooks and Tipalti's webhook support?
ml-connector polls Plex's REST or SOAP APIs on a configurable interval (typically 5 to 15 minutes) to retrieve new and modified suppliers, invoices, and purchase orders. Tipalti sends payment status notifications via IPN webhooks, which ml-connector receives and verifies using HMAC-SHA256 signatures, then maps back to Plex GL accounts for posting.
What authentication does ml-connector use for each system?
For Plex, ml-connector supports both OAuth2 client credentials for the REST API and Basic auth with a company code (PCN) for legacy SOAP. For Tipalti, it uses either HMAC-SHA256 signing for SOAP or OAuth2 client credentials for REST APIs, and verifies webhook signatures via HMAC-SHA256. All credentials are stored encrypted.

Related integrations

Connect Plex and Tipalti

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

Get started