> For the complete documentation index, see [llms.txt](https://docs.s8money.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.s8money.com/transactions.md).

# Transactions

## Concepts

S8 Money is designed to relieve users from maintaining account balances beyond initial set up. The idea is to let users add transactions and update account balances automatically as transactions are added. It was also designed to provide flexibility to users in terms of what data they wish to maintain. These requirements led to two concepts - tracking and reconciliation.

### Tracking

When you add a transaction, you can mark it as tracked or untracked. A tracked transactions reflects on the account balances while a untracked transaction doesn't. If you are adding every transaction on an account it's best to mark the transaction as tracked. This will relieve you of updating account balances and also make reconciliation easier.

{% hint style="success" %}
Untracking is useful when you want to load older transactions (older than the as of date of your balance) for reporting purposes.

It can also be used when you might only be interested in adding a subset of transactions for an account. In such a case you will have to manually sync up your account balance with the bank balance periodically.
{% endhint %}

### Reconciliation

Reconciliation refers to reconciling the data on the app with the bank. Once you verify you have entered the transaction data accurately you can reconcile the transaction by clicking on the `reconcile` action against the transaction on the transactions listing.

{% hint style="success" %}
After all transactions have been entered it is important to ensure your account balance matches the bank balance. This will provide you confidence you haven't missed any transactions or incorrectly added any.
{% endhint %}

## Transaction Attributes

The following transaction attributes are supported.

<table><thead><tr><th width="206">Attribute</th><th>Description</th></tr></thead><tbody><tr><td>Account</td><td>The account the transaction should be recorded against.</td></tr><tr><td>Transaction Date</td><td>The date the transaction occurred.</td></tr><tr><td>Amount</td><td>The transaction amount. Use negative amount for debit transactions and positive for credit transactions.</td></tr><tr><td>Currency</td><td>This is a implied field. The currency of a transaction is the same as the currency of the account.</td></tr><tr><td>Labels</td><td><a href="/pages/V0GaitzA9Ut0IYKTvigR#labels">Labels</a> are used to tag transactions. You can add one or more labels.</td></tr><tr><td>Description</td><td>Use this to make a note for special transactions. Generally use this field sparingly and rely on labels instead. Using verbose descriptions will increase data size and could impact app performance.</td></tr></tbody></table>

## Transaction Maintenance

### Add / Update / Delete

A transaction can be **added** with a simple self-explanatory form. When adding a transaction you can mark it is tracked or untracked - [tracking](#tracking) is explained above. The form allows an option to `Add More` that simplifies data entry when adding multiple transactions on the same account/date.&#x20;

To **edit** a transaction expand the transaction in the transactions listing. A reconciled transaction cannot be updated except for its labels and description. To update other fields, mark the transaction as unreconciled first.&#x20;

To **delete** a transaction expand the transaction in the transactions listing and click `Delete`. A reconciled transaction cannot be deleted. To delete a reconciled transaction, mark the transaction as unreconciled first.

## Transaction Bulk Upload

You can bulk load transactions to an account. This feature is available under  `Data Management` tab of account details page.

To upload, create a file with one transaction per line with the following details. Use the comma `,`character as the delimiter.

```
<date>,<amount>,desc,<label1>;<label2>,<tracked>,<reconciled>
```

* date (mandatory) - YYYYMMDD pattern
* amount  (mandatory) - Positive or negative number with up to 2 decimals
* description (optional) - Cannot contain the comma `,` character.  Use sparingly.
* labels (optional) - semi-colon separated list of label names. The label names must exists else load will fail.
* Tracked (optional) -  `Y` to track, `N` otherwise. Defaults to `Y`.
* Reconciled (optional) -  `Y` to reconciled, `N` otherwise. Defaults to `N`.

**Note**

If trailing fields are not provided you can skip them altogether but if you do not want to provide intermediary fields you must account for the delimiters until your final field.

For example, this will load

```
<date>,<amount>
```

However if you don't want to provide  a description but have a label you must do this

```
<date>,<amount>,,<label1>
```

## AI Mode Entry

If you have enabled [AI](/settings/ai.md) in your profile, you can use the AI transaction entry. AI transaction entry provides two modes of entry

* Text
* Voice

### Text Mode

In text mode you can provide transactions in freeform text. This could be typing the transaction information or simply pasting statement contents in the transcript. It is important to provide information related to date, amount, and account for each transaction. You can provide label information directly or it could deduce it from additional information.

Examples

> I bought $10 worth of groceries on my TD Visa yesterday

This provides date (yesterday - AI will convert this to an actual date), account - TD Visa, amount and label (groceries). This assumes you have an account called "TD Visa" and label "groceries".

> I shopped for $10 at Walmart on my TD Visa on 1st Sep

This may not provide a direct label but AI may be able to deduce it from Walmart. If AI cannot determine the label it will use label "Other" if it exists or assign no label.

If you have a bunch of transactions for the same account, such as a statement, you can just mention the account once.

> Transactions on TD Visa
>
> 11/11/2025,WALMART,26.27> \
> 11/10/2025,MC DONALDS RESTAURANT,47.02> \
> 11/10/2025,PAYMENT - THANK YOU,1602.97

{% hint style="success" %}
AI is typically smart to understand the data so just ensure the information is available somewhere in the transcript. If there is extraneous information such as a copy-paste from the statement, let AI know to ignore it.
{% endhint %}

{% hint style="warning" %}
Always verify each transaction during reconciliation. AI can confidently makes mistakes.
{% endhint %}

### Voice Mode

Everything in text mode is applicable to voice mode. The only difference here is you can speak your transaction information. This can be quite handy if you are reading transactions from your bank's mobile app into the S8 Money desktop site.

Once started, the voice function automatically detects a sentence and displays its text in the transcript going back to recording again. If it doesn't detect voice for sometime it will stop recording and you will need to start it again. Everything you say is accumulated in the transcript until you click "Clear" or "Process" or close the dialog. You can edit the transcript before clicking "Process".


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.s8money.com/transactions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
