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.
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
More SYSPRO integrations
Other systems that connect to BILL
Connect SYSPRO and BILL
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started