• Finance
  • 3 tables
  • 38,718 rows
  • 7 formats
  • synthetic data

Ready-Made Accounting Dataset for Practice

This ready-made accounting dataset provides 38,718 rows of synthetic financial data for practicing data analysis. It includes accounts, transactions, and ledgers, suitable for finance professionals and students. A free sample is available, with full downloads costing credits.

  • last updated 30 Sept 2026
  • by GoMask
  • Dataset spans from 2023-01-01 to 2024-12-31.
  • Contains 3 tables: accounts, transactions, and ledgers.
  • Includes 15 columns across all tables.
  • Features 38,718 total rows of data.
  • Offers a free sample of 1,000 rows.

At a glance

  • 3tables
  • 38,718rows
  • 15columns
  • Jan 2023 – Dec 2024date range

The 3 tables

preview and data dictionary per table

Accounts accounts · table · 5,000 rows

Stores information about the chart of accounts.

Preview

First 10 of 5,000 rows of the Accounts table
account_iduuidaccount_namestringaccount_typestringopening_balancedecimal
27910bb9-e25c-4018-99a9-79612dfcbfd5Cash in Hand - ArthurAsset21134.17
e3e4d6db-c0d6-46af-9681-7e76db23e6c6Accounts Receivable - EleanorAsset1321.23
fdb831b7-33d2-4931-8cf5-4ee63b3c3b95Inventory - ThomasAsset29858.1
965a7e82-c8ef-49fe-ae0b-13f696d752f8Equipment - WilliamAsset9091.98
2472f68e-9e56-484b-88cb-b14462f667f8Prepaid Expenses - JamesAsset2668.12
857080e7-ee9f-477b-a908-deacd8753e60Accounts Receivable - BenjaminAsset29173.36
1c3006e9-fc5f-44d8-bc7b-ba6bc0d681a4Cash in Bank - HenryAsset8089.48
6dca4554-31da-4010-bc80-5f6cfb821a69Inventory - AlexanderAsset17348.76
c2da3d23-4d4a-4e2f-b4bc-f9a23e6b113dEquipment - MichaelAsset20921.63
d37b6363-0e3a-461d-9975-ede2931cc43bPrepaid Expenses - DanielAsset20365.36
10 of 5,000 rows · 4 columns

Data dictionary

Data dictionary for the Accounts table
columntypedescriptionexamplenull %
account_iduuidPrimary key identifier for each account in the chart of accounts.unique27910bb9-e25c-4018-99a9-79612dfcbfd50%
account_namestringDescriptive title of the ledger account representing assets, liabilities, equity, revenues, or expenses.Cash in Hand - Arthur0%
account_typestringStandard accounting categorization classifying the role of the account in the balance sheet or income statement.Asset0%
opening_balancedecimalBeginning financial balance carried forward at the inception of the accounting period.21134.170%

Transactions transactions · fact table · 22,466 rows

Records individual financial transactions.

Preview

First 2 of 22,466 rows of the Transactions table
transaction_iduuidtransaction_datedatedescriptionstringdebit_amountdecimalcredit_amountdecimalaccount_iduuid
8c38fe3f-0460-4784-a13f-f15dc02356e32023-09-12Bank Service Charge2755.92027910bb9-e25c-4018-99a9-79612dfcbfd5
cd92f6bb-8c89-409c-8e83-27993fee2ef12024-11-21Utility Bill Payment505.80d37b6363-0e3a-461d-9975-ede2931cc43b
2 of 22,466 rows · 6 columns

Data dictionary

Data dictionary for the Transactions table
columntypedescriptionexamplenull %
transaction_iduuidUnique identifier for the financial transaction.39522b72-7321-4538-97ee-2b0862d991e20%
transaction_datedateDate the accounting transaction occurred.2023-09-110%
descriptionstringStandard business narrative describing the nature of the transaction.Bank Service Charge0%
debit_amountdecimalDebit transaction amount in local currency, non-zero only when credit_amount is zero.3220.940%
credit_amountdecimalCredit transaction amount in local currency, non-zero only when debit_amount is zero.00%
account_iduuidForeign key to accounts.account_id.1cf9955c-1dc9-44da-ad20-a189d1a2d0960%

Ledgers ledgers · fact table · 11,252 rows

Contains general ledger entries.

Preview

