How do I connect Stripe invoices for AR collections?
Loopfour's Stripe integration creates and manages invoices end to end — createCustomer, createInvoice, finalizeInvoice, sendInvoice, and voidInvoice — making Stripe the only integration in this matrix that actually issues and collects AR invoices rather than just supplying payment data. Connecting it means creating the customer in Stripe first; invoices can't be created without one.
Part of the finance integrations guide.
| What gets created | A Stripe Customer, then Invoice objects tied to it |
|---|---|
| Actions available | createCustomer, createInvoice, finalizeInvoice, sendInvoice, voidInvoice |
| Prerequisite | A Stripe Customer must already exist — customer is a required parameter on invoice creation |
| What's unique here | Stripe is the only integration in this matrix that issues and collects invoices, not just a payment-data source |
Why the customer has to exist first
Stripe's Create an Invoice endpoint requires a customer parameter — the ID of the customer to bill — unless the invoice is a revision of an existing one (from_invoice). There's no way to create an invoice against a customer that doesn't exist yet; Stripe raises an error if the customer ID provided is invalid. For a Loopfour workflow, this means the AR sync has to create or look up the Stripe Customer before it ever calls createInvoice, not as an afterthought.
The path from draft to collected
A Stripe invoice starts in draft status the moment it's created and stays there until it's finalized — finalizing locks in the line items and amount, and generates the hosted invoice URL and PDF. From there, collection depends on collection_method: charge_automatically attempts payment against the customer's default source, while send_invoice emails the invoice with payment instructions and a due date instead. Loopfour's sendInvoice action covers the second path explicitly; voidInvoice handles the case where a draft or open invoice needs to be canceled before it's paid.
Where this sits relative to other AR tools in the matrix
Slack and Gmail, elsewhere in this matrix, can notify someone about an overdue invoice, but neither one actually issues or holds an invoice — they're notification channels layered on top of AR data that lives somewhere else. Stripe's invoice actions are the AR system itself for whatever revenue flows through Stripe: the invoice, its line items, its status, and its payment collection all live on the Stripe side, which is why getting the customer relationship right at connection time matters more here than it does for a channel that's just relaying information.
Next step
Map the finance workflow with the most exposure and prove the automation path.
Bring the invoice, contract, payment reconciliation, or customer finance workflow you have to defend at audit. Loopfour can map the trigger, controls, integrations, and approval loop.
Worked example
Why createInvoice fails without a customer
A workflow tries to bill a new account by calling createInvoice directly with a line item and an amount, but no customer parameter — it assumes Stripe will create one implicitly, the way some other systems do. Stripe rejects the call outright: the customer parameter is required unless the invoice is a revision of an existing one via from_invoice. The fix is a createCustomer call first — even a minimal one with just a name and email — and using the returned customer ID on every subsequent createInvoice call for that account.
Frequently Asked Questions
Sources
Related
Topic
AR & Collections
Accounts receivable is the money customers owe a business for goods or services already delivered on credit — a current asset on the balance sheet until it's collected. AR and collections, as a practi…
Read moreDefinition
What is an AR aging report and how do I read it?
An AR aging report lists every open invoice grouped by how long it's been outstanding — current, 1-30, 31-60, 61-90, and 90+ days past due. Read it by tracking the bucket distribution over time, not just the total; a shrinking current bucket and growing 90+ bucket signal a collections problem before it shows up in a blended DSO figure.
Read moreTopic
Integrations
Every finance automation vendor publishes an integrations page: a grid of logos, a claim of "seamless" connectivity, and not much else. That page answers a marketing question — does this vendor touch…
Read moreDiagnostic
What breaks when a voided Stripe invoice doesn't clear from AR aging?
Voiding a Stripe invoice is terminal, but Loopfour's Stripe integration has no webhook handler — it's poll-only. The status change only reaches AR aging if the workflow re-polls via getInvoice after creation. Read status once, at creation, and the invoice stays open in AR aging even though Stripe itself now shows it as void.
Read more