Square bookkeeping: split each deposit into sales, sales tax and fees
Square pays you what customers paid, less its fees and any refunds, and what customers paid includes the sales tax you owe the state and any tips. Book the deposit alone and your sales, your tax liability and your processing costs are all wrong at once.
Worked example: one deposit, a refund, tax and a tip
The tool ships a synthetic Square Transactions CSV for March 2026 (fixtures/square-transactions.csv): a $9.00 coffee order with a $1.00 tip and $0.63 tax, a $12.00 sandwich, that sandwich refunded, and sales not yet deposited. Deposit dep_1 reaches the bank as $9.36. The payout command matched it to the bank line and split it: $10.00 of sales (the coffee, the tip and the sandwich, less the refund), $0.63 of sales tax payable, and $1.27 of fees.
| March 2026 | Booked from deposits | Booked from the report |
|---|---|---|
| Sales (tip included, refund taken off) | $9.36 | $10.00 |
| Sales tax payable (owed to the state, not income) | $0.00 | $0.63 |
| Square processing fees | $0.00 | −$1.27 |
| Cash received | $9.36 | $9.36 |
The cash is the same; what changes is that the $0.63 shows as money you owe the state rather than revenue, and the $1.27 of fees is a line you can see, deduct and compare with the rate you expected. Sales is the figure to compare with a 1099-K, and the tax line feeds your sales tax return.
How to book it
- Download the Transactions CSV from Square and your bank statement.
- Import the bank statement in AI Bookkeeper, then run
payouts square-transactions.csv. Each deposit is matched to the bank line of equal amount within a few days and shown as a plan; add--applyto post the splits. - Read the leftovers. Rows with no deposit yet are listed as pending; a deposit whose rows do not add up is reported, not guessed.
- Run it again next month. A deposit already split is reported as done and nothing posts twice.
The column layout was written from memory of Square's export and checked against one hand-written file; no real Square export has been tried, so check the totals against your own statement. Stripe, PayPal, Shopify and Etsy reports read through the same command.
Questions
Should I book Square deposits or Square sales as income?
Book the sales (net of refunds) as income, the sales tax you collected as a liability, and Square's fees as an expense. A deposit is only the cash that arrived: it is smaller than your sales by the fees and refunds, and it contains tax that is not yours.
Which Square report do I need?
The Transactions CSV from the Square Dashboard (Reports, Sales, Transactions), which carries a Deposit ID and Deposit Date on each paid-out row, or the Payouts API entries as JSON.
What about tips?
Tips are inside Total Collected. By default the tool books them with sales; pass --tips with an account code, such as a payroll liability, if you pass them on to staff.
What if a Square deposit does not match any bank line?
The tool leaves it unmatched and says so. Deposits can be batched or delayed; nothing is posted until a bank line of the right amount is found.
Is it free?
Yes. It is open source (MIT), runs in your browser or as a command line tool, and nothing is uploaded.
Open AI Bookkeeper and import your bank statement and report.