Skip to content

Import Data

Import Data brings records into Structally from a spreadsheet instead of typing them one by one: your customer and vendor lists, a chart of accounts, items, invoices and bills that are still open in your old system, expenses, credits, a bank statement, job budgets, cost codes and cost types.

Every import works the same way:

  1. Download the template for what you are importing and fill it in.
  2. Upload the file. Structally checks every row and shows you a preview, a numbered batch such as IMP-2026-000001. Nothing is created yet.
  3. Import the rows that are ready. Rows with problems are skipped.
  4. If something went wrong, undo the import: drafts it created are discarded, expenses reversed and unused records deactivated.

Before You Begin

  • To upload, import, cancel or undo you need Edit access to Settings: Company Admins, and Custom users given Settings Edit. With Settings View you can download templates and see past imports only. See Roles and Permissions.
  • What your file refers to must already exist and be active in Structally, under the same name or code: accounts, payment terms, items, classes and locations, and for budgets the jobs, cost codes and cost types. Customers and vendors can be created by the import (see Step by Step).
  • Job Budgets, Cost Codes and Cost Types are offered only when Jobs & Costing is turned on for the company.

The Page

The page has three parts: Choose a Template, Upload a File and Recent Imports.

The Choose a Template section with thirteen template cards, each with Download Template
Figure 8-35 The thirteen templates offered in the sample company, which has Jobs & Costing turned on.
  1. One card per kind of record, here Bills.
  2. Download Template saves a CSV file with the right column headings and one example row, named after the kind, for example bills-template.csv.
  3. Bank Feed imports bank transactions into Banking.
  4. Job Budgets, Cost Codes and Cost Types appear only with Jobs & Costing.
The Upload a File card with Bills chosen, a file named ridgeline-bills.csv, the create missing customers and vendors option and Check and Preview, above the empty Recent Imports table
Figure 8-36 A bills file chosen for checking (not checked or imported in the sample company).
  1. What are you importing?: the kind of record in the file.
  2. CSV or Excel File: the file to check.
  3. Create missing customers and vendors, if applicable.: ticked by default.
  4. Check and Preview checks the file and opens the preview.
  5. Recent Imports: your last 50 batches. The sample company has none yet, so it shows No imports yet.

What You Can Import

Template Creates Grouped By Notes
Invoices Draft invoices invoice_ref Lines use an item, an income account, or both; quantity times rate must equal the amount when all are given.
Bills Draft bills bill_ref Lines can use any active account except Accounts Payable. No job coding.
Expenses Posted expenses expense_ref paid_from_account must be a bank or credit card account; the vendor may be left blank.
Customer Credits Draft customer credits credit_ref Lines use income accounts.
Vendor Credits Draft vendor credits credit_ref
Customers Customers One per row Code: letters, digits, hyphens and underscores only.
Vendors Vendors One per row
Chart of Accounts Accounts One per row Code: 1 to 10 letters or digits; parents may be earlier or later in the file; at most 5 levels.
Items Items One per row income_account must be an income account.
Bank Feed Bank transactions waiting in Banking One per row You choose the Bank Account; amounts are signed (minus for money out).
Job Budgets Draft budgets budget_ref The first budget of a job is its original budget; a later one is a revision and needs an approved original.
Cost Codes Cost codes One per row general: yes or no.
Cost Types Cost types One per row wip_group and sort_order as in the template.

Draft documents still have to be reviewed and posted in their own areas; imported expenses are posted straight away. Imported bank transactions appear in the bank feed for review (see Reviewing the Bank Feed).

The Template Columns

The first row of your file must contain exactly these column names, in this order. Columns starting with line_ describe one line of a document.

