Sage X3 and TrueCommerce integration
Sage X3 runs procurement and finance. TrueCommerce manages EDI and supply chain data exchange with trading partners. Connecting the two closes the order-to-invoice loop: purchase orders created in Sage X3 flow to TrueCommerce for transmission to vendors in EDI format, and vendor invoices arriving in TrueCommerce are posted directly into Sage X3 as supplier invoices, reducing data re-entry and eliminating reconciliation gaps. ml-connector handles the very different credential models on each side and moves the EDI records on a schedule you control.
What moves between them
Purchase orders and supplier invoices flow between Sage X3 and TrueCommerce bidirectionally. Inbound: EDI 850 (purchase order) and 810 (invoice) documents arrive in TrueCommerce FTP or API and are polled hourly (or on your custom schedule), transformed to Sage X3 purchaseOrder and supplierBpInvoice entities, and posted to Sage X3 REST or GraphQL. Outbound: Sage X3 purchase orders are polled for new records, serialized to X12 850 EDI format, and written to TrueCommerce SFTP or API on your cadence. Supplier master data (supplier, customer) is synced at setup time to align trading partner identifiers.
How ml-connector handles it
ml-connector stores Sage X3 credentials (OAuth2 client ID/secret or HTTP Basic username/password) and TrueCommerce SFTP or API key encrypted, rotating Sage X3 access tokens every 4 minutes before expiry to prevent 401 errors mid-batch. On inbound, it polls TrueCommerce FTP hourly by default, downloads X12 EDI files, parses 850 and 810 documents, maps sender/receiver identifiers to Sage X3 supplier records via a configurable lookup table, transforms line items to Sage X3 schema, and POSTs each order or invoice to the configured Sage X3 instance. If a POST to Sage X3 fails (network, 5xx, validation), the record is queued for replay up to 5 times with exponential backoff. Outbound purchase orders are polled from Sage X3 via updatedDate at your chosen interval, serialized to X12 850, and written to TrueCommerce SFTP or via Exchange API. Functional acknowledgments (EDI 997) from TrueCommerce are read but not persisted, confirming transmission only. Every record carries source IDs and timestamps for audit and reconciliation.
A real-world example
A mid-sized food distributor runs Sage X3 for procurement, inventory, and accounts payable, and uses TrueCommerce to exchange EDI with major suppliers (CPG brands, produce cooperatives). Before the integration, the procurement team downloaded EDI 810 invoices from TrueCommerce, manually rekeyed line-item detail and pricing into Sage X3 supplier invoices, then compared invoice totals line-by-line during close to catch re-entry errors. With TrueCommerce and Sage X3 connected, each vendor invoice in EDI format is automatically posted to Sage X3 with full line detail, matched to the corresponding purchase order, and ready for approval within the AP workflow. Purchase orders created in Sage X3 for new items flow back to TrueCommerce and are transmitted to vendors without manual export, so order data is accurate and delivery confirmations (856 ASNs) arrive with the correct purchase order numbers already populated.
What you can do
- Map EDI 850 (purchase orders) from TrueCommerce into Sage X3 purchaseOrder entities, creating orders for your vendors with full line items and pricing.
- Ingest EDI 810 (invoices) from TrueCommerce and post them as Sage X3 supplierBpInvoice records, matched to the originating purchase order for 3-way reconciliation.
- Transform and send Sage X3 purchase orders back to TrueCommerce as EDI 850 for vendor transmission, keeping your suppliers synchronized.
- Authenticate Sage X3 with OAuth2 (GraphQL) or HTTP Basic auth, and TrueCommerce with SFTP or API key credentials, securing both credential sets encrypted at rest.
- Handle Sage X3 token expiry by refreshing credentials every 4 minutes, and replay failed record posts to TrueCommerce or Sage X3 with exponential backoff and a full audit trail.
Questions
- Which direction does data move between Sage X3 and TrueCommerce?
- Both directions. Purchase orders flow from Sage X3 to TrueCommerce for EDI transmission to vendors, and supplier invoices (EDI 810) flow from TrueCommerce into Sage X3 for posting. Supplier master data is synced at setup to align trading partner identifiers so line items and pricing map correctly. Functional acknowledgments from TrueCommerce confirm transmission but do not update Sage X3 records.
- Does Sage X3 support webhooks, or does ml-connector have to poll?
- Sage X3 has no webhooks or event notifications, so ml-connector polls both Sage X3 and TrueCommerce on a schedule you set (default hourly for TrueCommerce SFTP, configurable for Sage X3). Polling uses the updatedDate and modifiedDateTime fields to detect changes since the last poll, reducing data volume and keeping bandwidth predictable.
- How does ml-connector handle the different auth models and token expiry?
- ml-connector stores Sage X3 OAuth2 credentials (client ID/secret) or HTTP Basic auth encrypted, and automatically refreshes the access token every 4 minutes before the 5-minute expiry window, preventing authentication failures during batch processing. TrueCommerce credentials (SFTP username/password or API key) are stored encrypted and used as-is on each poll or push, with no refresh cycle required.
Related integrations
More Sage X3 integrations
Other systems that connect to TrueCommerce
Connect Sage X3 and TrueCommerce
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started