ml-connector
SYSPROBILL

SYSPRO and BILL integration

SYSPRO runs manufacturing and distribution finance. BILL automates accounts payable and vendor payments. Connecting the two keeps vendor master records and invoice data synchronized between your ERP and your AP automation platform. Vendors created or updated in SYSPRO flow into BILL, and invoice records follow on a schedule you control. ml-connector handles the different authentication methods on each side and moves the data accurately without re-keying.

How SYSPRO works

SYSPRO 8 exposes vendors, purchase orders, supplier invoices, GL accounts, cost centers, and inventory through three API layers: e.net Business Objects (REST and SOAP, read and write), OData (REST, read-only), and a Workflow Service. The e.net layer authenticates with a session token obtained by logging into the Utilities/Logon endpoint and passing the returned UserId GUID on all calls. OData uses HTTP Basic Auth with an auto-generated operator code and OData password. SYSPRO has no public webhook system, so data is read by polling OData tables with filters on timestamp fields such as PostDate and InvoiceDate. The polling interval is typically 5-15 minutes for financial data.

How BILL works

BILL exposes vendors, bills, payments, customers, invoices, and chart-of-accounts through a REST API at gateway.prod.bill.com/connect. Authentication uses a custom session token obtained by calling POST /v3/login with username, password, organizationId, and devKey. Sessions expire after 35 minutes of inactivity for standard login, or 48 hours for dedicated AP & AR sync tokens. BILL also supports webhooks for push notifications with HMAC-SHA256 signature verification, and up to 10 webhook subscriptions are allowed per organization. Retries use exponential backoff, and a subscription is disabled after all retries fail.

What moves between them

The main flow is from SYSPRO into BILL. Vendor master records from SYSPRO's ApSupplier table are polled and pushed into BILL's vendor endpoint. Supplier invoices from SYSPRO's ApInvoice and ApPosting tables are polled and created as bills in BILL, mapped to matching vendor records and validated against the shared chart of accounts. The polling cadence is every 5-15 minutes, aligned to your AP processing cycle. Reference data such as GL account mappings are set up first to ensure invoices post to valid accounts in both systems.

How ml-connector handles it

ml-connector maintains encrypted session credentials for both systems. On the SYSPRO side, it obtains and caches a session token from e.net and passes the UserId GUID on OData calls to fetch vendors and invoices with timestamp filters. On the BILL side, it calls the custom login endpoint to obtain a session token and refreshes it before the 35-minute inactivity window expires. When a vendor record is read from SYSPRO, ml-connector maps the vendor name, address, and tax ID to BILL's vendor schema and posts it via the vendor endpoint. When an invoice is read, the system retrieves the corresponding vendor ID from BILL, validates that the GL account exists in both SYSPRO and BILL, and creates a bill record with line items, amounts, and cost allocations. If either system returns a validation error, ml-connector logs the failure with full details so it can be reviewed and replayed after the upstream issue is fixed. Poll intervals are configurable per customer, and a full audit trail captures every record created, updated, or skipped.

A real-world example

A mid-sized electronics distributor uses SYSPRO 8 for inventory, procurement, and general ledger, and BILL for accounts payable and vendor payments. Before the integration, the accounts payable clerk received invoices from vendors, manually entered them into BILL, and reconciled the entries against SYSPRO's purchase orders and invoice records at month-end. With SYSPRO and BILL connected, vendor invoices are automatically created in BILL as soon as they are recorded in SYSPRO. The clerk receives the bill in BILL ready for approval and payment, the vendor master stays in sync across both systems, and the reconciliation between ERP and AP is automatic. Month-end close is faster because the two systems agree on open payables without manual review.

What you can do

  • Sync vendor master records from SYSPRO to BILL on a configurable polling schedule, keeping vendor addresses and tax IDs up to date.
  • Create bills in BILL from SYSPRO supplier invoices, mapped to matching vendors and GL accounts in both systems.
  • Validate chart-of-accounts entries in SYSPRO against BILL's configured accounts to prevent posting to invalid GL codes.
  • Authenticate SYSPRO via e.net session token and OData Basic Auth, and BILL via custom session token with automatic refresh before expiry.
  • Poll SYSPRO vendor and invoice tables every 5-15 minutes with configurable intervals, full audit trail, and error replay on failed records.

Questions

Which direction does data move between SYSPRO and BILL?
The main flow is from SYSPRO into BILL. Vendor records and supplier invoices are polled from SYSPRO and pushed into BILL. The two systems do not sync back from BILL to SYSPRO, so BILL serves as the AP platform and SYSPRO remains the source of truth for vendors and procurement.
How does ml-connector handle SYSPRO's lack of webhooks and the need for polling?
SYSPRO has no outbound webhook capability, so ml-connector polls the OData API on a configurable schedule, typically every 5-15 minutes. The polls use timestamp filters on fields such as PostDate and InvoiceDate to fetch only records that have changed since the last poll. This approach ensures SYSPRO data is synchronized without the need for a push mechanism.
What happens if a SYSPRO invoice references a GL account that does not exist in BILL?
ml-connector validates GL account mappings before creating a bill. If an account does not exist in BILL, the invoice is logged as a failed record with full details, the bill is not created, and the issue can be resolved in BILL before replaying the invoice through the integration.

Related integrations

Connect SYSPRO and BILL

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

Get started