ml-connector
Workday Financial ManagementStripe

Workday Financial Management and Stripe integration

Stripe processes your online payments and subscriptions. Workday Financial Management tracks your revenue, receivables, and GL accounts. Connecting the two keeps your books clean: every Stripe charge, refund, and invoice automatically posts to Workday as a journal entry without manual re-keying. Subscription revenue and AR reconciliation happen in real time, and your month-end close starts with the payment accounts already balanced.

How Workday Financial Management works

Workday Financial Management exposes GL accounts, customers, payment terms, journal entry templates, and financial reporting dimensions through two API surfaces. The primary surface is SOAP/XML over WS-Security at a tenant-specific hostname, authenticated with an Integration System User account that sends credentials with every request. The secondary REST/JSON surface is available at a different endpoint but has narrower breadth for complex operations. There are no native webhooks, so external systems must poll using date-range filters on Get operations. Outbound Messaging can push events but requires manual admin setup per business process on the customer side. Polling intervals of 15 to 60 minutes are safe for transactional data; the minimum safe interval is 5 minutes before hitting rate throttling.

How Stripe works

Stripe exposes charges, payments, invoices, refunds, disputes, subscriptions, customers, and payouts through a REST API at api.stripe.com/v1, authenticated with a Secret API key sent via HTTP Basic Auth. Stripe delivers events via webhooks posted to a registered HTTPS endpoint, including charge., invoice., and subscription. events, with a Stripe-Signature header containing an HMAC-SHA256 signature for verification. Webhook delivery is at-least-once with a 5-minute replay window and retries up to 3 days. Updates are done via POST, not PUT or PATCH, and prices are immutable after creation. There is no vendors or suppliers concept in Stripe; it is payments only.

What moves between them

Events flow from Stripe into Workday. ml-connector listens on a webhook endpoint for Stripe charge, invoice, refund, and subscription events, then constructs corresponding journal entries in Workday mapped to your GL accounts for accounts receivable, revenue, refunds, and subscription bookings. The mapping uses Stripe product IDs and price names to find the correct Workday GL account and customer reference per each company's chart of accounts. Stripe charges and successful invoices post as debit AR / credit revenue; refunds post as credit AR / debit revenue; subscription events post to deferred revenue accounts. Workday does not push data back to Stripe.

How ml-connector handles it

ml-connector stores both credential sets encrypted: Workday's ISU account credentials are encrypted separately from the SOAP tenant URL to prevent cross-tenant confusion, and Stripe's Secret API key is also encrypted with the same envelope key. On the Workday side, ml-connector makes SOAP calls to get the GL accounts and customers matching your setup, then submits each journal entry via the Journal Entry Put operation after Stripe webhook events arrive. The Stripe webhook signature is verified using HMAC-SHA256 against the Stripe-Signature header before any work begins. Because Workday SOAP requires WS-Security with each request, ml-connector prepends the UsernameToken header before every call and never relies on session tokens. If a journal entry submission fails (invalid GL account, customer not found, posting period closed), ml-connector retries the job with exponential backoff and surfaces the error in the audit log so the finance team can resolve the issue (e.g., add the missing GL account or create the customer) and replay the entry. Stripe product-to-Workday GL account mappings are configured per customer and stored encrypted.

A real-world example

A B2B SaaS company bills customers monthly via Stripe subscriptions and one-time charges through their web app. The finance team runs Workday for GL and AR. Before the integration, each morning the finance manager exported the Stripe balance report, manually created AR and revenue journal entries in Workday by subscription plan and charge, and hunted down exceptions (refunds, disputes, bad charges). With Workday and Stripe connected, each Stripe event posts a journal entry immediately, all subscription revenue is booked to the deferred revenue account, and refunds flow to the credit memo account. Month-end close requires only a 5-minute verification that Stripe's total monthly revenue matches Workday's booked revenue; the manual entry step is gone.

What you can do

  • Post Stripe charges and successful invoices to Workday as accounts receivable and revenue journal entries, mapped to the correct GL accounts.
  • Automatically book recurring subscription revenue to deferred revenue accounts in Workday each billing cycle.
  • Route Stripe refunds and disputed charges to the correct credit memo and chargeback GL accounts.
  • Encrypt and store Workday ISU credentials and Stripe API keys separately, verify Stripe webhook signatures, and retry failed journal entries with full audit trail.
  • Validate GL accounts and customer references against your live Workday instance before posting, so finance teams catch missing data without journal entry clogs.

Questions

Which direction does data flow between Stripe and Workday Financial Management?
Data flows from Stripe into Workday. Stripe webhook events (charges, invoices, refunds, subscriptions, disputes) trigger journal entry creation in Workday mapped to your GL accounts and customers. Workday does not send data back to Stripe; Stripe is the source of truth for payment and subscription state.
How does ml-connector handle Workday's SOAP API and ISU credential complexity?
ml-connector stores Workday ISU credentials (username and password) encrypted alongside the tenant-specific SOAP hostname, constructs the WS-Security UsernameToken header for every SOAP call, and does not rely on session tokens since Workday requires credentials with each request. Journal entries are submitted via the Journal Entry Put SOAP operation after destination GL accounts and customers are validated.
What happens if a journal entry fails to post to Workday (e.g., GL account not found)?
ml-connector retries the job with exponential backoff and logs the failure with the full Stripe event payload in the audit trail. The finance team can then add the missing GL account or create the customer in Workday and manually replay the entry, or ml-connector can be configured to defer posting to a suspense account until the dimension is available.

Related integrations

Connect Workday Financial Management and Stripe

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

Get started