ml-connector
Sage 300Tipalti

Sage 300 and Tipalti integration

Sage 300 runs accounts payable and general ledger for mid-market businesses. Tipalti manages global supplier onboarding, invoice processing, and mass payments. When the two are connected, new vendors in Sage 300 appear as payees in Tipalti without manual entry, GL accounts stay aligned across both systems, and completed payments in Tipalti flow back into Sage 300 AP payment batches automatically. The accounting team no longer re-keys payments or chases vendor and account mismatches.

How Sage 300 works

Sage 300 is an on-premise ERP that exposes vendors, invoices, payment batches, GL accounts, and purchase orders through REST and OData APIs. The API runs on a customer-hosted IIS server and authenticates with HTTP Basic Auth, sending a base64-encoded username and password with every request. Both credentials must be uppercase. Sage 300 has no webhooks or change-data-capture, so data is read by polling on a scheduled cadence, filtering by document date and using OData pagination. An API user must be created in Sage 300 Administrative Services and assigned to the Web API security group.

How Tipalti works

Tipalti is a cloud-based accounts payable automation platform that handles supplier onboarding, invoicing, and payments. It exposes payees, invoices, purchase orders, payments, GL accounts, and tax codes through both SOAP and REST APIs. SOAP calls are signed with HMAC-SHA256 using a payer name and API key. REST calls use OAuth2 client credentials or a static x-api-key header. Tipalti publishes events via a single account-wide IPN webhook endpoint that notifies on payee changes, payment approvals, completions, and compliance events using HMAC-SHA256 verification.

What moves between them

The sync flows both directions on a scheduled cadence. Sage 300 vendors and GL accounts are read via polling and pushed to Tipalti as payees and expense accounts, so new suppliers in Sage 300 are available immediately in Tipalti for invoice matching. When payments are completed in Tipalti, ml-connector receives the webhook notification, pulls the full payment batch details from Tipalti, and creates AP payment records in Sage 300, mapped to the matching vendor and GL account. This keeps the accounting ledger current without manual re-entry.

How ml-connector handles it

ml-connector stores the Sage 300 HTTP Basic Auth credentials and refreshes the encoded username and password on each request. Because Sage 300 is pull-only with no webhooks, ml-connector polls vendors and GL accounts on a schedule you control, using OData date filters to capture only new or changed records. For Tipalti, ml-connector registers as the IPN webhook receiver and verifies each incoming event signature using the shared HMAC secret. When a payment_completed event arrives, ml-connector fetches the full payment batch from Tipalti using the OAuth2 or API-key credential, maps Tipalti payee IDs back to Sage 300 vendor codes and Tipalti GL account references to Sage 300 GL account numbers, then posts the payment batch into Sage 300. If any call fails, ml-connector retries with exponential backoff and logs every record in the audit trail so the accounting team can replay a failed batch when the issue is fixed.

A real-world example

A mid-sized manufacturing company runs Sage 300 on-premise for accounts payable and general ledger, and recently adopted Tipalti for global supplier management and payment processing. Before integration, the AP manager manually uploaded vendor lists to Tipalti each quarter, then spent hours matching Tipalti payment notifications against Sage 300 to know which invoices had cleared. Payment posting was slow and error-prone. With Sage 300 and Tipalti connected, new vendors in Sage 300 are available in Tipalti within minutes, GL accounts are always in sync, and payments completed in Tipalti appear as AP payment batches in Sage 300 instantly. Month-end close is faster and the AP ledger is always accurate.

What you can do

  • Sync Sage 300 vendors to Tipalti as payees so suppliers are available for global onboarding without manual entry.
  • Sync Sage 300 GL accounts to Tipalti expense accounts to ensure payment allocations land on valid cost centers.
  • Receive Tipalti payment completion events via webhook and automatically create Sage 300 AP payment batches with vendor and GL account mapping.
  • Authenticate Sage 300 with HTTP Basic Auth using uppercase credentials over HTTPS, and Tipalti with OAuth2 or API-key auth.
  • Poll Sage 300 on a schedule using OData filters and pagination, with retries and a complete audit trail on every record.

Questions

Which direction does data move between Sage 300 and Tipalti?
Vendors and GL accounts flow from Sage 300 to Tipalti on a polling schedule so suppliers and accounts in Sage 300 are available in Tipalti immediately. Payment completion events flow from Tipalti back to Sage 300 via webhook, so completed payments become AP payment batches in Sage 300 without re-keying.
Does Sage 300's HTTP Basic Auth requirement need special setup?
Yes. Sage 300 requires an API user to be created in Administrative Services with the Web API security group assigned. The username and password must both be uppercase and are sent as a base64-encoded Authorization header with every request. ml-connector stores and manages the credentials encrypted.
How does Tipalti webhook integration work if Sage 300 has no webhooks?
Sage 300 has no webhook support, so ml-connector polls it on a schedule for vendor and GL account changes. Tipalti does support webhooks, so ml-connector registers as the IPN endpoint and receives payment completion events in real time, verifying each event signature with the shared HMAC-SHA256 secret.

Related integrations

Connect Sage 300 and Tipalti

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

Get started