ml-connector
Sage X3Tipalti

Sage X3 and Tipalti integration

Sage X3 runs procurement and finance for manufacturers and distributors. Tipalti handles accounts payable automation and payments. Connecting them keeps supplier master data in sync, flows purchase orders and invoices from Sage X3 into Tipalti's approval workflows, and pulls payment confirmations and GL postings back into Sage X3 for reconciliation. The integration eliminates manual data re-entry between procurement and AP automation.

How Sage X3 works

Sage X3 exposes suppliers, purchase orders, supplier invoices, GL accounts, and cost centers through REST API (api1) or GraphQL (Xtrem), with a customer-specific server URL and port. It authenticates with OAuth2 client credentials (JWT bearer) for GraphQL or HTTP Basic Authentication for the REST api1 legacy endpoint. Sage X3 does not support native webhooks or push notifications, so connectors must poll using the updatedDate or modifiedDateTime fields to detect changes. Access tokens expire in 5 minutes, refresh tokens in 30 days, and page sizes default to 20 records per query.

How Tipalti works

Tipalti exposes payees (suppliers), invoices, purchase orders, payments, GL accounts, GRNs, and tax codes through SOAP/XML and REST/JSON APIs with separate endpoint families and different authentication schemes. SOAP uses HMAC-SHA256 signature authentication (payer_name + api_key), while REST supports OAuth2 client credentials or static x-api-key header. Tipalti publishes events through Instant Payment Notifications (IPN) webhooks verified with HMAC-SHA256, with a single account-wide endpoint receiving event types such as payee_details_changed, bill_updated, payment_submitted, and completed.

What moves between them

Sage X3 supplier, purchase order, and invoice records flow into Tipalti on a polling schedule tuned to your procurement cycle. Tipalti payment status updates and approval confirmations flow back into Sage X3 for GL posting and vendor reconciliation. The integration is bi-directional for supplier master data alignment and GL account mapping, but invoices and payment records flow primarily from Sage X3 into Tipalti and status back to Sage X3.

How ml-connector handles it

ml-connector polls Sage X3 at intervals you define, using updatedDate field filtering to capture only new and changed suppliers, POs, and invoices since the last poll. It detects whether to use OAuth2 or Basic auth based on customer configuration and refreshes OAuth2 tokens before expiry. On the Tipalti side, it chooses between SOAP (with HMAC-SHA256 signature generation) or REST (with OAuth2 token management) based on your preference, maps Sage X3 GL accounts and cost centers to Tipalti GL accounts and custom fields, and de-duplicates records using Sage X3 internal IDs as idempotency keys. It can also consume Tipalti IPN webhook events for real-time payment status pushes. Every record carries full audit trail, timestamp, and can be replayed if a downstream GL posting fails.

A real-world example

A mid-sized industrial distributor runs Sage X3 for procurement and finance across three regional offices. The company uses Tipalti for accounts payable automation and global payments to hundreds of suppliers. Before the integration, the AP team received purchase orders and invoices manually from Sage X3 each day, uploaded them to Tipalti, then waited for payment confirmations and manually reconciled them back into Sage X3's GL. With Sage X3 and Tipalti connected, purchase orders and supplier invoices flow automatically into Tipalti's approval workflows as soon as they are issued in Sage X3, Tipalti payment status updates flow back to Sage X3 for vendor reconciliation, and month-end close begins with AP already aligned to the GL.

What you can do

  • Sync Sage X3 suppliers, purchase orders, and invoices into Tipalti on a polling schedule that matches your procurement rhythm.
  • Map Sage X3 GL accounts and cost centers to Tipalti GL accounts and payment dimensions so every record posts to the correct account.
  • Bridge Sage X3 OAuth2 or Basic authentication to Tipalti SOAP (HMAC-SHA256) or REST (OAuth2) APIs with automatic token refresh.
  • Consume Tipalti IPN webhook events for real-time payment status, approval confirmations, and OFAC compliance notifications.
  • Maintain full audit trail on every supplier, purchase order, invoice, and payment record with timestamps and change history.

Questions

Does the integration support both Sage X3 REST (api1) and GraphQL (Xtrem)?
Yes. ml-connector detects which transport your Sage X3 instance supports and routes requests accordingly. GraphQL (Xtrem) requires Sage X3 V12 or later, while REST api1 is available on V6 and above. Both are polled using updatedDate field filtering to detect changes.
Can Tipalti webhook events (IPN) push payment status back to Sage X3 in real time?
Yes. ml-connector can register to receive Tipalti IPN webhooks for events like payment_submitted, completed, and payee_details_changed. These are verified using HMAC-SHA256 and can trigger immediate GL posting or vendor record updates in Sage X3 without waiting for the next polling cycle.
How does the integration handle Sage X3's customer-specific server URL and ports?
ml-connector accepts the full server URL, port, and X3 folder name as customer-specific inputs per deployment, since Sage X3 publishes no shared tenant registry. It uses those values to construct API endpoints and validates credentials against the customer's instance before syncing data.

Related integrations

Connect Sage X3 and Tipalti

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

Get started