How to Record Sales Tax and VAT Collected via Stripe in QuickBooks

How to Record Sales Tax and VAT Collected via Stripe in QuickBooks

If you collect sales tax or VAT through Stripe, there's a good chance it's being recorded as revenue in your QuickBooks. That means your income is overstated and there's no liability on your books for the tax you owe. For a business doing $50K/month through Stripe at an average 7% tax rate, that's over $42,000 a year in phantom revenue. For UK businesses charging 20% VAT, it's even worse.

Here's how to separate sales tax and VAT properly — and how SyncFast can do it for you automatically. The accounting principles are the same whether you're dealing with US sales tax, UK VAT, EU VAT, or GST.

The Problem: Tax Hiding in Revenue

Say a customer buys a $100 product with 8% sales tax. Stripe charges them $108. After the 2.9% + $0.30 processing fee ($3.43), Stripe deposits $104.57 to your bank.

Most businesses record that payout like this:

AccountDebitCredit
Bank Account$104.57
Stripe Processing Fees$3.43
Sales Revenue$108.00

Looks right. The entry balances. But $8 of that $108 isn't revenue — it's sales tax you collected on behalf of a tax authority. It's a liability. You owe that money to the state, HMRC, or your local tax office — not to yourself.

The same applies to VAT. A UK business selling a £100 product charges £120 including 20% VAT. If the full £120 is booked as revenue, £20 of it is wrong — that's VAT you collected on behalf of HMRC.

The result: your revenue is overstated by the tax amount on every transaction, and your balance sheet has no record of the tax you owe.

Why Stripe Doesn't Separate Tax in Payouts

When Stripe sends a payout, it groups balance transactions by category: charges, refunds, disputes, and fees. There's no "tax" category. The charge amount is the full amount the customer paid, tax included.

Tax data does exist in Stripe — just not at the payout level. It lives on the individual Invoice and Checkout Session objects. That means any tool reconciling at the payout level — including manual journal entries — is working with gross amounts that include tax.

Separating the tax requires looking at the individual charge or invoice data, not the payout summary. This is exactly what SyncFast does — it reads the tax data from your Stripe invoices and checkout sessions and books it to a separate Sales Tax Payable line automatically.

The Correct Journal Entry

Here's what the journal entry should look like when tax is separated. (If you're not familiar with how payout journal entries work, see our guide to reconciling Stripe payouts in QuickBooks.)

AccountDebitCredit
Bank Account$104.57
Stripe Processing Fees$3.43
Sales Revenue$100.00
Sales Tax Payable$8.00

Revenue is now accurate at $100. The $8 tax is recorded as a current liability. When you remit the tax — whether it's sales tax to a US state or VAT to HMRC — you debit Sales Tax Payable and credit your bank account. The liability clears and revenue is never touched.

Setting up the liability account

If you don't have one already:

  1. Go to Chart of AccountsNew
  2. Account type: Other Current Liabilities
  3. Detail type: Sales Tax Payable
  4. Name: "Sales Tax Payable", "VAT Payable", or "Sales Tax Collected" — whatever fits your jurisdiction

Use this account for all tax entries from Stripe, whether sales tax or VAT.

Where to Get the Tax Amount

The tax data has to come from somewhere. Here are the three common setups:

Stripe Tax (automatic calculation)

Stripe Tax calculates and collects tax automatically on Checkout Sessions, Invoices, and Subscriptions. Tax amounts are stored on the Invoice and Checkout Session objects. You can also pull a summary from Stripe Dashboard → Reports → Tax, which shows collected tax by jurisdiction and period.

Manual Stripe tax rates (free)

You don't need the paid Stripe Tax product. You can create tax rates directly in your Stripe product catalog (e.g., "VAT 20%" or "CA Sales Tax 8.25%") and apply them to invoices, payment links, checkout sessions, or subscriptions. The tax amounts populate the same API fields as Stripe Tax.

Application-calculated tax

If your own application calculates tax and passes a lump-sum charge to Stripe, Stripe has no way to know which portion is tax. In this case, neither Stripe nor any Stripe-based tool can extract the tax automatically. You'd need to either switch to manual Stripe tax rates, or handle tax separation manually with a monthly adjusting entry.

The Manual Approach: Monthly Adjusting Entry

If you're recording payouts without tax separation (whether manually or with a tool), you can fix it at month-end with a single adjusting entry.

Pull your total tax collected for the month from your Stripe Tax reports or your own order records. Then create one journal entry:

AccountDebitCredit
Sales Revenue$3,500.00
Sales Tax Payable$3,500.00

This reclassifies the tax portion from revenue to liability. Your P&L and balance sheet are corrected for the period. It's not as granular as separating tax per payout, but it's accurate at the monthly level and works regardless of how your payout entries are created.

When you remit the tax to the state (monthly, quarterly, or annually), the entry is:

AccountDebitCredit
Sales Tax Payable$10,500.00
Bank Account$10,500.00

The liability clears. Revenue was never affected.

Common Mistakes

Treating collected tax as revenue indefinitely. Even if you remit sales tax on time, your P&L overstates revenue all year if you never reclassify. This affects gross margin calculations, financial reporting, and any analysis based on revenue numbers.

Not recording the liability. You owe the state money you collected. If it's not on your balance sheet, your liabilities are understated. This matters for loan applications, valuations, and audits.

Double-counting with QuickBooks Sales Tax Center. If you're also logging sales tax through QuickBooks' built-in tax tracking and creating manual journal entries, you can end up recording the liability twice. Pick one method and stick with it.

Mixing up collected vs. owed. If you have nexus in multiple US states with different rates, sell across EU VAT jurisdictions, or some sales are tax-exempt (like B2B sales under the UK VAT reverse charge), the amount you collected may not exactly equal the amount you owe. The journal entry should reflect what you actually collected. The difference between collected and owed is reconciled against your tax return or VAT return.

How SyncFast Automates Sales Tax and VAT

Everything described above — separating tax from revenue, creating the right journal entries, mapping to a liability account — SyncFast does automatically for every Stripe payout.

Here's how it works:

  1. Enable Sales Tax Tracking in your SyncFast settings
  2. Map a Sales Tax Payable account (or VAT Payable) to a QuickBooks liability account
  3. SyncFast does the rest — for each payout, it reads the tax amount from your Stripe invoices and checkout sessions, then creates a journal entry with sales tax separated from revenue

Every payout journal entry includes a dedicated Sales Tax Payable line alongside the existing breakdown of sales, processing fees, refunds, and chargebacks. No manual lookups, no monthly adjusting entries, no spreadsheets.

It works with both Stripe Tax and manual Stripe tax rates — for US sales tax, UK VAT, EU VAT, GST, and any other tax type configured in Stripe. If your tax data isn't in Stripe (e.g., you calculate tax in your own app), you can still use SyncFast for the payout breakdown and handle tax with the monthly adjusting entry approach described above.

Try it free — plans start at $9/month.

Ready to automate your Stripe bookkeeping?

Try SyncFast free — no credit card required.

Get Started for Free