ml-connector
SYSPROSquare

SYSPRO and Square integration

SYSPRO runs your manufacturing and distribution operations. Square handles your point-of-sale and payment processing. Connecting the two keeps your inventory counts consistent across channels, your customer lists aligned, and your payment records flowing back into accounts receivable without manual entry. New items added to SYSPRO inventory sync to Square, and every payment Square records flows into SYSPRO as an order or AR posting so your books stay current.

How SYSPRO works

SYSPRO Adaptive ERP exposes suppliers, customers, purchase orders, sales orders, inventory masters, general ledger accounts, and price lists through e.net Business Objects (REST and SOAP) and OData (REST read-only) APIs. The cloud product requires a server URL and session token obtained by logging in to a tenant-specific instance; operators must have e.net security permissions enabled. SYSPRO has no outbound webhook system, so payment records and inventory updates are retrieved by polling OData tables with timestamp filters, typically every 5 to 15 minutes.

How Square works

Square exposes payments, refunds, invoices, orders, customers, vendors, catalog items, inventory adjustments, and team members through versioned REST APIs and push webhooks. Every call requires OAuth 2.0 Bearer token authentication, with access tokens that expire every 30 days and require refresh-token handling. Square can push webhook notifications for payment, refund, order, customer, and inventory events, and it verifies webhook signatures using HMAC-SHA256.

What moves between them

The primary flow is bidirectional. Customer and inventory records flow from SYSPRO into Square whenever they change, so Square displays your current product catalog and customer list. Payment records and orders created in Square flow back into SYSPRO as orders and accounts receivable postings, allocated to the matching SYSPRO customer and inventory items. Price and inventory adjustments are aligned in both directions so costs and availability are current on both sides.

How ml-connector handles it

ml-connector stores both credential sets encrypted and manages the SYSPRO session token by logging in with the supplied operator credentials and caching the UserId GUID across calls. On the Square side it handles OAuth token refresh on every 401 response and validates that access tokens do not expire mid-flow. It polls SYSPRO OData tables for customer, inventory, and order changes using PostDate and InvoiceDate filters, and it subscribes to Square webhooks to receive payment and order notifications in real time. Inventory items are mapped from SYSPRO InvMaster records to Square Catalog items, and customers are matched by external ID so the same customer record in SYSPRO points to the same location in Square. Square's Vendors API is beta so integrations should validate vendor changes with customer support. Every record carries a full audit trail and failed payments can be replayed if a downstream AR posting fails.

A real-world example

A mid-sized manufacturer with retail and online channels runs SYSPRO for production and distribution and Square for point-of-sale and payments. Before the integration, the operations team manually exported new inventory items from SYSPRO every week and uploaded them to Square, then exported payment reports from Square and keyed the sales into SYSPRO by hand each day. With SYSPRO and Square connected, new items automatically appear in Square within minutes, inventory counts sync bidirectionally so stockouts are visible in real time, and payment records post into SYSPRO as orders and AR without re-keying. The team can now focus on fulfillment instead of data entry, and the two systems stay in agreement.

What you can do

  • Sync SYSPRO customer records into Square Customers so each system reflects the current customer list.
  • Push SYSPRO inventory items and prices into Square Catalog and keep quantities in sync through inventory adjustments.
  • Ingest Square Payments and Orders into SYSPRO as sales orders and accounts receivable postings, mapped to the correct customer and item.
  • Authenticate SYSPRO with session tokens and Square with OAuth 2.0, managing token refresh and expiry.
  • Poll SYSPRO on a configurable schedule and receive Square events via webhooks with full audit trail and replay capability.

Questions

How do customer and inventory records sync between SYSPRO and Square?
SYSPRO customers and inventory items are read from OData on a polling schedule and mapped to Square Customers and Catalog Items using external IDs. When a customer is updated in SYSPRO or an item's price or quantity changes, ml-connector detects the change and updates the matching record in Square. Inventory counts are reconciled in both directions so SYSPRO remains the source of truth for quantity on hand.
Does SYSPRO's lack of webhooks slow down the sync?
SYSPRO does not push outbound webhooks, so ml-connector polls OData tables with timestamp filters every 5 to 15 minutes depending on your business cycle. Payment records and orders from Square are received in real time via webhooks, so AR and sales order postings reach SYSPRO immediately. The hybrid approach balances SYSPRO's pull-only design with Square's push capability.
How are SYSPRO session tokens and Square OAuth tokens managed?
ml-connector logs into SYSPRO once per session using your operator credentials and caches the returned UserId GUID, refreshing it only if a call returns unauthorized. On the Square side it monitors OAuth token expiry and refreshes before the 30-day limit, using the non-expiring refresh token. Both credential sets are stored encrypted and the session state is tracked so token refresh does not interrupt a payload in flight.

Related integrations

Connect SYSPRO and Square

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

Get started