# Income, expenses and cash: free working template

The example is entirely made-up. The blank CSV contains headers only. These are record templates, not an automated accounting system or tax return. Keep a separate copy for each business and currency. Open the CSV file in a spreadsheet. If asked for import settings, choose UTF-8 text and commas between columns. Keep IDs as text and money amounts as numbers with decimal places. Do not paste untrusted formulas into cells.

1. Enter one event per row with a unique `id`, a source and a location. `effective_date` is when the event belongs in the accounts. `cash_date` is when money actually moves; leave it blank if no money moves. In a JSON import, a blank cash date becomes `null`, not zero.
2. Use positive amounts; the event type determines the direction. Never combine currencies without a separately documented conversion.
3. Record sales as `sale`; record the cost of stock when it is sold as `cogs`. Paying for new stock is `inventory_purchase`, not cost of goods sold a second time.
4. Use `operating_expense` or `payroll` for day-to-day business costs. If you record a supplier cost before paying it, record the later payment separately and link it to the original cost. The later payment reduces cash but must not count as the same expense again.
5. `loan_received` increases the money available but does not count as sales income. `principal_repayment` reduces cash, not profit; interest is `interest_expense`. Use `equipment_purchase` for money spent buying equipment the business will keep using. Use `depreciation` to spread the cost of equipment over the time it is used. Depreciation reduces the profit shown in the accounts, but no money moves on that date.
6. Separate `owner_draw` from an owner's genuine salary (`owner_salary`). Money the owner puts into the business is not sales income.
7. Use `tax_expense` for the checked tax cost belonging to the period. Use `tax_payment` for money actually paid. Do not guess which tax rules or rate apply. Attach the amount and period confirmed by the accountant.
8. For a customer return, use `customer_refund` and link it to the original `sale_id`. If the returned item can be sold again, record it separately as `refund_inventory_recovery`. Keep the original sale and return in their correct periods.
9. Mark each value `confirmed`, `reconstructed` or `estimated`. The example's `confirmed` means checked within the made-up example. All example rows also say `data_origin=synthetic`.
10. Check the money available at the start and end against your records and explain any difference. Confirm that no sales, costs of stock sold, day-to-day business costs, depreciation, interest or tax are missing. The companion JSON demonstrates these required confirmations. A blank cost is unknown, not zero. Keep mismatches visible until resolved.

The example has 15 original records for August 2026 across two locations, USD. Opening cash is $700. Calculated profit after all costs and tax is $900. Closing cash is $1,300. The difference follows from stock purchases, loans received, loan repayments, equipment, equipment costs counted without a new payment, and money the owner takes out. No figure describes a real client. The full result and explanation of why profit differs from the change in available money are in `profit-result-example.md` in the public downloads.

Ordinary receipts and bank records often need extra columns; this template does not replace their source files. Keep personal or payment details out of public chats. Using the free template does not create an order or subscription.

## What the spreadsheet columns mean

Keep the column headings unchanged so the files still work with the calculations. Their meanings are below. CSV means a simple spreadsheet file.

| Column | Meaning |
|---|---|
| `id` | A different reference for each entry, rule, or item-and-cost row. |
| `kind` | What the entry records; use one of the listed codes. |
| `effective_date` | Date the sale or cost belongs in the accounts. |
| `cash_date` | Date the money actually moves; blank if no money moves. |
| `amount` | Amount of money in the stated currency. |
| `currency` | Currency code: USD means US dollars; KZT means Kazakhstani tenge. |
| `location` | The shop or business location this row belongs to. |
| `source_id` | Reference to the receipt, invoice or other record supporting this row. |
| `value_status` | Whether the figure is checked, rebuilt from other records, or estimated. |
| `data_origin` | Where the data came from; “synthetic” means made up for an example. |
