Developer Guide: Importing Data into Banana Accounting

Banana Accounting is an accounting software that runs on the user's computer. It is not a cloud solution, and there is no internet service used to add data to the accounting file.

When integrating data, there are two options:

Import the file into Banana Accounting

You can import data into Banana Accounting using one of the predefined formats or an Import Extension.

Complete and modify imported transactions

After data is imported into the accounting file, the user can add more information, modify existing information, or undo the import. 
This makes it very easy to test imports and automate tasks. You do not have to define every possible case, as the user can handle exceptions and make changes when needed.

Create an export file from your application

This is the most common use case, where your application directly creates an export file that can be easily imported into Banana Accounting. 

By providing an export file for Banana Accounting, your application can appeal to a large number of Banana Accounting users. You can focus on improving your application without having to spend time developing accounting functionality.

Create an Import Extension to convert data from other formats

Most software applications allow you to export data in a predefined format but do not let you create an export format specifically for Banana Accounting. By creating an Import Extension, the imported file can be converted into the Banana Accounting format during the import process.

This is the best solution when you are using standard software and need to integrate data into Banana Accounting, or when a customer needs a customized solution, for example to automate specific tasks. 
In this case, you can:

Use the free version for testing

For development and import testing, you can download the version of Banana Accounting available on our website. You can use all features and save up to 70 transactions. This version is normally sufficient for development and testing.

If you are an independent software developer and need full functionality, we can provide a time-limited full license.
The request must include a link to the developer's website.

Cloud integration

Banana Accounting is a desktop solution that runs on the user's computer. The accounting file is saved on the user's computer.

There is no API that allows data to be integrated directly from other cloud services.
If you need to integrate data from a cloud solution:

  • Export the data to a local file.
  • Import the data into Banana Accounting as explained above.

Community

If you are a software developer who provides solutions that integrate with or extend Banana Accounting, we also invite you to explore the benefits available through our Community.

Import "Text file with columns header"

The Banana import format is "Text file with column headers".

  • Fields and column names must be separated by the tab character "\t".
  • Each line (after a "\n") is a new record.
  • Character encoding should preferably be UTF-8; otherwise, use the local encoding.
  • The first line contains the column header names.

    • You can use any column name available in the table.
    • Column names are case-sensitive and must correspond to the Banana NameXml (English) of the column. You can find the NameXml of a column by clicking its header and selecting Settings, as shown in the example:

    XmlName

  • From line 2 onward, the file contains the data to be imported.
    • The format for Date fields is yyyy-mm-dd.
    • Use a decimal point "." as the decimal separator.
    • Amounts should not contain a thousands separator.

Example file format:

Date	Doc	Description	AccountDebit	AccountCredit	Amount

2023-10-12	1	Description 01	1020	2800	2000.00
2023-10-19	2	Description 02	6580	1000	300.00
2023-10-12	3	Description 03	1000	2800	3240.00
2023-10-19	4	Description 04	6570	1020	700.00

Import Accounts

For creating new accounts, customers, suppliers, and cost centers, see the Chart of accounts documentation for a list of the available columns.

Go to the Actions menu > Import into accounting > Accounts

The file type to use is "TXT with headers".

  • You can use any column name available in the table.
    • Account
      The account number.
    • Description
      A short description, organization name, or customer name.
    • BClass
      Required (1, 2, 3, or 4).
    • Gr1
      Required. It is also used to sort the data when it is imported.
    • Address fields
  • Field headers must be included in the first line of the file.
    Field names are case-sensitive and must correspond to the NameXml (English) values found in the Settings tab of the Columns setup.
  • Field headers and field data must use the tab character as the separator "\t".
  • Each line (after a "\n") represents a new record.
  • The format for Date fields is yyyy-mm-dd.
  • Character encoding should preferably be UTF-8; otherwise, use the local encoding.

When importing, the user can choose to import only the new lines.

Import Double-entry transactions in CSV format

For details about importing double-entry transactions, see Import Double-entry accounting transactions.

Go to the Actions menu > Import into accounting

The file type to use is "Text file with column headers".

File format and main columns for import

