IFS Cloud and Stripe integration
IFS Cloud is your enterprise ERP covering procurement, supply chain, asset management, and finance. Stripe lets you accept online payments and manage invoicing at scale. Connecting the two automates invoice creation in Stripe from your IFS Cloud AR workflow, so customers can pay online without your finance team re-keying data. Payment status flows back into IFS Cloud for reconciliation.
What moves between them
The main flow is IFS Cloud to Stripe. Customer records and sales orders are read from IFS Cloud on a configurable schedule and mapped to Stripe customers. Invoices created in IFS Cloud are posted to Stripe as draft invoices, tagged with the IFS Cloud invoice number for reconciliation. Stripe webhooks notify ml-connector when payments are received or disputes are filed, and that data flows back into IFS Cloud as voucher notes or custom fields for audit trail and reconciliation matching.
How ml-connector handles it
ml-connector stores the IFS Cloud OAuth2 credentials and refreshes the bearer token when it expires or the API returns a 401 response. Stripe API key is stored encrypted and rotated on a schedule you set. On the IFS Cloud side, ml-connector polls CustomerSet and CustomerOrderSet using OData filter expressions on LastModificationTime to pick up new and changed records since the last run. Customer names, tax IDs, and billing addresses are mapped from IFS Cloud to Stripe customer objects. Invoice data is read from VoucherSet (or PostingProposalHeadSet) and posted to Stripe invoices with line items mapped from IFS Cloud order lines. Because IFS Cloud rate-limits at 1000 requests per minute and Stripe has separate rate limits per key, ml-connector manages both backoff strategies independently and includes exponential retry with jitter. Stripe webhook events trigger immediate reconciliation queries into IFS Cloud to match payment receipt against the original invoice. ETag values from IFS Cloud are handled transparently for concurrency safety, and Stripe immutable price objects are archived rather than updated when invoice amounts change.
A real-world example
A B2B software company runs IFS Cloud for order management and AR, with customers worldwide. Previously, the AR team printed invoices from IFS Cloud, emailed them manually, and logged in to Stripe once per week to create invoices for payments. Reconciliation was manual: payments arrived in Stripe but sat unmatched until the team manually looked them up in IFS Cloud and recorded the receipt. With IFS Cloud and Stripe connected, each sales order automatically creates a Stripe customer, each invoice posts to Stripe as a draft invoice, and customers receive payment links immediately. Payment events from Stripe webhooks flow back to IFS Cloud, and the AR dashboard shows matched and unmatched invoices in real time. Month-end reconciliation is now a query against IFS Cloud voucher notes instead of a manual email hunt.
What you can do
- Read customers and sales orders from IFS Cloud and create matching Stripe customer records.
- Post IFS Cloud invoices to Stripe as draft invoices with line items and tax amounts mapped from the GL voucher.
- Receive Stripe payment and dispute webhooks and log the outcome in IFS Cloud for AR audit trail.
- Manage OAuth2 token refresh on the IFS Cloud side and API key rotation on the Stripe side.
- Poll IFS Cloud on a schedule with exponential backoff and retry both OData rate limits and Stripe rate limits independently.
Questions
- Can ml-connector push payment status from Stripe back to IFS Cloud?
- Yes. Stripe webhooks for payment_intent.succeeded and charge.dispute.created trigger immediate queries into IFS Cloud to match the payment or dispute against the original invoice. The payment status is logged as a voucher note or custom field in IFS Cloud for AR reconciliation and audit trail.
- How does ml-connector handle IFS Cloud's OData pagination and rate limits?
- ml-connector pages through OData result sets using skip/top parameters, respecting the 5000-element limit per request and the 1000 requests-per-minute rate limit per tenant. It applies exponential backoff with jitter when HTTP 429 is returned and validates ETag headers on mutation operations to ensure optimistic concurrency is respected.
- What happens if a customer or invoice already exists in both systems?
- ml-connector matches Stripe customers to IFS Cloud customers by ID and updates only the fields that have changed. For invoices, the IFS Cloud invoice number is stored as a custom field in the Stripe invoice for reconciliation. Duplicate invoice creation is prevented by querying Stripe for existing invoices before posting new ones.
Related integrations
More IFS Cloud integrations
Other systems that connect to Stripe
Connect IFS Cloud and Stripe
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started