ml-connector
PlexSquare

Plex and Square integration

Plex runs manufacturing, procurement, and finance. Square runs payments and commerce. Connecting the two keeps your vendor reference data and catalog aligned across systems, and flows orders and payments from your ecommerce storefront back into Plex so your GL reflects all revenue and cost allocations. When a new supplier is added in Plex, it appears as a vendor in Square, and when customers place orders through Square, those transactions post into Plex's accounts receivable.

How Plex works

Plex exposes suppliers, purchase orders, purchase order releases, invoices, GL accounts, customers, sales orders, parts, inventory, and containers through REST APIs at https://cloud.plex.com/api and https://test.cloud.plex.com/api, and through legacy SOAP Web Services at https://api.plex.com/api/datasources. Authentication uses OAuth 2.0 client credentials (token endpoint https://accounts.plex.com/oauth2/token, Bearer token header) for REST, or Basic auth with username, password, and company code (PCN) for SOAP. Plex does not offer native webhooks, so all data retrieval is polling-based on a configurable interval filtering by modified_date or created_date, with rate limits enforced via HTTP 429 requiring exponential backoff.

How Square works

Square exposes payments, refunds, invoices, orders, vendors, customers, catalog items, inventory, team members, and locations through REST APIs at https://connect.squareup.com/v2 (production) and https://connect.squareupsandbox.com/v2 (sandbox). Authentication uses OAuth 2.0 with Bearer tokens (Authorization: Bearer {ACCESS_TOKEN}) with 30-day expiry requiring refresh token handling. Square provides webhook push notifications for payment.created, payment.updated, refund.created, order.created, order.updated, customer.created, invoice.published, and inventory.count.updated events with HMAC-SHA256 signature verification via x-square-hmacsha256-signature header. Square has no Chart of Accounts API, so GL sync requires mapping to an external accounting system.

What moves between them

The flow runs bidirectional. Plex suppliers, GL accounts, and inventory items poll on a 15-minute interval and populate Square vendors and catalog items for ecommerce operations. Square payment, order, and customer webhooks push back into Plex's accounts receivable and sales order tracking. Purchase orders and invoices created in Plex can be synchronized to Square orders and vendor records. Revenue and cost center allocations flow from Square payment data back into Plex GL accounts via reconciliation transactions on daily schedule.

How ml-connector handles it

ml-connector stores both credential sets encrypted and manages OAuth2 token refresh on both sides: Plex tokens via Bearer authorization, and Square access tokens with 30-day expiry and refresh token handling. It accepts Plex tenant company code (PCN) per customer to route SOAP requests to the correct data partition, polls the Plex REST API on a 15-minute schedule filtering by modified_date, and implements exponential backoff on HTTP 429. On the Square side, it registers a webhook endpoint to receive payment, order, and customer events, verifies HMAC-SHA256 signatures on incoming webhooks, and maps Square payment and order records to Plex sales orders and GL transactions. Supplier names from Plex are matched to Square vendor records by exact display name to prevent duplicates. GL account mappings are configured per customer since Square has no Chart of Accounts, so Square merchant fees and payment processing costs are allocated to Plex GL accounts via configurable rules. Every record carries full audit trail and can be replayed if a downstream sync fails.

A real-world example

A discrete manufacturer running Plex ERP for production, procurement, and finance launches a direct-to-customer ecommerce storefront powered by Square Point of Sale and Square Online. Before the integration, the operations team manually exported supplier lists from Plex and re-entered them as vendors in Square, and at month end, the finance team exported order receipts from Square and re-keyed revenue entries into Plex's GL. With Plex and Square connected, new suppliers added in Plex automatically appear as vendors in Square, allowing the sales team to assign inventory to approved suppliers without manual setup. Square order and payment webhooks flow directly into Plex as sales orders and GL postings mapped to the correct revenue and cost accounts, eliminating the month-end reconciliation re-keying step and keeping the ledger current.

What you can do

  • Sync Plex suppliers to Square vendors and Plex inventory items to Square catalog, with duplicate detection by display name.
  • Receive Square payment, order, and customer webhooks with HMAC-SHA256 signature verification and replay on webhook failures.
  • Map Square payment and order records to Plex sales orders, GL accounts, and cost centers for revenue recognition and cost allocation.
  • Poll Plex on a 15-minute interval with exponential backoff and handle OAuth2 token refresh and Square's 30-day access token expiry.
  • Maintain full audit trail on every supplier, vendor, payment, order, and GL posting with replay capability on downstream failures.

Questions

Which direction does data move between Plex and Square?
Data moves bidirectionally. Plex suppliers, inventory, and GL accounts poll into Square vendors and catalog for ecommerce. Square payment, order, and customer webhooks push back into Plex for AR reconciliation and revenue posting to GL accounts. Both systems are updated on the cadence you configure: Plex polling runs on 15-minute intervals, and Square webhooks are received immediately.
How does ml-connector handle Plex's lack of webhooks and polling requirement?
ml-connector polls the Plex REST API on a 15-minute schedule, filtering results by modified_date to retrieve only changed records since the last poll. It implements exponential backoff when Plex returns HTTP 429 rate-limit responses. This approach means Plex-to-Square changes appear with a slight delay, but provides reliable pull-based synchronization without requiring native webhooks that Plex does not offer.
How are Plex GL accounts and Square payments mapped without a Square Chart of Accounts?
ml-connector requires a per-customer mapping configuration that assigns Plex GL account codes to Square payment categories (revenue, merchant fees, refunds, chargebacks). When Square payment webhooks arrive, ml-connector applies these mappings and posts the revenue and fee allocations as GL transactions in Plex to the correct cost centers and GL accounts. GL configuration is set up during integration setup and can be adjusted as business rules change.

Related integrations

Connect Plex and Square

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

Get started