Skip to content

Recording Data

Record Transactions, Accounts, and Groups from Google Sheets into your Bkper Books — including column headers, Unique IDs, and Auto Record.

Recording pushes data from your Google Sheet into a Bkper Book. Open the Add-on Sidebar, select a Book, navigate to the Save tab, choose a data type (Transactions, Accounts, or Groups), select the cells containing your data, and press Save. Each row creates or updates one record in Bkper. Successfully saved rows are highlighted in green.

Column Headers

The Add-on uses the first row of your data range as a header to understand each column’s meaning. Headers are recognized in two ways:

Frozen first row — When you freeze the first row (View >> Freeze >> 1 row), the Add-on always treats it as a header, regardless of the column names.

Recognized column names — Even without freezing, the Add-on recognizes specific column names and maps your data correctly. This gives you flexibility when working with data exported from other systems.

Recognized Column Names

The following column names are automatically recognized when saving Transactions:

Column NameAliasesWhat it does
DateThe post date of the Transaction
AmountThe amount on the Transaction
FromOrigin, From Account, Credit AccountThe From Account on the Transaction
ToDestination, To Account, Debit AccountThe To Account on the Transaction
DescriptionThe description, including external URLs
IDUnique identifier for generating IDs
Transaction IDUsed to update existing Transactions
BookIdTarget Book ID when saving to multiple Books
AttachmentFile attachment URL

When using recognized column names, you can place them in any order on your Sheet.

When No Header Is Recognized

If the first row is not frozen and contains no recognized column names, the Add-on falls back to positional parsing. In this mode, the order of the data determines its meaning — for example, the first Account name found on a row becomes the From Account.

Custom Properties

Any column with a header name that is not a recognized system column becomes a Custom Property. The column header becomes the property key and the cell value becomes the property value.

For example, a column named project_code with a cell value of PRJ-2025 records the Custom Property project_code: PRJ-2025 on the record.

To use Custom Properties, freeze the first row to ensure consistent header recognition.

Ignoring Columns

Columns with blank headers are ignored when saving data. This is useful when your Sheet contains additional information — such as checkboxes for internal approval workflows — that should not be recorded in Bkper.

Header Summary

ScenarioHeader RecognitionCustom Properties
First row frozenAlways recognizedSupported
Recognized column names (not frozen)RecognizedSupported
No freeze, no recognized namesFalls back to positional parsingNot supported

Transactions

Record new Transactions or update existing ones directly from your spreadsheet. Whether you’re uploading bank data, syncing invoices, or bulk-editing Transactions you previously fetched from Bkper, the Save tab handles it all.

Transaction Columns

The Add-on recognizes these column headers for Transactions:

Column HeaderDescription
DateTransaction date
AmountTransaction amount
Origin / From / Credit AccountThe From Account
Destination / To / Debit AccountThe To Account
DescriptionTransaction description
AttachmentURL to attachment
IdRemote ID for deduplication
BookIdTarget Book ID (overrides selected Book in the sidebar)
Transaction IdExisting Transaction ID (for updates)
StatusTransaction state — read-only
Recorded at / Created atCreation timestamp — read-only
BalanceAccount balance — read-only

When both Origin/From and Destination/To Accounts are provided along with an Amount, the Transaction is complete and is posted directly to your Book. Otherwise, it is saved as a draft.

Remote ID — A reference to the original identifier from another system or Bkper Book (such as a bank transaction number, invoice ID, or another Book’s Transaction ID). Bkper uses Remote IDs to prevent duplicates — if a Transaction with the same Remote ID already exists, it won’t be recorded again.

Saving New vs. Updating Existing

The Add-on determines whether to record a new Transaction or update an existing one based on the Transaction Id column:

Transaction Id ColumnAction
Empty or missingRecords a new Transaction
Contains an existing IDUpdates the existing Transaction

This enables a powerful workflow for bulk editing:

  • Fetch Transactions from Bkper to your Sheet (using the Fetch tab)
  • Edit the data directly in your spreadsheet (amounts, descriptions, properties, etc.)
  • Save the changes back to Bkper — the Add-on updates each Transaction by its Transaction Id

When updating Transactions, the following columns are read-only and will be ignored: Transaction Id, Status, Recorded at, Created at, and Balance.

Transaction Notes

Filtered rows — When saving from a filtered Sheet, all rows in the selection are processed — including hidden rows, not just visible ones.

