# Unique, Transaction, and Remote IDs

These three unique identifiers help you track financial records when working with them in an external process (like Google Sheets) and Bkper.

## 1. Unique ID (Your Sheet's ID)

* **What it is:** A unique ID that you create and add to a row (a record or transaction) in your Google Sheet or any other financial data source.
* **The main job:** It prevents you from recording the exact same transaction twice. Once a row with a Unique ID is recorded in Bkper, it is recognized as *idempotent* (meaning it cannot be saved again with that ID in the same book), which prevents duplication.
* **Best use:** This is most helpful if you are using an external process that already assigns IDs to your records; it ensures no duplication when those records move into Bkper.
  * *To use this feature with the Bkper Add-on, label a column with **`id`** in the sheet and freeze the first row (headers).*

## 2. Transaction ID (Bkper's ID)

* **What it is:** This is the unique ID that **Bkper creates and assigns** to the transaction once it's successfully saved in your book. It is a different ID than the one you provided in your Google Sheet.
* **The main job:** This is the primary key for managing the transaction *inside Bkper*. Unlike the Unique ID (which prevents duplication on initial input), the Transaction ID is used for *maintenance*: it allows you to search for and update an existing transaction. Crucially, once this ID is present on a row in your sheet, any future save action will update the corresponding transaction in your book.
* **Where to find it:** On the transaction's edit window within Bkper.

## 3. Remote ID (The Link to the Outside)

* **What it is:** When you fetch a transaction *back* into your Google Sheet, the original **Unique ID** that you assigned is now referred to as the **Remote ID** on that row.
* **The main job:** The Remote ID is kept as a reference, linking the transaction back to the original source or external process that created the ID. If you want to update the transaction in Bkper, you must use the **Transaction ID**.
