ml-connector
Infor CloudSuiteStripe

Infor CloudSuite and Stripe integration

Infor CloudSuite runs finance and operations across manufacturing, distribution, and supply chain. Stripe handles payments and billing online. Connecting the two lets you create customers and invoices in CloudSuite, push them to Stripe for collection and subscription management, and pull payment records back into CloudSuite to close AR and reconcile the general ledger. ml-connector bridges their different authentication models and manages the polling schedule so no data entry is duplicated.

How Infor CloudSuite works

Infor CloudSuite exposes customers, invoices, line items, purchase orders, GL accounts, and payment records through REST APIs served by the ION API Gateway. Each customer's CloudSuite instance has a unique base URL and tenant ID. Authentication uses OAuth 2.0 Resource Owner Password Credentials with a service account registered in the customer's CloudSuite environment. The OAuth token endpoint and client credentials are provided in a .ionapi credentials file unique to each tenant and region. CloudSuite has no native self-service webhook system; instead, it requires scheduled polling of list endpoints filtered by modification date or status. Some document types support asynchronous BOD subscription via ION Desk, but this requires admin configuration outside the API. Token lifetime varies per customer (1 to 24 hours) and must be refreshed proactively.

How Stripe works

Stripe exposes customers, invoices, charges, subscriptions, and payments through a REST API at https://api.stripe.com/v1. Authentication uses a static API key sent via HTTP Basic Auth (secret key sk_live_ for production, sk_test_ for sandbox) with no OAuth. Stripe delivers real-time payment and invoice events via webhooks posted to a registered HTTPS endpoint with HMAC-SHA256 signature verification. Webhook delivery is at-least-once and can be replayed for up to five minutes. Stripe has no native concept of suppliers, purchase orders, or GL accounts; it is designed purely for payment processing and subscription management, not procurement. Rate limits apply per the Stripe documentation, and webhook signatures must be validated on every received event.

What moves between them

The primary flow runs from Infor CloudSuite into Stripe. Customers defined in CloudSuite are created or updated as Stripe customers, and invoices from CloudSuite are pushed to Stripe as billable line items. Payment events generated by Stripe (successful charge, subscription payment, refund) are polled from Stripe's API and written back into CloudSuite as incoming payments against AR invoices, allocated to the correct GL accounts. Data flows in both directions: upstream (customers and invoices CloudSuite to Stripe), downstream (payments Stripe back to CloudSuite).

How ml-connector handles it

ml-connector stores CloudSuite and Stripe credentials encrypted: the .ionapi file data (base URL, tenant ID, OAuth endpoint, client ID/secret) for CloudSuite, and the Stripe API key. For CloudSuite, it refreshes the OAuth token before expiry and respects per-customer rate limits (typically 100-500 requests per minute) by backing off on 429 responses. For Stripe, it uses the static API key and validates incoming webhook signatures using HMAC-SHA256 against the registered secret. On the CloudSuite side, customers are pulled by polling the CRS610MI list endpoint filtered by modification date, and invoices are pulled from APS100MI. Payment records from Stripe are matched to CloudSuite invoices by invoice number and posted as APS110MI payment transactions, allocating to the correct GL account string (CRS630MI). Because CloudSuite's Add operations are not idempotent by default, ml-connector tracks payment posts externally to prevent duplicate GL entries. Webhook events from Stripe supplement polling to catch payment changes in near real-time.

A real-world example

A mid-sized B2B software company uses Infor CloudSuite Financials to manage AR, GL, and customer master data, and Stripe to collect subscription payments online from their SaaS customers. Before integration, the accounting team entered each Stripe payment manually into CloudSuite at month-end, reconciled customer balances by hand, and took a day to chase timing differences between Stripe and the GL. With Infor CloudSuite and Stripe connected, new customers created in CloudSuite are pushed to Stripe automatically, invoices sync to Stripe for subscription billing, and payment confirmations flow back into CloudSuite on the same day. AR aging reports now match Stripe's records without rekeying, and month-end close cuts the time spent reconciling payments by two-thirds.

What you can do

  • Stream customers from Infor CloudSuite into Stripe so invoicing and subscription setup are automatic.
  • Push invoices from CloudSuite to Stripe and track which ones have been paid.
  • Sync Stripe payment and refund records back into CloudSuite as AR transactions, allocated to the correct GL accounts.
  • Handle CloudSuite's per-customer OAuth endpoints, token refresh, and rate limits transparently.
  • Validate incoming Stripe webhook signatures and replay payments on schedule to keep AR and GL in sync.

Questions

How does data flow between Infor CloudSuite and Stripe?
The main flow is CloudSuite into Stripe. Customers and invoices created in CloudSuite are pushed to Stripe for billing and collection. Stripe payment records (successful charges, subscriptions, refunds) are polled and written back into CloudSuite as incoming payments against AR invoices. Data flows both directions: customers and invoices upstream, payments downstream.
How does ml-connector handle CloudSuite's per-customer OAuth setup and token refresh?
Each CloudSuite tenant has unique OAuth endpoints and credentials stored in its .ionapi file. ml-connector extracts these credentials, constructs the token endpoint, and refreshes the bearer token before expiry (which varies 1-24 hours per customer). This shields the user from per-customer configuration variation.
Does ml-connector use Stripe webhooks or polling for payment events?
Both. ml-connector validates incoming Stripe webhook signatures and processes payment events in real-time where registered. It also polls Stripe's API on a schedule to catch any missed events and reconcile payment state against CloudSuite, ensuring no payment gets lost even if webhook delivery is delayed or skipped.

Related integrations

Connect Infor CloudSuite and Stripe

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

Get started