Post Stripe payments to QuickBooks with fee splits
When a Stripe payment lands, automatically record a clean QuickBooks sales receipt with the processing fee broken out on its own line, so month-end reconciles cleanly.
Build a deterministic code workflow that records every successful Stripe charge as a sales receipt in QuickBooks Online, with the Stripe processing fee broken out as its own line so month-end reconciliation lines up cleanly. This is a fixed pipeline with no judgement calls, so build it as a code workflow, not an agent.
Trigger: a Stripe webhook on the charge.succeeded event.
When the webhook fires, run these steps in order:
1. Call Stripe Retrieve Charge using the charge ID from the webhook payload, and expand balance_transaction so the Stripe fee is included. Pull the gross amount, the Stripe fee amount, the customer email, the customer name, the charge ID, the currency, and the description or statement descriptor.
2. Call QuickBooks Query Entities to look up an existing Customer where PrimaryEmailAddr.Address equals the Stripe email. If exactly one Customer is found, use that Id.
3. If no Customer is found, call QuickBooks Create Customer with DisplayName set to the Stripe customer name (fall back to the email local-part if the name is missing) and PrimaryEmailAddr.Address set to the Stripe email. Use the returned Id.
4. Call QuickBooks Create Sales Receipt with two SalesItemLineDetail lines:
- Line 1: the gross charge amount, mapped to a product or service item that points at your sales income account.
- Line 2: a negative-amount line equal to the Stripe fee, mapped to an item that points at a Stripe Processing Fees expense account.
Set DepositToAccountRef to a Stripe Clearing bank account, CustomerRef to the Id from step 2 or 3, TxnDate to the charge created date, and put the Stripe charge ID in PrivateNote (and in a custom field if one exists) so the receipt can be deduplicated on retries.
Important details: Stripe returns amounts in the smallest currency unit (cents for USD), but QuickBooks expects decimal dollars, so divide by 100 (or the correct exponent for the currency) before posting. Before creating the receipt, run a quick Query Entities lookup for an existing Sales Receipt whose PrivateNote contains the Stripe charge ID and skip the create if one already exists, to keep retries idempotent. If the QuickBooks Query Entities call returns more than one Customer for the same email, pick the first active one and log a warning.
The user should be able to configure the Stripe Clearing deposit account, the Stripe Processing Fees expense account, and the default revenue item without editing code.
What does this prompt do?
- Watches Stripe for successful payments and posts each one to QuickBooks as a sales receipt the moment it lands.
- Splits every receipt into a gross revenue line and a separate Stripe processing fee line, so your books line up with your payout reports.
- Finds the matching QuickBooks customer by email, or creates one automatically using the name on the Stripe charge if no match exists.
- Deposits payments to a Stripe Clearing account and routes fees to a Stripe Processing Fees expense account, the layout finance teams use to reconcile batched Stripe payouts cleanly.
What do I need to use this?
- A Stripe account with permission to set up an outgoing webhook on successful charges.
- A QuickBooks Online login for the company file you want receipts posted into.
- A Stripe Clearing bank account and a Stripe Processing Fees expense account in your QuickBooks chart of accounts, plus a product or service item pointing at your sales income account.
How can I customize it?
- Change which QuickBooks bank account receives the deposit, or which expense account the fees roll into.
- Decide whether unknown customer emails should auto-create a new QuickBooks customer or pause for review.
- Map specific Stripe products, prices, or statement descriptors to dedicated QuickBooks income items so revenue breaks down by line of business.
FAQs
Will this work if Stripe pays me out in batches rather than per charge?
What happens if the customer email is not already in QuickBooks?
Do I need a specific QuickBooks Online plan?
Does this handle refunds and disputes?
What if the same Stripe charge fires twice?
Related templates
Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.
Open one screen each morning to see a paying customer's billing, product activity and email history, then send the right next email without leaving it.
On the first business day of each month, we build a line-item CSV and written summary of last month's Stripe activity, file it, and post the numbers to Slack.
See every open conversation next to that customer's plan, monthly value and unpaid invoices, so the expensive account never sits waiting all morning.
Open one desk each morning to see every account still in a trial, ranked by how much money is at stake against how little they have actually used.
See every dispute ranked by how little time is left, get a rebuttal drafted from real fraud signals, and submit only what you approve.
Close the books without chasing Stripe fees.
Connect Stripe and QuickBooks once, and every successful charge becomes a reconciliation-ready sales receipt the moment it lands.