Duplicate IDs — If you include an Id column (Remote ID), the Add-on flags duplicate values in red to help you avoid recording duplicate Transactions.

Generating Unique IDs

Assigning a unique ID to records on Google Sheets makes Transactions idempotent — a Transaction with a unique ID cannot be recorded twice in the same Book. Unique IDs prevent creating duplicate Transactions.

From Bkper’s perspective, a unique ID from a Sheet (or elsewhere) is a Remote ID, accessible via the REST API or BkperApp (Google Apps Script). This makes tasks along a financial workflow beyond Bkper easy to automate.

How to Generate IDs

Freeze the first row of your Sheet with the column headers, and add an ID column alongside the system properties.

Google Sheet with frozen headers including an ID column for unique identifiers

After freezing the first row, go to the Bkper extension and select Generate Transaction IDs.

Bkper extension menu showing the Generate Transaction IDs option

The unique IDs are inserted in each row that has data.

Google Sheet showing generated unique IDs in the ID column for each Transaction row

Auto Record

Activate Auto Record on a tab, and each new row added to a Google Sheet is automatically recorded as a new entry in your Bkper Book. This is especially handy when data flows into your Sheet automatically — from a Google Form, a QUERY formula, or another integration.

Setting Up Auto Record

Open the Add-on Sidebar from the Add-on menu and select the Book where you want to record the Transactions. Prepare the data you want to record automatically.

Google Sheet with transaction data prepared for automatic recording

Select Auto Record on the Bkper Add-on menu.

Bkper extension menu showing the Auto Record option

Toggle the Auto Record switch to YES.

Auto Record toggle switched to YES in the Bkper Add-on

New rows on the tab are now automatically recorded in your Bkper Book.

New rows being automatically recorded as Transactions in Bkper

Accounts

Create Accounts in batch directly from your spreadsheet. Instead of manually creating each Account in Bkper, you can create several at once, defining their Type and assigning them to Groups at the same time.

Account Columns

Column HeaderDescription
NameAccount name (required)
TypeAccount type: ASSET, LIABILITY, INCOMING, or OUTGOING
GroupGroup to assign the Account to
BookIdTarget Book ID (overrides selected Book in the sidebar)
Account IdExisting Account ID — read-only (for future updates)

An Account must have a Name to be created. If Type is not specified, the Account defaults to ASSET.

You can assign an Account to multiple Groups by including multiple Group columns in your Sheet. Each column titled “Group” assigns the Account to the Group specified in the corresponding cell value.

Account Notes

Creating Accounts only — Currently, the Save function creates new Accounts. Updating existing Accounts from Google Sheets is not yet supported but is planned for a future release. The Account Id column in fetched data is included to enable this functionality when available.

Account types — Valid types are ASSET, LIABILITY, INCOMING, and OUTGOING. Learn more about Account Types.

Groups

Create Groups in batch directly from your spreadsheet. Instead of manually creating each Group in Bkper, you can create several at once, defining their hierarchy by assigning parent Groups.

Group Columns

Column HeaderDescription
NameGroup name (required)
TypeGroup type: ASSET, LIABILITY, INCOMING, OUTGOING, or mixed (e.g., ASSET_LIABILITY)
ParentName of the parent Group (for creating hierarchies)
BookIdTarget Book ID (overrides selected Book in the sidebar)
Group IdExisting Group ID — read-only (for future updates)
ChildrenNumber of child Groups — read-only
AccountsNumber of Accounts in Group — read-only

A Group must have a Name to be created.

Group Notes

Creating Groups only — Currently, the Save function creates new Groups. Updating existing Groups from Google Sheets is not yet supported but is planned for a future release. The Group Id column in fetched data is included to enable this functionality when available.

Group types — Groups can have a specific type (ASSET, LIABILITY, INCOMING, OUTGOING) or a mixed type (ASSET_LIABILITY for permanent Accounts, INCOMING_OUTGOING for non-permanent Accounts). Learn more about Groups.

Building hierarchies — Use the Parent column to create nested Group structures. The parent Group must exist (either already in Bkper or created in a row above in your Sheet).

Tips

Bulk operations — Prepare large datasets in Google Sheets and save them in one operation. The Add-on processes each row independently, so partial failures don’t prevent other rows from being saved.

Error handling — Rows that fail to save are highlighted in red. Check the error message to understand what went wrong (missing required fields, invalid Account names, etc.).

Troubleshooting — For common issues with saving data, see Known Issues.