For double-entry accounting files 

  • You can use any column available in the Transactions table
    (see: Transactions table for double-entry accounting), and you can view the available columns in the Columns setup list.
  • Main columns for double-entry accounting
    • Date of the transaction (2014-12-31).
    • Description a short description.
    • AccountDebit the customer's account number or the general customer account.
    • AccountCredit the revenue account number.
    • Amount the amount in the accounting currency.
    • VatCode the VAT code to use.
    • AmountCurrency for multi-currency accounting, the invoice amount in the original currency, which must be the currency of the AccountDebit account.
  • Field headers must be included in the first line of the file.
    Field names are case-sensitive and must correspond to the NameXml (English) values found in the Settings tab of the Columns setup.
  • Field headers and field data must use the tab character as the separator "\t".
  • Each line (after a "\n") is a new record.
  • The format for Date fields is yyyy-mm-dd.
  • Character encoding should preferably be UTF-8; otherwise, use the local encoding.

Example double-entry file format

In the example, the values are shown in an Excel document.

Double entry trans. excel example

Options

  • Import using clipboard data uses the contents of the clipboard instead of a file.
  • Autocomplete values: Some transaction fields are completed automatically (see "Importing transactions for multi-currency double-entry accounting").
  • Unicode (UTF-8): The file content is encoded in Unicode UTF-8, which supports any character set. 

Importing other transaction columns

You can import any other field defined in the Transactions table.
We also suggest importing the following values, if available:

  • DateDocument the date of the original document (for example, the invoice date).
  • DocInvoice the invoice number.
  • DocOriginal the document number, for example the invoice number.
  • DocLink the address of the file that links to a scanned document (PDF, JPG, etc.).
    You can use a path relative to the accounting file.
  • DateExpiration the invoice due date.
  • ExternalReference information that helps identify each transaction as unique.
    In a future version of Banana, it will be used (together with the date) to warn the user if the transaction has already been imported.
    This should be an external reference generated by the software that creates the transactions to be imported.
    We suggest using the program name and a number that is unique for the accounting period.
    For example, "invoice-2013-00001.001", with the year, invoice number, and a progressive number related to the invoice if multiple transaction lines are required for the same invoice.

Importing transactions for multi-currency double-entry accounting

When importing multi-currency data, rounding or calculation differences may occur because different development tools are used. To avoid these differences, provide only certain fields. During import, the program will calculate the missing field values (with the "Autocomplete values" option).

  • If you provide only "AmountCurrency", the program will use the default exchange rate and calculate the "Amount".
  • To avoid errors, always provide the "ExchangeCurrency" value.
  • If you provide "AmountCurrency" and both "ExchangeRate" and "Amount" are 0 or not present, the program will calculate the exchange rate based on the "Amount" and "AmountCurrency" columns.

Importing invoice data

Data from your invoicing software can be imported into Banana.
There are two ways to do this:

  1. Have your invoicing software generate a file for Banana as described in "Import Double-entry transactions in txt format".
  2. Use the data exported by your existing invoicing software.
    To import data from a proprietary format into Banana, you need to create a JavaScript Banana Extension  that converts the data into a format accepted by Banana.
    The script takes the contents of a file as input and creates a tab-separated text file with column headers as output.
    See also the GitHub repository.

Invoices on multiple rows

Most invoices contain different items that need to be recorded in different revenue accounts or have different VAT rates.
In this case, each invoice requires multiple import rows.
Date, DateDocument, and DocInvoice always have the same values.

  • The first row contains:
    • AccountDebit: the customer account number.
    • AccountCredit is empty.
    • Amount: the total amount of the invoice, which is the amount due from the customer.
    • VatCode is empty.
  • For each item with a different revenue account or VAT rate, you should add another row:
    • AccountDebit is empty.
    • AccountCredit: the revenue account for this item.
    • Amount: the total amount to be recorded in this account.
      If you use a VatCode, it may be convenient to use the amount excluding VAT.
    • VatCode: the VatCode that applies to this item.
      If the Amount is net of VAT, define a VAT code that is calculated on the net amount.

Group transactions by invoice number

If the imported data contains the "DocInvoice" column, when Banana Accounting displays a second dialog box, you can choose to have Banana group the transactions by DocInvoice.
In this case, Banana Accounting automatically creates a transaction for any rounding differences, if necessary.

Use a cost center instead of a customer account

If you want to keep track of registered invoices but do not want them to be recorded in individual accounts, you can use the Cost center (CC3).  See also the Clients/Suppliers register.

Import Income & Expenses transactions in CSV format

