Accounting Dataset for Excel Practice
This ready-made accounting dataset is designed for professionals who use Excel for financial analysis. It includes realistic data to practice common accounting tasks. A free sample is available for preview before full download using credits.
At a glance
- 3tables
- 5,110rows
- 10columns
- Jan 2023 – Dec 2024date range
The 3 tables
preview and data dictionary per tableAccounts accounts · dimension table · 100 rows
Contains information about the chart of accounts.
Preview
| account_idinteger | account_namestring |
|---|---|
| 81 | Software Subscription Revenue |
| 82 | Consulting Services Revenue |
| 83 | Training and Education Revenue |
| 84 | Maintenance and Support Revenue |
| 85 | Licensing and Royalty Revenue |
| 86 | Advertising and Sponsorship Revenue |
| 87 | Affiliate Marketing Revenue |
| 88 | Commissions and Brokerage Fees |
| 89 | Rental and Leasing Revenue |
| 90 | Gain on Sale of Assets |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
account_ | integer | Unique identifier for the accounting account.unique | 81 | 0% |
account_ | string | Human-readable official name of the account in the chart of accounts.unique | Software Subscription Revenue | 0% |
Ledgers ledgers · dimension table · 10 rows
Defines the different ledgers used in the accounting system.
Preview
| ledger_idinteger | ledger_namestring |
|---|---|
| 1 | Sales Ledger |
| 2 | Accounts Receivable Ledger |
| 3 | Accounts Payable Ledger |
| 4 | Purchase Ledger |
| 5 | Expense Ledger |
| 6 | Cash Ledger |
| 7 | Payroll Ledger |
| 8 | Fixed Asset Ledger |
| 9 | General Ledger |
| 10 | Equity Ledger |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
ledger_ | integer | Primary key identifier for the accounting ledger.unique | 1 | 0% |
ledger_ | string | Standardized name of the accounting ledger.unique | Sales Ledger | 0% |
Transactions transactions · table · 5,000 rows
Records individual financial transactions.
Preview
| transaction_idinteger | transaction_datedate | amountdecimal | descriptionstring | account_idinteger | ledger_idinteger |
|---|---|---|---|---|---|
| 1 | 2024-10-30 | -329.42 | Invoice Paid | 90 | 5 |
| 2 | 2024-08-02 | -818.31 | Consulting Fee | 99 | 5 |
| 3 | 2023-01-02 | -126.09 | Invoice Paid | 65 | 1 |
| 4 | 2023-04-24 | -3076.57 | Invoice Paid | 48 | 7 |
| 5 | 2023-06-28 | -45.25 | Office Supplies Purchase | 40 | 10 |
| 6 | 2024-02-02 | -29.24 | Office Supplies Purchase | 27 | 5 |
| 7 | 2023-12-18 | -205.57 | Invoice Paid | 93 | 10 |
| 8 | 2023-03-06 | -528.36 | Invoice Paid | 94 | 8 |
| 9 | 2023-10-02 | -320.94 | Invoice Paid | 14 | 6 |
| 10 | 2024-05-28 | -136.83 | Invoice Paid | 94 | 10 |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
transaction_ | integer | Primary key identifier for each financial transaction.unique | 1 | 0% |
transaction_ | date | The date when the financial transaction was recorded. | 2024-10-30 | 0% |
amount | decimal | Monetary value of the transaction. Negative values represent debits while positive values represent credits. | -329.42 | 0% |
description | string | Standard business description of the transaction. | Invoice Paid | 0% |
account_ | integer | Foreign key to accounts.account_id. | 90 | 0% |
ledger_ | integer | Foreign key to ledgers.ledger_id. | 5 | 0% |
How the tables join
transactions.account_id references accounts.account_idmany to one: each Transactions row points to one Accounts rowtransactions.ledger_id references ledgers.ledger_idmany to one: each Transactions row points to one Ledgers row
Questions to answer with it
Calculate the total balance for each account using the 'transactions' table.
You can sum the 'amount' column in the 'transactions' table, grouped by 'account_id'.
tables: transactions, accounts
Identify which accounts have the highest number of transactions by grouping the 'transactions' table by 'account_id'.
Count the occurrences of each 'account_id' in the 'transactions' table.
tables: transactions
Analyze the distribution of transactions across different ledgers using the 'transactions' and 'ledgers' tables.
Join 'transactions' and 'ledgers' tables on 'ledger_id' and count transactions per 'ledger_name'.
tables: transactions, ledgers
Starter SQL
run against this data before publishingTable names match the SQLite file and the SQL script.
Total balance per account
SELECT account_id, SUM(amount) AS total_balance FROM transactions GROUP BY account_id LIMIT 20;Top 5 accounts by transaction count
SELECT account_id, COUNT(*) AS transaction_count FROM transactions GROUP BY account_id ORDER BY transaction_count DESC LIMIT 5;Transactions per ledger name
SELECT l.ledger_name, COUNT(t.transaction_id) AS transaction_count FROM transactions t JOIN ledgers l ON t.ledger_id = l.ledger_id GROUP BY l.ledger_name LIMIT 20;Average transaction amount by ledger
SELECT l.ledger_name, AVG(t.amount) AS average_amount FROM transactions t JOIN ledgers l ON t.ledger_id = l.ledger_id GROUP BY l.ledger_name LIMIT 20;Load it with pandas
import pandas as pd
# Unzip the CSV download first: one file per table
accounts = pd.read_csv("accounts.csv")
ledgers = pd.read_csv("ledgers.csv")
transactions = pd.read_csv("transactions.csv")
# Join transactions to accounts
df = transactions.merge(accounts, left_on="account_id", right_on="account_id", how="left", suffixes=("", "_accounts"))
print(df.groupby("account_id").size().describe())Using it in your tool
- Excel
- Each table is provided as a separate sheet in the XLSX file. Use XLOOKUP to join tables or Power Query to import and merge data. Create your first PivotTable on the 'transactions' sheet to analyze financial data.
Formats available
- CSV (zip)One CSV file per table, zipped
- Excel workbookOne worksheet per table
- SQLite databaseA ready-to-query database file with every table
- Parquet (zip)One Parquet file per table, zipped
- SQL scriptCREATE TABLE with primary and foreign keys, then INSERTs
- CSVA single CSV file
- JSONA single JSON file
How this data was generated
Synthetic data. Every row was generated: no real people, customers or companies are in this dataset.
Synthetic data generated by GoMask DataFactory from a relational blueprint: keys, links and rules are enforced in code, text columns are filled by a language model. No real people, companies or transactions.
- Data was generated using GoMask DataFactory.
- The dataset mimics typical accounting data structures.
- Includes relationships between accounts, ledgers, and transactions.
- Checked by an automated quality gate: unique keys, no orphan foreign keys, required columns filled, declared rules and date ranges (realism score 100).
Limitations
- The data is synthetic and does not represent real-world entities.
- Transaction descriptions are limited to a few common types.
- The date range is fixed from 2023-01-02 to 2024-12-31.
- Distributions and correlations are modelled, not measured from real records.
blueprint · accounting-dataset-for-excel
Scale this dataset
Same tables. As many rows as you need.
Open the blueprint behind these 3 tables in Data Factory: keep the relationships, change a column, and generate it at the size you need.
- 50,000 rows
- 200,000 rows
- Tables
- accounts, ledgers, transactions
- Licence
- yours to use, including commercially
- API slug
- accounting-dataset-for-excel