First 10 of 11,252 rows of the Ledgers table
ledger_iduuidentry_datedateentry_descriptionstringamountdecimaltransaction_iduuid
ff469252-8c34-47c9-86ec-d7907db497d52024-04-16Journal Entry1425.9402a2fb96-5d17-4345-ae59-78b9d3925201
fdb66dd9-bf9c-412e-9c8e-1eac48b750d72023-03-25Journal Entry2208.9196f9a895-7db2-45dc-8748-b2a213d8bd9b
8056a42b-dd88-4ca7-8acf-b43abcfb0b2a2023-05-29Journal Entry2017.7732f2c4e0-b0fb-4b2e-87ba-2ca92033d86f
b97e406e-fff2-4d25-9c3a-aeab692ca73a2023-05-26Journal Entry-6035.33995de44d-bb98-4ce9-bc1f-ed2ce62230bd
657ccc3f-b76d-4ba7-b50e-0fa49cd3bf892024-06-24Customer Receipt-176.684151e78e-5eee-456b-ba9c-90ba17c7a6ad
74172699-6755-4324-a6bb-1b476b11e6312023-02-06Journal Entry2407.84f692544b-d0ac-4874-b60f-1b84fa5ad563
ddffb81f-b8b2-419b-a850-8b8c06d960ec2023-09-09Customer Receipt3288.46b45e41f0-c99a-4c57-9d94-f2bc49786bc9
ac814daf-fdd5-4351-83e4-4793e7bf45262024-02-15Journal Entry1570.27263466ac-5324-4c9e-82d3-822bab79238a
50ac8f42-cce7-4b4a-9576-267a59e6ce5f2023-11-30Customer Receipt-2264.665efaf171-9229-47d6-a6fe-7b49f04c23ed
814246dc-991d-4f80-a6d2-079de92cf6ee2024-09-12Customer Receipt-2169.57ec315a19-9ffb-44f3-a8c9-c4782faf4c1f
10 of 11,252 rows · 5 columns

Data dictionary

Data dictionary for the Ledgers table
columntypedescriptionexamplenull %
ledger_iduuidPrimary key identifier for the general ledger entry.ff469252-8c34-47c9-86ec-d7907db497d50%
entry_datedatePosting date of the ledger entry corresponding to transaction occurrence.2024-04-160%
entry_descriptionstringStandardized description of the ledger journal posting narrative.Journal Entry0%
amountdecimalNet monetary amount posted in the ledger entry (negative for credits/outflows, positive for debits/inflows, non-zero).1425.940%
transaction_iduuidForeign key to transactions.transaction_id.02a2fb96-5d17-4345-ae59-78b9d39252010%

How the tables join

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

Questions to answer with it

  1. What is the balance for each account at the end of the period using the accounts, transactions, and ledgers tables?

    Sum of opening balance and net transaction amounts.

    tables: accounts, transactions, ledgers

  2. Identify any discrepancies between transactions and ledger entries by joining transactions and ledgers.

    Look for mismatches in amounts or descriptions where transaction_id links them.

    tables: transactions, ledgers

  3. Analyze the flow of funds through different account types using pivot tables or Power BI.

    Aggregate debit and credit amounts by account type.

    tables: accounts, transactions

  4. What are the total debit and credit amounts for each transaction description?

    Group by the description column and sum debit_amount and credit_amount.

    tables: transactions

Starter SQL

run against this data before publishing

Table names match the SQLite file and the SQL script.

Total Balance per Account

sql
SELECT a.account_name, a.opening_balance + SUM(t.credit_amount - t.debit_amount) AS ending_balance
FROM accounts a
LEFT JOIN transactions t ON a.account_id = t.account_id
GROUP BY a.account_name, a.opening_balance
ORDER BY ending_balance DESC
LIMIT 20;

Transactions with Ledger Entries

sql
SELECT t.transaction_id, t.transaction_date, t.description, l.amount
FROM transactions t
JOIN ledgers l ON t.transaction_id = l.transaction_id
WHERE l.amount <> 0
LIMIT 20;

Top 5 Transaction Descriptions by Total Debit Amount

sql
SELECT description, SUM(debit_amount) AS total_debit
FROM transactions
GROUP BY description
ORDER BY total_debit DESC
LIMIT 5;

Account Balances Over Time (Last 20 Transactions)

sql
SELECT a.account_name, t.transaction_date, (t.credit_amount - t.debit_amount) AS transaction_value
FROM accounts a
JOIN transactions t ON a.account_id = t.account_id
ORDER BY t.transaction_date DESC
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")
transactions = pd.read_csv("transactions.csv")
ledgers = pd.read_csv("ledgers.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_type").size().sort_values(ascending=False))

Using it in your tool

Excel
Each table can be loaded into a separate Excel sheet. Use Power Query to join tables based on their keys (e.g., account_id, transaction_id). Create a PivotTable on the 'transactions' sheet, using 'account_type' from the 'accounts' table (after joining) as rows and summing 'debit_amount' and 'credit_amount'.
Power BI
Load all three tables. Create relationships: transactions.account_id to accounts.account_id (Many-to-One), and ledgers.transaction_id to transactions.transaction_id (One-to-One or One-to-Many depending on data granularity). Create measures like Total Debits = SUM(transactions[debit_amount]) and Total Credits = SUM(transactions[credit_amount]).
SQL
Load the SQLite or SQL relational download. The primary keys are account_id (accounts), transaction_id (transactions), and ledger_id (ledgers). Foreign keys are transactions.account_id referencing accounts.account_id, and ledgers.transaction_id referencing transactions.transaction_id. Joins can be performed on these keys.

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 generated using GoMask DataFactory.
  • Synthetic data mimics accounting structures.
  • No real-world entities or events are represented.
  • 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 any specific real-world company.
  • Certain complex accounting scenarios or edge cases may not be fully represented.
  • Distributions and correlations are modelled, not measured from real records.

blueprint · accounting-dataset

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.

  • 200,000 rows
  • 1,000,000 rows
Scale this dataset in Data Factory
Tables
accounts, transactions, ledgers
Licence
yours to use, including commercially
API slug
accounting-dataset

What should your data show?

Preview 20 rows free
No signup. No card.