This "Transactions.simple" file format is used to import transaction data from an account statement or bank statement, with amounts entered as positive or negative values.

Use with Import into accounting

You can import the file by using:

  • Actions menu > Import into accounting
  • Import into the Transactions table
  • The file type to use is "Income & Expenses transactions".

Options

  • Import using clipboard data uses the contents of the clipboard instead of a file.
  • Autocomplete values: Some transaction fields are completed automatically (see "Importing transactions for multi-currency Double-entry accounting").
    Once the import is complete, the contra account must be entered manually.
  • Unicode (UTF-8): The file content is encoded in Unicode UTF-8, which supports any character set.

File format "transactions.simple" (Income & Expenses)

  • Tab-separated values (TSV).
    • Column headers and data must use the tab character as the separator "\t".
    • Each line (after a "\n") is a new record.
  • Column headers
    • The first line of the file contains the column headers.
    • They specify the names of the columns.
    • Column names are case-sensitive.
  • The transaction data lines follow the header.
  • Transaction data in column format
    • Tab-separated values following the headers.
    • Date columns should use the format "yyyy-mm-dd".
    • Amounts should use the standard JavaScript decimal number format:
      • The decimal separator is a point ".".
      • No thousands separators.
      • Numeric characters only, for example "12345678.90".
      • Negative numbers use a minus sign "-" before the number (e.g. "-100.00").

Columns in "transactions.simple" 

  • Required columns
    • Date
      The date of the transaction.
      The date should use the format "yyyy-mm-dd" (e.g. "2024-12-31").
    • Description
      A brief description of the transaction.
    • Income 
      The income amount. 
      For double-entry accounting, this is the debit amount; if negative, it is treated as a credit amount. 
      The amount should use a simple numeric format, with the point "." as the decimal separator.
  • Optional predefined columns:
    When present, the import function uses their contents.
    • Expenses
      The expense amount.
      For double-entry accounting, this is the credit amount.
      The expense can also be specified as a negative number in the "Income" column.
    • DocInvoice
      The invoice number.
    • ContraAccount
      The account number (debit/credit) or category.
      Enter square brackets [] to keep the field empty.
    • Account
      The transaction account when the file contains transactions for multiple accounts.
      Enter square brackets [] to keep the field empty.
    • VatCode
      The VAT code to use.
      The VatCode should be defined in the VatCodes table.
      Precede it with the minus sign "-" if the transaction is a correction of an existing transaction.
    • IsDetail
      For composed transactions, an "S" identifies a counterpart transaction and a "D" identifies a detail transaction.

Transform a bank statement file 

Banks provide CSV or Excel files containing transactions. 
These files can be transformed in different ways:

Information for an AI assistant transforming bank files

When converting data from a bank statement to the "transactions.simple" file format, it is important to analyze the bank statement carefully.

A bank statement file contains a series of transactions corresponding to the income and expenses recorded by the bank. 
The structure of a bank statement CSV file usually consists of different parts:

  • Optional information about the account and account holder.
    • Unstructured data at the beginning of the file.
  • The column headers.
    • A line containing the column names. 
      For example: "Date,Description,Income,Expense"
    • Column names are usually in the user's language and not in English.
    • Column names are separated by a character, usually a comma "," or a semicolon ";".
    • Column names often use similar terminology but are usually in a language specific to the customer. For example:
      • German: "Datum,Buchungstext,Einnahmen,Ausgaben"
  • The transaction movements.
    • Multiple lines, each containing a single movement.
    • Dates may use a specific format.
    • Numbers may use a specific localized format.
    • For example:
      • "31.12.2024,"Payment to Albert",,"1'344,22",
      • "31.12.2024,"Income from Albert","344,22",
  • Other optional information.
    • Unstructured data at the end of the file. 

Banks use different names for columns containing income and expense amounts. 

  • Double-entry column naming convention:
    Debit and Credit usually refer to the bank's point of view: "We have debited you" and "We have credited you".
    • A debit for the customer is an expense (credit amount).
    • A credit for the customer is income (debit amount). 

If necessary, the AI assistant should ask the user for information about:

  • The thousands and decimal separators for amounts. 
    For example: thousands separator "'", decimal separator ".".
  • The date separator or the date format used.
    For example: dd.mm.yyyy.
  • The meaning of a particular column name.