ml-connector
SYSPROBasware

SYSPRO and Basware integration

SYSPRO handles your manufacturing and distribution processes, inventory, and finance. Basware automates your accounts payable, from invoice capture through approval and payment. Connecting them keeps your purchasing data aligned and puts approved invoices from Basware into SYSPRO's general ledger without manual entry. Purchase orders and supplier master records flow from SYSPRO into Basware to power invoice matching, and matched invoices flow back into SYSPRO with the correct GL accounts and cost centers.

How SYSPRO works

SYSPRO exposes suppliers, purchase order headers and line items, invoices, GL accounts, cost centers, and general ledger balances through two main API channels: REST e.net Business Objects (supporting both read and write operations with XML/JSON payloads) and OData (read-only REST queries with HTTP Basic Auth using auto-generated SQL credentials). SYSPRO authenticates e.net calls with a session token obtained from the Utilities/Logon endpoint. The system is available both cloud and on-premise, with customer-supplied server URLs and no shared base address. SYSPRO does not emit outbound webhooks, so all reads require polling with filters on timestamp fields like PostDate and InvoiceDate.

How Basware works

Basware is a pure REST platform for AP automation with regional deployments (EU, US, AU, CA) and a /v1/ API prefix. The P2P API authenticates with OAuth2 client credentials and supports webhooks for real-time notification when invoices are approved or exported. The Network API and Data Access API require polling. Key entities include vendors, purchase orders, purchase requisitions, accounts, dimensions, and accounting documents. Basware requires a unique UUID v4 request ID on every Network API call, signs webhook payloads with HMAC-SHA256, and enforces regional deployment matching (EU credentials can only call the EU API endpoint).

What moves between them

Purchase orders, suppliers, and GL account master records flow from SYSPRO to Basware on a daily or weekly schedule to support invoice matching. When Basware marks invoices as approved, ml-connector polls Basware's accounting documents endpoint for newly approved invoices, retrieves the matched GL postings, and posts them back to SYSPRO's general ledger using the e.net Business Objects write API. Supplier updates are handled in both directions: SYSPRO is the master for core supplier attributes, while Basware may enrich the supplier record with payment terms and tax IDs that flow back to SYSPRO. GL account master data flows one direction only, from SYSPRO to Basware, to ensure all approved invoices reference valid accounts.

How ml-connector handles it

ml-connector stores SYSPRO session tokens and Basware OAuth2 credentials encrypted. On the SYSPRO side it polls OData tables (ApSupplier, PorMasterHdr, PorMasterDetail, GenMaster) using $filter on timestamp columns to detect new or changed records, then publishes those to Basware via REST calls. For the Basware-to-SYSPRO flow, ml-connector subscribes to the accountingDocuments webhook if available, or polls the Data Access API as a fallback, filters for Approved status, retrieves line-item GL postings, maps them to SYSPRO GL accounts and cost centers, and writes them to SYSPRO's ApPosting table via e.net Business Objects. The connector respects SYSPRO's session token expiry (refreshing via Utilities/Logon) and Basware's regional deployment constraint (refusing calls to the wrong region endpoint). Both systems are eventually consistent and support replay: if a Basware-to-SYSPRO GL post fails, the record is queued for retry until it succeeds, and the full audit trail is preserved.

A real-world example

A mid-sized discrete manufacturer in Europe runs SYSPRO ERP on-premise to manage procurement, inventory, and general ledger, and recently deployed Basware to automate a high-volume AP process across three purchasing centers. Before the integration, procurement staff exported purchase orders from SYSPRO and manually re-entered them into Basware to set up invoice matching rules, and the finance team received matched invoices from Basware but still keyed the GL postings by hand into SYSPRO. The integration eliminates both steps: POs and supplier master data flow automatically from SYSPRO to Basware each week, Basware's matching engine runs without manual data entry, and approved invoices post directly to SYSPRO's GL with correct accounts and cost allocations. The AP team can now focus on exceptions instead of data re-entry.

What you can do

  • Sync SYSPRO suppliers, GL accounts, and purchase order headers to Basware on a scheduled interval for invoice matching.
  • Read approved invoices from Basware and post the accounting lines to SYSPRO's general ledger using the correct GL accounts and cost centers.
  • Bridge SYSPRO's HTTP Basic Auth (OData) and session-token authentication with Basware's OAuth2 Client Credentials flow.
  • Respect SYSPRO's regional server URLs and Basware's regional endpoint constraints, preventing cross-region API calls.
  • Handle session token and OAuth2 credential refresh, webhook replay, and a full audit trail for every record posted.

Questions

Which direction does data flow between SYSPRO and Basware?
Master data (suppliers, purchase orders, GL accounts) flows from SYSPRO to Basware on a schedule you control. Approved invoices flow from Basware back to SYSPRO's general ledger. The flow is primarily one-way per record type: SYSPRO is master for POs and suppliers, Basware is master for invoice approval and matching.
Does ml-connector support SYSPRO on-premise and cloud?
Yes. ml-connector accepts the full SYSPRO server URL and credentials per customer, so it works with both SYSPRO Cloud ERP and on-premise SYSPRO 8 deployments. You supply the server address and the operator credentials with e.net permissions enabled.
How are SYSPRO GL accounts matched to Basware dimensions when posting invoices?
ml-connector stores a mapping between SYSPRO GenMaster GL account codes and Basware account dimensions. When an invoice is approved in Basware, the connector uses this mapping to write the posting to the correct SYSPRO GL account. If an invoice references a GL account with no stored mapping, the post is queued for manual review and retry after the mapping is added.

Related integrations

Connect SYSPRO and Basware

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

Get started