Template Columns
Invoices invoice_ref, customer, date, due_date, terms, customer_ref, memo, line_item, line_account, line_description, line_qty, line_rate, line_amount, line_class, line_location
Bills bill_ref, vendor, date, due_date, terms, vendor_ref, memo, line_account, line_description, line_amount, line_class, line_location
Expenses expense_ref, vendor, date, paid_from_account, reference, memo, line_account, line_description, line_amount, line_class, line_location
Customer Credits credit_ref, customer, date, customer_ref, memo, line_account, line_description, line_amount, line_class, line_location
Vendor Credits credit_ref, vendor, date, vendor_ref, memo, line_account, line_description, line_amount, line_class, line_location
Customers name, code, primary_contact, primary_phone, primary_email, secondary_contact, secondary_phone, secondary_email, billing_address, shipping_same_as_billing, shipping_address, terms, taxable, notes
Vendors name, code, primary_contact, primary_phone, primary_email, secondary_contact, secondary_phone, secondary_email, billing_address, terms, notes
Chart of Accounts code, name, role, balance_type, parent_code
Items sku, name, rate, income_account
Bank Feed date, description, amount, reference
Job Budgets budget_ref, job, effective_date, note, line_cost_code, line_cost_type, line_amount, line_hours, line_quantity, line_unit
Cost Codes code, name, general
Cost Types code, name, wip_group, sort_order

Rules for Every File

  • A CSV file saved as UTF-8, at most 1 MB, or an Excel workbook (.xlsx) of at most 5 MB, of which only the first worksheet is read.
  • At most 2,000 data rows below the heading row.
  • Dates as YYYY-MM-DD, for example 2026-10-15.
  • Amounts with at most two decimals; commas between thousands are allowed.
  • Yes-or-no columns accept yes, no, true, false, 1 or 0.
  • References to existing records ignore capital letters: customers and vendors are matched by name, accounts by code, items by SKU, terms by name, jobs by number, and classes and locations by code or name.
  • In the Chart of Accounts template, the role column takes the account role written as in the template's example row (revenue), and balance_type is debit or credit.
  • For documents, each row is one line. Rows with the same reference make one document. The document's own columns (customer, date, terms and so on) can be left blank on the second and later rows, but must not differ from the first.

Step by Step

Check a File

  1. Click Download Template on the card for what you are importing, and fill in the file. Keep the heading row as it is.
  2. In Upload a File, choose the kind in What are you importing?.
  3. Click Choose File under CSV or Excel File and pick your file.
  4. For documents, decide on Create missing customers and vendors, if applicable.: ticked, a customer or vendor name that is not found becomes a new customer or vendor when you import; cleared, such rows are problems.
  5. For Bank Feed, choose the Bank Account the transactions belong to. The field appears when Bank Feed is chosen.
  6. Click Check and Preview.
The Upload a File card with Bank Feed chosen and the Bank Account field set to 1010 Operating Checking
Figure 8-37 A bank feed file with its bank account chosen.
  1. Bank Feed chosen.
  2. Bank Account: a bank or credit card account.

If the file itself cannot be read (wrong format, wrong headings, too many rows), Structally says so on the same page and creates nothing. Otherwise it opens the batch's preview.

Review the Preview

The preview page is headed with the batch number and the status Preview, followed by the kind and the file name. It shows:

  • four totals: Rows in File, Ready, Problems and New Customers (the customers the import will create);
  • Check Your File: a table of every row with Row, Reference, Customer / Vendor, Date, Amount and Check. Check says Ready or Problem with the reason, for example "Vendor Apex Lumber not found" or "Date must be YYYY-MM-DD". Use Problems Only to list just the rows to fix, and All Rows to list everything again. As the page says, A problem on one line skips the whole document.
  • Ready to Import, with the import button and Cancel Import.

No Screenshot of a Batch

The sample company has no imports, and checking a file creates a batch, so the preview and results pages are described from the product rather than shown.

Import or Cancel

  • To import, click the button under Ready to Import. It names what will be created, for example Import 1 Draft Bill or Import 12 Customers. Only ready rows are imported; Problem groups will be skipped. The button is unavailable when nothing is ready.
  • To drop the batch instead, click Cancel Import. The batch is kept with the status Canceled and nothing is created.

To fix problems, correct your file and check it again; the new check is a new batch.

After the Import

The batch's page now shows Import Results, one row per document or record:

Column Shows
Reference The document reference, or "Row" and the row number for lists
Rows The file rows it came from
Result Created or Skipped (later Undone or Kept)
Created The number or code of the new record, linked to it
Current State The record's status today, for example Draft, Posted, Active
Note "Created draft", "Posted", "Created", "Skipped because the group has problems" or, for bank transactions, "Already present in Banking"

Results CSV (on the batch page and in Recent Imports) downloads the same information, named after the batch, for example IMP-2026-000001-results.csv. Its columns are group_ref, row_numbers, status, Created Number, note and problems.

