• Finance
  • 3 tables
  • 5,110 rows
  • 7 formats
  • Excel edition
  • synthetic data

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.

  • last updated 6 Oct 2026
  • by GoMask
  • Dataset spans from 2023-01-02 to 2024-12-31.
  • Contains 3 tables: accounts, ledgers, and transactions.
  • The transactions table has 5000 rows.
  • Includes 100 unique accounts and 10 ledgers.
  • Amounts range from -10000 to 10000.

At a glance

  • 3tables
  • 5,110rows
  • 10columns
  • Jan 2023 – Dec 2024date range

The 3 tables

preview and data dictionary per table

Accounts accounts · dimension table · 100 rows

Contains information about the chart of accounts.

Preview

First 10 of 100 rows of the Accounts table
account_idintegeraccount_namestring
81Software Subscription Revenue
82Consulting Services Revenue
83Training and Education Revenue
84Maintenance and Support Revenue
85Licensing and Royalty Revenue
86Advertising and Sponsorship Revenue
87Affiliate Marketing Revenue
88Commissions and Brokerage Fees
89Rental and Leasing Revenue
90Gain on Sale of Assets
10 of 100 rows · 2 columns

Data dictionary

Data dictionary for the Accounts table
columntypedescriptionexamplenull %
account_idintegerUnique identifier for the accounting account.unique810%
account_namestringHuman-readable official name of the account in the chart of accounts.uniqueSoftware Subscription Revenue0%

Ledgers ledgers · dimension table · 10 rows

Defines the different ledgers used in the accounting system.

Preview

First 10 of 10 rows of the Ledgers table
ledger_idintegerledger_namestring
1Sales Ledger
2Accounts Receivable Ledger
3Accounts Payable Ledger
4Purchase Ledger
5Expense Ledger
6Cash Ledger
7Payroll Ledger
8Fixed Asset Ledger
9General Ledger
10Equity Ledger
10 of 10 rows · 2 columns

Data dictionary

Data dictionary for the Ledgers table
columntypedescriptionexamplenull %
ledger_idintegerPrimary key identifier for the accounting ledger.unique10%
ledger_namestringStandardized name of the accounting ledger.uniqueSales Ledger0%

Transactions transactions · table · 5,000 rows

Records individual financial transactions.

Preview

First 10 of 5,000 rows of the Transactions table
transaction_idintegertransaction_datedateamountdecimaldescriptionstringaccount_idintegerledger_idinteger
12024-10-30-329.42Invoice Paid905
22024-08-02-818.31Consulting Fee995
32023-01-02-126.09Invoice Paid651
42023-04-24-3076.57Invoice Paid487
52023-06-28-45.25Office Supplies Purchase4010
62024-02-02-29.24Office Supplies Purchase275
72023-12-18-205.57Invoice Paid9310
82023-03-06-528.36Invoice Paid948
92023-10-02-320.94Invoice Paid146
102024-05-28-136.83Invoice Paid9410
10 of 5,000 rows · 6 columns

Data dictionary

Data dictionary for the Transactions table
columntypedescriptionexamplenull %
transaction_idintegerPrimary key identifier for each financial transaction.unique10%
transaction_datedateThe date when the financial transaction was recorded.2024-10-300%
amountdecimalMonetary value of the transaction. Negative values represent debits while positive values represent credits.-329.420%
descriptionstringStandard business description of the transaction.Invoice Paid0%
account_idintegerForeign key to accounts.account_id.900%
ledger_idintegerForeign key to ledgers.ledger_id.50%

How the tables join

  • transactions.account_id references accounts.account_idmany to one: each Transactions row points to one Accounts row
  • transactions.ledger_id references ledgers.ledger_idmany to one: each Transactions row points to one Ledgers row

Questions to answer with it

  1. 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

  2. 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

  3. 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 publishing

Table names match the SQLite file and the SQL script.

Total balance per account

sql
SELECT account_id, SUM(amount) AS total_balance FROM transactions GROUP BY account_id LIMIT 20;

Top 5 accounts by transaction count

sql
SELECT account_id, COUNT(*) AS transaction_count FROM transactions GROUP BY account_id ORDER BY transaction_count DESC LIMIT 5;

Transactions per ledger name

sql
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

sql
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

python
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
Scale this dataset in Data Factory
Tables
accounts, ledgers, transactions
Licence
yours to use, including commercially
API slug
accounting-dataset-for-excel

What should your data show?

Preview 20 rows free
No signup. No card.