Sage 100 and PayPal integration
Sage 100 runs your financial close and GL. PayPal processes your customer payments. Connecting the two keeps your accounts receivable and cash up to date. PayPal captures and refunds flow into Sage 100 as customer receipts, automatically matched to invoices and posted into your GL, so your cash reconciliation starts complete instead of requiring manual matching and re-entry.
What moves between them
PayPal captures, refunds, and disputed transactions flow into Sage 100. After each capture, ml-connector reads the transaction from PayPal and posts a cash receipt in Sage 100's AR module, matched to the customer invoice by external order ID or payer email. Refunds are posted as AR credits. All cash activity is simultaneously posted to the GL against the configured AR cash account. Transactions are polled on a schedule (typically once per hour) to match your cash management cycle.
How ml-connector handles it
ml-connector stores the PayPal OAuth credentials securely and refreshes the bearer token on each request session to stay within the eight-hour window. On the Sage 100 side, it uses the local Windows agent protocol to connect to the customer's on-premises server and posts cash receipts via the BOI COM layer, including the Sage company code and customer invoice number. Because Sage 100 has no idempotency keys, ml-connector deduplicates using PayPal's transaction ID stored in a custom field on each receipt, preventing duplicate posting if a network retry occurs. PayPal transactions include customer email and order ID, which ml-connector uses to find the matching Sage 100 customer and open invoice. If matching fails, the transaction is flagged in the audit log for manual review. The 31-day window on PayPal transaction search means the integration runs on a regular schedule rather than backfilling - for historical reconciliation, the first sync must complete within 31 days of go-live. Every record carries full audit trail and can be replayed if a downstream GL posting fails.
A real-world example
A mid-sized software company bills customers via PayPal for cloud subscriptions and professional services. Before the integration, the accounting team exported PayPal transaction reports weekly and manually matched them to outstanding Sage 100 invoices, then entered the cash receipts line by line. Month-end AR reconciliation required chasing aged invoices and matching them against payment records from multiple exports. With Sage 100 and PayPal connected, each capture posts automatically to the matching invoice within an hour of receipt, and refunds flow in as credits. AR aging is current by end of business, and the time spent on manual matching is eliminated.
What you can do
- Post PayPal captures and refunds into Sage 100 AR as customer cash receipts, automatically matched to invoices.
- Post all cash activity to the general ledger against the configured AR cash account.
- Handle PayPal OAuth 2.0 token refresh and Sage 100 local agent authentication transparently.
- Deduplicate transactions using PayPal transaction ID to prevent duplicate GL postings on retry.
- Read PayPal transactions on a schedule with full audit trail and error replay if GL posting fails.
Questions
- How does ml-connector match PayPal transactions to Sage 100 invoices?
- ml-connector uses the customer email from the PayPal transaction to find the matching Sage 100 customer, then searches for an open invoice in that customer's AR account by amount and date. If an exact match is not found, the transaction is flagged in the audit log for manual assignment. Custom fields on the Sage 100 receipt store the PayPal transaction ID and capture ID for future reference and deduplication.
- Does the integration support PayPal webhooks or polling?
- ml-connector can operate in polling mode via PayPal's transaction search API, scheduled to run once per hour or per your cash management cycle. Webhook push is not yet implemented due to the 31-day transaction search window and the need to match transactions to Sage 100 invoices, which requires a scheduled lookup in the on-premises system.
- What happens when Sage 100 is on-premises and PayPal is cloud?
- ml-connector connects to Sage 100 via the local Windows agent on the customer's server, which provides access to the COM layer and GL posting. The agent establishes a secure tunnel to ml-connector, so Sage 100 does not require a public IP or inbound firewall rule. PayPal is cloud-only, so no special setup is needed on that side beyond OAuth credentials.
Related integrations
More Sage 100 integrations
Other systems that connect to PayPal
Connect Sage 100 and PayPal
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started