In this guide · 8 sections
Short answer
Record sales at the gross amount into a Stripe (or HitPay) clearing account, record fees as an expense from that account, and treat each payout as a transfer to your bank. When the clearing account balance matches your Stripe balance at month-end, everything is reconciled.
Why your Stripe payouts never match your sales
Stripe collects the card or PayNow payment, takes its fee, holds the balance for the settlement period and then sends a payout, which often bundles many sales. Stripe's payouts documentation explains that payouts are sent from your available balance on a schedule you choose. HitPay works the same way.
So a single S$2,906.20 deposit might be thirty orders, minus fees, minus a refund. If you record it as one sale of S$2,906.20, your revenue, fees and GST output tax are all wrong.
| Provider and method | Fee (standard pricing) | On a S$100 sale |
|---|---|---|
| Stripe, domestic card | 3.4% + S$0.50 | S$3.90 fee, S$96.10 paid out |
| Stripe, PayNow | 1.3% | S$1.30 fee, S$98.70 paid out |
| HitPay, domestic online card | 2.8% + S$0.50 | S$3.30 fee, S$96.70 paid out |
| HitPay, PayNow (S$100 and above) | 0.65% + S$0.30 | S$0.95 fee, S$99.05 paid out |
Sources: Stripe pricing and HitPay pricing. Our Stripe fees guide covers every method in detail.
The clearing account method
A clearing account is a bank-type account in your chart of accounts called, for example, 'Stripe Clearing'. Money goes in when a customer pays and goes out when Stripe pays you or takes a fee. Its balance should always equal your Stripe balance.
Create the clearing account
In Xero, add it as a bank account (or use the account the Stripe or HitPay feed creates). In QuickBooks, add a bank-type account named after the provider.
Create a fees expense account
For example 'Payment processing fees' under expenses. Use one per provider if you want to compare costs.
Record sales gross
Invoices paid online, or daily sales summaries from your shop, go into the clearing account at the full amount the customer paid.
Record fees separately
Each fee line in the Stripe or HitPay feed is coded to the fees expense account.
Record payouts as transfers
Match the deposit in your real bank feed to a transfer from the clearing account, not to a sale.
Using the Xero integrations for Stripe and HitPay
You do not have to type these entries. Xero's Stripe integration adds a Stripe bank feed, and Xero says it automatically matches payments as they come through that feed so you are not tracking down payments and fees inside each payout. Xero also lists the standard Stripe payout time as 2 to 3 business days, with the first payout taking 7 to 10 business days.
HitPay's Xero app lets you take PayNow on Xero invoices and turn on a HitPay bank feed to reconcile payments from your online store or point of sale. For Shopify stores, our guide to connecting Shopify, Stripe or HitPay to Xero explains which integration to use so sales are not recorded twice.
GST on Stripe and HitPay fees
If you are GST-registered, charge GST on your sales at the gross price as normal. The fees are a separate question. Stripe's support article on taxes on Stripe fees for Singapore-based businesses says GST applies to certain Stripe fees, such as Connect, Terminal hardware and Radar, at the standard rate, on top of the fee, and that Stripe provides a monthly tax invoice for the GST charged.
- Fees with no GST charged: code them with a no-GST tax rate so they do not create input tax.
- Fees with GST charged: claim input tax only from the amounts on Stripe's monthly tax invoice, and keep the invoice with your records.
- HitPay and other providers: check their invoices or statements to see whether GST is charged on fees, and code accordingly.
Our Xero GST F5 return checklist covers how tax rates on each line flow into the F5 boxes. This is general guidance; confirm treatment with your accountant.
Refunds, disputes and chargebacks
Refunds and disputes are where clearing accounts drift out of balance, because the money leaves Stripe rather than your bank.
| Event | Entry | Watch out for |
|---|---|---|
| Full refund | Credit note or refund against the sale, paid from the clearing account | Stripe keeps the original processing fee |
| Partial refund | Credit note for the refunded part only | GST adjusts on the refunded portion |
| Dispute opened | Move the disputed amount out of clearing to a 'Disputes' holding account | Stripe charges S$15 per dispute, plus S$15 if you respond manually |
| Dispute won | Move the amount back to clearing | The second S$15 response fee is returned if you win |
| Dispute lost | Write off as a bad debt or credit note | Keep evidence for your records |
Month-end reconciliation checklist
A short monthly routine keeps the clearing accounts honest and makes GST quarters painless.
Month-end checks for payment providers
Stripe's payout reconciliation report matches each payout to the batch of transactions it settles, which helps when one payout does not tie up.
Do it yourself or get help?
If you have a handful of online sales a month, you can follow the clearing account method by hand. Once you have daily orders, multiple providers or a shop integration, a wrong set-up creates double-counted sales and GST errors that are slow to unpick.
Our Xero / QuickBooks Integration (S$390) connects Stripe, HitPay or your shop to Xero or QuickBooks with clearing accounts, fee coding and tax rates set up, and checks the first month's reconciliation with you.
Frequently asked questions
Set up a Stripe clearing account, which the Stripe bank feed can provide. Record each sale at its gross amount into that account, code each Stripe fee line to a payment processing fees expense account, and match each payout in your real bank account as a transfer from the clearing account. Never record the net payout as sales.
Gross. Your revenue is what the customer paid, and GST output tax is calculated on that. The fee is a separate business expense. Recording the net payout as sales understates revenue and expenses and can make your GST return wrong.
Stripe says GST applies to certain of its fees for Singapore account holders, such as Connect, Terminal hardware and Radar, at the prevailing standard rate, added on top of the fee. It issues a monthly tax invoice for the GST charged. Use that tax invoice to support any input tax claim, and check with your accountant.
Common causes are sales recorded twice by a shop integration and the Stripe feed, refunds or disputes not entered, fees coded directly against sales, payouts matched as income instead of transfers, or timing differences at month-end. Compare the clearing balance with the Stripe balance on the same date and use Stripe's payout reconciliation report to find the gap.
Yes. HitPay also pays out net of its fees. Its Xero app can add a HitPay bank feed, which works as the clearing account. Record sales gross, code HitPay's fees to an expense account, and match each payout to your bank as a transfer. Check HitPay's statements for any GST on fees.