Sage 100 and Stripe integration
Sage 100 runs accounts receivable and general ledger on-premises. Stripe processes online payments and manages customer billing. Connecting the two lets you send Sage 100 invoices to Stripe for payment collection and route Stripe payments back into Sage 100 cash receipts so AR stays current. Customers can pay online, payment events flow back automatically, and your finance team sees the cash applied without re-entry.
What moves between them
AR customers and open invoices flow from Sage 100 into Stripe. Sage 100 invoice detail becomes a Stripe invoice with line items and due dates so customers can pay online. When a Stripe charge or payment intent succeeds, the event flows back to Sage 100 as a cash receipt matched to the original AR invoice, and the invoice is marked as paid. Payment disputes and refunds also generate Stripe events that feed back into Sage 100 for dispute tracking and credit memo creation. The sync runs on a daily cadence for invoice polling and real-time for payment events via webhooks.
How ml-connector handles it
ml-connector polls Sage 100 on a daily schedule using DateLastUpdated to fetch new and changed AR customers and invoices, translating the SOAP response into Stripe customer and invoice objects via POST to the Stripe REST API. Each Sage 100 AR invoice is created as a Stripe invoice with the AR_Invoice ID embedded in the description or metadata so payment events can be routed back. Stripe webhooks are registered at ml-connector's endpoint to listen for charge.succeeded, payment_intent.succeeded, and invoice.payment_succeeded events. When one arrives, ml-connector verifies the Stripe-Signature header using the webhook signing key, fetches the full payment detail from Stripe to ensure the most current state, and then posts a cash receipt into Sage 100 with the matched invoice reference and amount. Failed cash receipts retry with exponential backoff, and a full audit trail tracks every record synced. The local Sage 100 BOI agent must be running on the customer server and configured with an API key or mTLS certificate for secure agent-to-connector communication.
A real-world example
A mid-sized distributor runs Sage 100 for AR and GL on-premises and wants to let customers pay invoices online without manual follow-up. Before the integration, finance called customers to collect payment over the phone and then re-entered the amounts in Sage 100. With Sage 100 and Stripe connected, each Sage 100 AR invoice automatically appears in Stripe as a payment-enabled invoice, customers pay online with a credit card, the payment event webhooks back to Sage 100, and the cash receipt posts automatically. AR aging drops because customers can pay anytime, and the finance team spends no time on manual entry or reconciliation.
What you can do
- Sync Sage 100 AR customers and open invoices to Stripe for online payment collection.
- Route Stripe successful payments back into Sage 100 cash receipts matched to the original invoice.
- Create Stripe invoices with line items and due dates derived from Sage 100 AR invoice detail.
- Verify Stripe webhook signatures and retry failed cash receipts with exponential backoff.
- Maintain a full audit trail of every AR customer and payment synced between the two systems.
Questions
- How does the integration handle Sage 100 being on-premises while Stripe is cloud-based?
- ml-connector runs alongside the Sage 100 BOI agent on the customer server or accesses SOAP via the local Windows service. It polls Sage 100 on a schedule to fetch new invoices and customers, translates the SOAP response to Stripe REST API calls, and registers a webhook endpoint with Stripe to receive payment events in real-time. This bridges the on-premises SOAP transport to Stripe's cloud REST interface.
- What happens when a customer pays a Stripe invoice?
- Stripe sends a charge.succeeded or payment_intent.succeeded webhook event to ml-connector. ml-connector verifies the webhook signature, fetches the full payment detail from Stripe, and posts a cash receipt into Sage 100 AR with the matched invoice reference and amount. The invoice in Sage 100 is marked as paid, and the payment is recorded in the GL.
- How are Sage 100 AR invoices matched to Stripe payments?
- Each Sage 100 AR invoice is created in Stripe with the Sage 100 invoice ID (AR_Invoice reference) embedded in the invoice description or custom metadata. When a Stripe payment succeeds, ml-connector uses that embedded reference to find and update the matching Sage 100 invoice, ensuring the cash receipt is applied to the correct AR record.
Related integrations
More Sage 100 integrations
Other systems that connect to Stripe
Connect Sage 100 and Stripe
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started