Bank transactions that are already in Banking are skipped, not imported twice.

Undoing an Import

An imported batch (other than a bank feed) has an Undo Import section, also reached with Undo Import in Recent Imports. Before you confirm, it lists what will happen, for example "Will delete 3 draft invoices" or "Will deactivate 2 customers", and under Cannot undo, what will be kept and why.

Created Record On Undo
Draft invoice, bill, credit or budget Discarded
Document that is no longer a draft Kept, with a reason such as "Cannot undo posted"
Expense Reversed, dated today, with the memo "Undo" and the batch number; kept if it is matched in Banking or already reversed
Customer, vendor, account, item, cost code or cost type (including customers and vendors the import created) Deactivated if nothing refers to it; otherwise kept, for example "Referenced by INV-2026-000055"
  1. Open the batch and go to Undo Import.
  2. Type the batch number in Type the Batch Number to Confirm.
  3. Click Undo Import.

The batch's status becomes Undone and the page shows how many records were Deleted, Reversed and Deactivated, and what was Kept. Bank feed imports are not undone here; as the page says, Bank feed imports are undone in Banking.

Statuses

Batch Status Meaning
Preview Checked, nothing created yet.
Imported The ready rows were created.
Canceled Dropped without importing.
Undone Imported, then undone.

Batches are numbered IMP-, the year and a sequence, for example IMP-2026-000001.

Worked Example

Cedar Ridge Contracting receives a two-line invoice from Ridgeline Lumber Supply, RL-4471 dated October 15, 2026, and enters it in a bills template (illustrative):

bill_ref vendor date due_date terms vendor_ref memo line_account line_description line_amount line_class line_location
RL-4471 Ridgeline Lumber Supply 2026-10-15 Net 30 RL-4471 5040 Framing lumber 1840.00 Residential North
RL-4471 5040 Sheathing 620.00 Residential North

Both rows have the reference RL-4471, so they make one bill. The vendor, the terms Net 30, account 5040, the class Residential and the location North all exist in the sample company. The due date is blank, so Structally works it out from the terms: October 15, 2026 plus 30 days is November 14, 2026. The preview would show Rows in File 2, Ready 2, Problems 0, and the button Import 1 Draft Bill. Importing creates one draft bill for $2,460.00 (1,840.00 + 620.00), to be reviewed and posted under Vendors & Bills. Had the import been a mistake, Undo Import would discard the draft.

Common Mistakes and Troubleshooting

Message or Symptom Why It Happens What to Do
File must be a CSV or an Excel workbook (.xlsx) The file is another format, or a damaged workbook. Save it as CSV (UTF-8) or .xlsx.
File must be at most 1 MB / Workbook must be at most 5 MB The file is too large. Split it into several files.
File must be UTF-8 The CSV was saved in another character encoding. Save it as "CSV UTF-8".
Wrong header; missing columns: …; extra columns: … The heading row does not match the template. Copy the heading row from a fresh template.
Wrong header; columns must be in the template order The columns are all there but in another order. Put them back in the template order.
At most 2,000 data rows are allowed The file has more than 2,000 rows. Split it.
The file contains no data rows Only the heading row is filled. Add your rows.
Choose a bank account Bank Feed was chosen without a Bank Account. Choose the account.
"Vendor … not found" (or Customer) The name does not match an active vendor and the create option is off. Fix the name, add the vendor, or tick Create missing customers and vendors, if applicable.
"… differs within the document" A later row of a document has a different customer, date, terms or other header value. Leave those columns blank on later rows, or make them the same.
"Date must be YYYY-MM-DD" A date is in another format, for example 10/15/2026. Format dates as 2026-10-15.
"Account … must be an income account" An invoice or customer credit line, or an item, uses a non-income account. Use an income account.
"Duplicate reference within the file" Two bank feed rows have the same reference. Make each reference unique, or leave it blank.
"Jobs & Costing is not turned on for this company." A job budget, cost code or cost type file was checked while Jobs & Costing is off. Jobs & Costing must be turned on for the company first.
Type the batch number to confirm The confirmation does not match the batch number. Type it exactly, for example IMP-2026-000001.
Bank feed imports are undone in Banking Undo was tried on a bank feed batch. Deal with the transactions in the bank feed (see Reviewing the Bank Feed).