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.
At a glance
- 3tables
- 38,718rows
- 15columns
- Jan 2023 – Dec 2024date range
The 3 tables
preview and data dictionary per tableAccounts accounts · table · 5,000 rows
Stores information about the chart of accounts.
Preview
| account_iduuid | account_namestring | account_typestring | opening_balancedecimal |
|---|---|---|---|
| 27910bb9-e25c-4018-99a9-79612dfcbfd5 | Cash in Hand - Arthur | Asset | 21134.17 |
| e3e4d6db-c0d6-46af-9681-7e76db23e6c6 | Accounts Receivable - Eleanor | Asset | 1321.23 |
| fdb831b7-33d2-4931-8cf5-4ee63b3c3b95 | Inventory - Thomas | Asset | 29858.1 |
| 965a7e82-c8ef-49fe-ae0b-13f696d752f8 | Equipment - William | Asset | 9091.98 |
| 2472f68e-9e56-484b-88cb-b14462f667f8 | Prepaid Expenses - James | Asset | 2668.12 |
| 857080e7-ee9f-477b-a908-deacd8753e60 | Accounts Receivable - Benjamin | Asset | 29173.36 |
| 1c3006e9-fc5f-44d8-bc7b-ba6bc0d681a4 | Cash in Bank - Henry | Asset | 8089.48 |
| 6dca4554-31da-4010-bc80-5f6cfb821a69 | Inventory - Alexander | Asset | 17348.76 |
| c2da3d23-4d4a-4e2f-b4bc-f9a23e6b113d | Equipment - Michael | Asset | 20921.63 |
| d37b6363-0e3a-461d-9975-ede2931cc43b | Prepaid Expenses - Daniel | Asset | 20365.36 |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
account_ | uuid | Primary key identifier for each account in the chart of accounts.unique | 27910bb9-e25c-4018-99a9-79612dfcbfd5 | 0% |
account_ | string | Descriptive title of the ledger account representing assets, liabilities, equity, revenues, or expenses. | Cash in Hand - Arthur | 0% |
account_ | string | Standard accounting categorization classifying the role of the account in the balance sheet or income statement. | Asset | 0% |
opening_ | decimal | Beginning financial balance carried forward at the inception of the accounting period. | 21134.17 | 0% |
Transactions transactions · fact table · 22,466 rows
Records individual financial transactions.
Preview
| transaction_iduuid | transaction_datedate | descriptionstring | debit_amountdecimal | credit_amountdecimal | account_iduuid |
|---|---|---|---|---|---|
| 8c38fe3f-0460-4784-a13f-f15dc02356e3 | 2023-09-12 | Bank Service Charge | 2755.92 | 0 | 27910bb9-e25c-4018-99a9-79612dfcbfd5 |
| cd92f6bb-8c89-409c-8e83-27993fee2ef1 | 2024-11-21 | Utility Bill Payment | 505.8 | 0 | d37b6363-0e3a-461d-9975-ede2931cc43b |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
transaction_ | uuid | Unique identifier for the financial transaction. | 39522b72-7321-4538-97ee-2b0862d991e2 | 0% |
transaction_ | date | Date the accounting transaction occurred. | 2023-09-11 | 0% |
description | string | Standard business narrative describing the nature of the transaction. | Bank Service Charge | 0% |
debit_ | decimal | Debit transaction amount in local currency, non-zero only when credit_amount is zero. | 3220.94 | 0% |
credit_ | decimal | Credit transaction amount in local currency, non-zero only when debit_amount is zero. | 0 | 0% |
account_ | uuid | Foreign key to accounts.account_id. | 1cf9955c-1dc9-44da-ad20-a189d1a2d096 | 0% |
Ledgers ledgers · fact table · 11,252 rows
Contains general ledger entries.
Preview
| ledger_iduuid | entry_datedate | entry_descriptionstring | amountdecimal | transaction_iduuid |
|---|---|---|---|---|
| ff469252-8c34-47c9-86ec-d7907db497d5 | 2024-04-16 | Journal Entry | 1425.94 | 02a2fb96-5d17-4345-ae59-78b9d3925201 |
| fdb66dd9-bf9c-412e-9c8e-1eac48b750d7 | 2023-03-25 | Journal Entry | 2208.91 | 96f9a895-7db2-45dc-8748-b2a213d8bd9b |
| 8056a42b-dd88-4ca7-8acf-b43abcfb0b2a | 2023-05-29 | Journal Entry | 2017.77 | 32f2c4e0-b0fb-4b2e-87ba-2ca92033d86f |
| b97e406e-fff2-4d25-9c3a-aeab692ca73a | 2023-05-26 | Journal Entry | -6035.33 | 995de44d-bb98-4ce9-bc1f-ed2ce62230bd |
| 657ccc3f-b76d-4ba7-b50e-0fa49cd3bf89 | 2024-06-24 | Customer Receipt | -176.68 | 4151e78e-5eee-456b-ba9c-90ba17c7a6ad |
| 74172699-6755-4324-a6bb-1b476b11e631 | 2023-02-06 | Journal Entry | 2407.84 | f692544b-d0ac-4874-b60f-1b84fa5ad563 |
| ddffb81f-b8b2-419b-a850-8b8c06d960ec | 2023-09-09 | Customer Receipt | 3288.46 | b45e41f0-c99a-4c57-9d94-f2bc49786bc9 |
| ac814daf-fdd5-4351-83e4-4793e7bf4526 | 2024-02-15 | Journal Entry | 1570.27 | 263466ac-5324-4c9e-82d3-822bab79238a |
| 50ac8f42-cce7-4b4a-9576-267a59e6ce5f | 2023-11-30 | Customer Receipt | -2264.66 | 5efaf171-9229-47d6-a6fe-7b49f04c23ed |
| 814246dc-991d-4f80-a6d2-079de92cf6ee | 2024-09-12 | Customer Receipt | -2169.57 | ec315a19-9ffb-44f3-a8c9-c4782faf4c1f |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
ledger_ | uuid | Primary key identifier for the general ledger entry. | ff469252-8c34-47c9-86ec-d7907db497d5 | 0% |
entry_ | date | Posting date of the ledger entry corresponding to transaction occurrence. | 2024-04-16 | 0% |
entry_ | string | Standardized description of the ledger journal posting narrative. | Journal Entry | 0% |
amount | decimal | Net monetary amount posted in the ledger entry (negative for credits/outflows, positive for debits/inflows, non-zero). | 1425.94 | 0% |
transaction_ | uuid | Foreign key to transactions.transaction_id. | 02a2fb96-5d17-4345-ae59-78b9d3925201 | 0% |
How the tables join
transactions.account_id references accounts.account_idmany to one: each Transactions row points to one Accounts rowledgers.transaction_id references transactions.transaction_idmany to one: each Ledgers row points to one Transactions row
Questions to answer with it
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
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
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
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 publishingTable names match the SQLite file and the SQL script.
Total Balance per Account
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
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
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)
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
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
- Tables
- accounts, transactions, ledgers
- Licence
- yours to use, including commercially
- API slug
- accounting-dataset