Accounting software imports
A member moving their books into UPC Accounting uploads the files their previous program exports. The import wizard detects the layout, reads it, has the member map every account, contact, tax code and location to the UPC books, runs a dry run, and posts the entries as one batch that can be undone. This page lists the layouts it reads. Our own CSV and Excel layouts are on UPC templates.
How a file is read
Section titled “How a file is read”| Rule | Detail |
|---|---|
| Size | Up to 25 MB per upload. One import posts at most 5,000 entries and 25,000 lines: split a larger file by period. |
| Containers | CSV (comma, semicolon, tab or pipe, detected from the first lines), Excel .xlsx / .xls (first sheet unless the member picks one), IIF, XML, JSON |
| Recognition | By the header row, plus the report title above it for QuickBooks and Xero reports. The member can pick the format instead. |
| Rows skipped | Title rows, totals (Total…, TOTAL, Grand Total), subtotals, section headings, “Beginning / Opening / Closing balance” rows, report footers (Accrual Basis …, timestamps) |
| Account cells | 1000 Checking, 1000 - Checking and Sales (200) are split into a code and a name; Parent:Child gives the parent |
| Currency | When the file states its books’ currency, it must be the UPC books’ currency. Foreign-currency lines keep their currency, amount and rate (book units per one foreign unit). |
| Upload kept | The uploaded file is deleted when the import posts, when it is cancelled, and at the latest 24 hours after upload |
What is imported
Section titled “What is imported”| From the file | Becomes |
|---|---|
| Journal entries (from a journal, general ledger, transactions export or audit file) | Posted entries, each marked as imported, in one undoable batch |
| A trial balance | One opening entry (see Opening balances) |
| Accounts and contacts | Mapped to the books’ own accounts and contacts, or created during mapping |
| Tax codes | Used only to close an entry whose tax sits beside its net amount (as Sage and Zoho export it): one tax line per code posts to the mapped account |
| Classes | Kept on each line (up to 60 characters; longer ones are cut with a note) |
| Locations | Mapped to the business’s locations; an unmapped location is dropped from its lines with a note |
| Open invoices and bills, products and services | Listed, not imported. Receivable and payable balances belong in the trial balance. |
An entry that does not balance after mapping (debits differ from credits, or fewer than two lines) blocks the import unless the member chooses to leave out the entries that cannot post.
How entries are recognized again
Section titled “How entries are recognized again”Re-importing is safe: an entry already in the books is skipped. A numbered entry is identified by its program, journal, transaction type, number and date; an unnumbered one by its date and the net amount on each account (two identical unnumbered entries in one file are both kept). Importing the same file again, an overlapping one, or the Journal report after the General Ledger posts nothing twice.
For exporters: keep entry numbers, journal codes and dates stable between exports of the same entry.
QuickBooks Online
Section titled “QuickBooks Online”Excel or CSV report and list exports.
| Export | Columns read | Becomes |
|---|---|---|
| Account List | Account, Type, Detail Type, Description, Balance, Account # | Accounts (class from Type) |
| Customer Contact List | Customer, Phone Numbers, Email, Full Name, Billing Address, Open Balance (or the Customers page export: Company, Street Address, City, State, Zip, Country…) | Customers |
| Vendor Contact List | Vendor, Phone Numbers, Email, Full Name, Address, Account # | Suppliers |
| Products and Services | Product/Service, Type, Description, Price, Cost, Qty On Hand, Income / Expense / Inventory Asset Account, SKU | Listed, not imported |
| Journal (report) | Date, Transaction Type, Num, Name, Memo/Description, Account, Debit, Credit, Class, Location | Entries: a transaction’s date, type and number carry down to its following lines; the subtotal row closes it |
| Journal entry import layout | Journal No, Journal Date, Account Name, Debits, Credits, Description, Name, Location, Class, Currency Code, Exchange Rate | Entries grouped by Journal No; foreign rows in their currency at the rate |
| General Ledger | Date, Transaction Type, Num, Name, Memo/Description, Split, Amount (or Debit / Credit), Balance, under account headings | Entries regrouped by date + type + number (else name) |
| Trial Balance | (unnamed account column), Debit, Credit; an “As of …” title | Opening balances |
| Open Invoices | Date, Transaction Type, Num, Terms, Due Date, Amount, Open Balance, under customer headings | Listed, not imported |
| Unpaid Bills | Date, Transaction Type, Num, Due Date, Past Due, Amount, Open Balance, under vendor headings | Listed, not imported |
Journal No,Journal Date,Account Name,Debits,Credits,Description,Name,Location,ClassJE-1042,09/03/2026,Supplies,45.67,,Invoice 1042,Kibble Wholesale,Downtown,GroomingJE-1042,09/03/2026,Chequing,,45.67,Invoice 1042,Kibble Wholesale,Downtown,GroomingQuickBooks Desktop (IIF)
Section titled “QuickBooks Desktop (IIF)”Tab-separated; each !TYPE row names the columns of the TYPE rows that follow. Usually Windows-1252.
| Record | Fields read | Becomes |
|---|---|---|
ACCNT | NAME, ACCNTTYPE (BANK, AR, OCASSET, FIXASSET, OASSET, AP, CCARD, OCLIAB, LTLIAB, EQUITY, INC, COGS, EXP, EXINC, EXEXP), DESC, ACCNUM, OBAMOUNT, HIDDEN | Accounts |
CUST / VEND / EMP / OTHERNAME | NAME, COMPANYNAME, FIRSTNAME, LASTNAME, EMAIL, PHONE1, BADDR1-5 / ADDR1-5, VEND TAXID, NOTE, HIDDEN | Contacts. EMP SSNO is never read. |
INVITEM | NAME, INVITEMTYPE, DESC, ACCNT, ASSETACCNT, COGSACCNT, PRICE, COST, QNTY | Listed, not imported |
TRNS, SPL, ENDTRNS | TRNSTYPE, DATE (MM/DD/YYYY unless the values show otherwise), ACCNT, NAME, CLASS, AMOUNT (positive debit, negative credit), DOCNUM, MEMO | Entries |
Budgets and time records are not read. QuickBooks Desktop’s Excel reports have no layout of their own; the QuickBooks Online report layouts may read them, but this is untested.
!TRNS TRNSID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO!SPL SPLID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO!ENDTRNSTRNS GENERAL JOURNAL 09/03/2026 Supplies Kibble Wholesale Grooming 45.67 1042 Invoice 1042SPL GENERAL JOURNAL 09/03/2026 Chequing Kibble Wholesale Grooming -45.67 1042 Invoice 1042ENDTRNS| Export | Columns read | Becomes |
|---|---|---|
| Chart of accounts | *Code, *Name, *Type, *Tax Code, Description, Dashboard, Expense Claims, Enable Payments, Balance | Accounts |
| Contacts | ContactName, AccountNumber, EmailAddress, FirstName, LastName, PO address, PhoneNumber, TaxNumber, LegalName | Contacts (kind unspecified: one export holds customers and suppliers) |
| Account Transactions | Date, Source, Description, Reference, Debit, Credit, Running Balance, Gross, GST / VAT / Tax, under “Name (code)” account headings | Entries regrouped by date + source + reference |
| General Ledger Detail | The same columns, with a “General Ledger Detail” title | Entries |
| Trial Balance | Account (“Sales (200)”), Debit, Credit, YTD Debit, YTD Credit, under Revenue / Expenses / Assets / Liabilities / Equity sections; “As at …” | Opening balances (class from the section) |
| Manual journal import | *Narration, *Date, Description, *AccountCode, *TaxRate, *Amount (positive debit), TrackingName1/2, TrackingOption1/2 | Entries grouped by narration + date; tracking 1 becomes the class, tracking 2 the location |
*Narration,*Date,Description,*AccountCode,*TaxRate,*Amount,TrackingName1,TrackingOption1,TrackingName2,TrackingOption2Invoice 1042,03/09/2026,Dog treats,429,Tax Exempt,45.67,Class,Grooming,Location,DowntownInvoice 1042,03/09/2026,Paid from operating,090,Tax Exempt,-45.67,Class,Grooming,Location,Downtown| Layout | Columns read | Notes |
|---|---|---|
| Sage 50 Accounts (UK) audit-trail transactions | Type, Account Reference, Nominal A/C Ref, Department Code, Date, Reference, Details, Net Amount, Tax Code, Tax Amount, Exchange Rate, Extra Reference, Project Refn | JD / JC rows grouped by reference + date; other types (SI, PI, BP…) are reported, not posted |
| Sage 50 (US, formerly Peachtree) General Journal | Date, Reference, Number of Distributions, G/L Account, Description, Amount (positive debit), Job ID | Grouped by reference + date |
| Sage Accounting (cloud) journal | Date, Reference, Ledger Account, Details, Debit, Credit, Tax Rate | Grouped by reference + date |
| Sage 50 Canadian Edition journal / GL | Date, JE #, Account Number (“5200 Rent”), Comment, Source, Debits, Credits | Grouped by JE # |
| Nominal / chart list | Nominal Code (or Account Number, Ledger Account Code), Name, Report Category / Type, Balance | Accounts |
| Contacts | Account Reference, Name, Contact Name, Telephone, Email, address lines, Town, County, Post Code, Country Code, VAT Number | Contacts |
Wave, FreshBooks, Zoho Books
Section titled “Wave, FreshBooks, Zoho Books”| Export | Columns read | Becomes |
|---|---|---|
| Wave accounting transactions | Transaction ID, Transaction Date, Account Name, Transaction Description, Transaction Line Description, Debit / Credit Amount (two-column) or Amount (one column), Customer, Vendor, Invoice / Bill Number, Sales Tax Amount / Name, Account Group / Type | Entries by Transaction ID |
| Wave customers / vendors | Customer Name or Vendor Name, Email, Contact First / Last Name, Phone, Account Number, Currency, address | Contacts |
| FreshBooks General Ledger | Date, Description, Debit, Credit, Balance under account headings (“General Ledger” title) | Entries regrouped by date + description |
| FreshBooks journal entries | Journal Entry #, Date, Account Number, Account Name, Description, Debit, Credit | Entries |
| FreshBooks chart of accounts | Account Number, Account Name, Account Type, Sub Type, Description | Accounts |
| FreshBooks clients | Organization, First Name, Last Name, Email, Phone, Street, City, Province/State, Country, Postal Code, Currency | Customers |
| FreshBooks invoices | Client Name, Invoice #, Date Issued, Due Date, Invoice Status, Total, Outstanding, Currency | Listed, not imported |
| Zoho Books manual journals (CSV or XLS) | Journal Date, Journal Number (+ prefix / suffix), Reference Number, Notes, Currency, Account, Account Code, Description, Contact Name, Debit, Credit, Project Name, Tax Name / Amount | Entries by number |
| Zoho Books chart of accounts | Account Name, Account Code, Description, Account Type, Currency, Parent Account, Status | Accounts |
| Zoho Books contacts | Display Name, Company Name, First / Last Name, EmailID, Phone, Contact Type, Currency Code, Billing address | Contacts (customer or supplier from Contact Type) |
| Zoho Books invoices / bills | Invoice / Bill Date, Number, Status, Customer / Vendor Name, Due Date, Currency Code, Total, Balance | Listed, not imported |
Any other journal layout
Section titled “Any other journal layout”A journal export no layout above explains is read through a column mapping the member builds in the wizard and can save for the next file. It names the header of each column:
| Field | Needed |
|---|---|
| Date | Yes |
| Account code or account name | Yes (either) |
| Debit and Credit, or one signed Amount | Yes |
| Entry number, line memo, entry memo, reference, customer or supplier, class, location, tax code, tax amount, currency, exchange rate | No |
Rows form an entry when they share an entry number, from a dated row to the next one, or until debits equal credits. A signed amount is a debit when positive, unless the member marks positive amounts as credits.
Statutory audit files
Section titled “Statutory audit files”France: FEC
Section titled “France: FEC”Livre des procédures fiscales art. A47 A-1. The 18 columns in this order: JournalCode, JournalLib,
EcritureNum, EcritureDate, CompteNum, CompteLib, CompAuxNum, CompAuxLib, PieceRef, PieceDate,
EcritureLib, Debit, Credit, EcritureLet, DateLet, ValidDate, Montantdevise, Idevise. Tab or |
separator, yyyyMMdd dates (dd/MM/yyyy tolerated), decimal comma. The Montant + Sens variant (D / C or
+1 / -1) is read too. A file named {SIREN}FEC{date}.txt is recognized a little more surely.
| Read as | From |
|---|---|
| Entry number, date, document date, validation date | EcritureNum (grouped with JournalCode), EcritureDate, PieceDate, ValidDate |
| Journal, reference, memo | JournalCode / JournalLib, PieceRef, EcritureLib |
| Line account, debit, credit | CompteNum / CompteLib, Debit, Credit |
| Contact | CompAuxNum / CompAuxLib: 401… supplier, 411… customer, 421… employee |
| Lettering | EcritureLet / DateLet |
| Foreign amount | Idevise / Montantdevise (unsigned in the file, signed by the side) |
| Account class | From the Plan Comptable Général: 1 equity, 16-17 liabilities, 2, 3 and 5 assets, 40 / 42 / 43 liabilities, 41 assets, 6 expenses, 7 income; 44-47 unknown (the member maps them) |
JournalCode|JournalLib|EcritureNum|EcritureDate|CompteNum|CompteLib|CompAuxNum|CompAuxLib|PieceRef|PieceDate|EcritureLib|Debit|Credit|EcritureLet|DateLet|ValidDate|Montantdevise|IdeviseAC|Achats|AC000042|20260903|60700000|Achats de marchandises|||F1042|20260903|Kibble Wholesale facture 1042|38,06|0,00|||20260903||AC|Achats|AC000042|20260903|44566000|TVA deductible|||F1042|20260903|Kibble Wholesale facture 1042|7,61|0,00|||20260903||AC|Achats|AC000042|20260903|40100000|Fournisseurs|KIBBLE|Kibble Wholesale|F1042|20260903|Kibble Wholesale facture 1042|0,00|45,67|||20260903||Germany: DATEV
Section titled “Germany: DATEV”DATEV format, EXTF version 700. Line 1 is the header (consultant and client numbers, fiscal-year start, G/L
account length, period, description, currency, SKR03 / SKR04 chart); line 2 holds the column names; data starts on
line 3. ; separator, quoted text, decimal comma, usually Windows-1252.
| Category | Becomes | Columns read |
|---|---|---|
| 21 Buchungsstapel (format version 13) | Entries | Umsatz, Soll/Haben-Kennzeichen, WKZ Umsatz, Kurs, Basis-Umsatz, WKZ Basis-Umsatz, Konto, Gegenkonto, BU-Schlüssel, Belegdatum, Belegfeld 1, Buchungstext, KOST1, KOST2 |
| 20 Sachkontenbeschriftungen | Accounts | Konto, Kontenbeschriftung, Kontenbeschriftung lang |
| 16 Debitoren/Kreditoren | Contacts (1-6… customers, 7-9… suppliers) | Konto, names (company, natural person, other, short), EU-Land + EU-UStID, Straße, Postleitzahl, Ort, Land, Telefon, E-Mail |
- A Buchungsstapel row posts Umsatz between Konto and Gegenkonto:
Sdebits Konto and credits Gegenkonto,Hthe reverse. The BU-Schlüssel (tax key) goes to the Gegenkonto line. KOST1 becomes the class, KOST2 the location. - Belegdatum
TTMMtakes the year that puts it inside the header’s period (fiscal years across New Year work);TTMMJJJJis read too. - In a foreign currency (WKZ Umsatz differs from the books’ currency, with a Basis-Umsatz), Basis-Umsatz is the booked amount, Umsatz the foreign amount, and Kurs (foreign units per book unit) is inverted to book units per foreign unit.
- Consecutive rows with the same Belegfeld 1 and date form one entry (a split booking). An account one digit longer than the G/L length is a personal account and names the line’s contact.
- Automatic accounts (Automatikkonten such as 8400) carry gross amounts whose VAT DATEV splits itself; the import keeps the gross on that account.
- Other categories are not read.
OECD SAF-T 2.00
Section titled “OECD SAF-T 2.00”urn:OECD:StandardAuditFile-Taxation/2.00, and national files of the same shape (Norway’s SAF-T Financial reads
the same way).
| Read as | From |
|---|---|
| Company, currency, period | Header/Company/Name, DefaultCurrencyCode, SelectionCriteria (SelectionStartDate / SelectionEndDate, or PeriodStart / PeriodStartYear … PeriodEnd / PeriodEndYear) |
| Accounts | MasterFiles/GeneralLedgerAccounts/Account: AccountID, AccountDescription, AccountType, StandardAccountID, GroupingCode |
| Opening balances (as of the period start) | OpeningDebitBalance / OpeningCreditBalance |
| Contacts | Customers/Customer (CustomerID), Suppliers/Supplier (SupplierID): Name, Address, Telephone, Email, TaxRegistrationNumber; flat or under CompanyStructure |
| Entries | GeneralLedgerEntries/Journal (JournalID, Description) / Transaction: TransactionID, TransactionDate (else GLPostingDate), TransactionType, Description, the first SourceDocumentID |
| Lines | Line: AccountID, DebitAmount / CreditAmount (an Amount child with CurrencyCode / CurrencyAmount / ExchangeRate, or a plain value as in Portugal’s file), Description, CustomerID / SupplierID, Analysis (typed CLASS / LOCATION, else by position), TaxInformation TaxCode / TaxAmount |
NumberOfEntries, TotalDebit and TotalCredit are checked. TaxTable and SourceDocuments are not read.
Poland: JPK_KR
Section titled “Poland: JPK_KR”JPK_KR (1), schema 1-0 (http://jpk.mf.gov.pl/wzor/2016/03/09/03091/).
| Read as | From |
|---|---|
| Company, currency, period | Podmiot1 PelnaNazwa, Naglowek DomyslnyKodWaluty, DataOd / DataDo |
| Accounts | ZOiS: KodKonta, OpisKonta, TypKonta, KodZespolu (class: 0 / 1 / 3 / 6 assets, 4 / 5 costs, 8 equity; 2, 7 and 9 unknown), OpisZespolu, OpisKategorii |
| Opening balances | ZOiS BilansOtwarciaWinien / BilansOtwarciaMa |
| Entries | Dziennik: NrZapisuDziennika, DataKsiegowania (else DataOperacji), DataDowodu, NrDowoduKsiegowego, RodzajDowodu, OpisDziennika, OpisOperacji |
| Lines | KontoZapis by NrZapisu: KodKontaWinien / KwotaWinien (debit), KodKontaMa / KwotaMa (credit), the descriptions, KodWaluty… / Kwota…Waluta |
DziennikCtrl and Ctrl (row counts and sums) are checked. JPK_KR_PD (the 2025 structure) is refused with a
clear message: it is not read.
Opening balances from a trial balance
Section titled “Opening balances from a trial balance”A trial balance (QuickBooks Online or Xero Trial Balance, SAF-T opening balances, JPK_KR BilansOtwarcia…, or the
TrialBalance template) becomes one opening entry:
- dated the opening-balances date the member sets, or the file’s own “as of” date;
- at most 500 lines; any difference between debits and credits goes to opening balance equity, with a note;
- once per date: the same trial balance again is skipped, and a different one for a date that already has an imported opening entry is refused until that import is undone.
Payroll provider registers
Section titled “Payroll provider registers”For reference, these layouts are recognized (so a misplaced upload gets a clear message):
| Provider | Recognized by |
|---|---|
| ADP | Company Code, File Number / File #, Associate ID, Reg / O/T Earnings |
| Wagepoint | Employer CPP, Employer EI, Pay Run |
| Gusto | Check Date, Employer Taxes, Employee Deductions, Employee Taxes |
| QuickBooks Payroll | Payroll Item, Wage Base |
| Payworks | Employee Number, ER CPP/QPP, ER EHT, ER WCB, “Payworks” in the title |
| UPC payroll template | EmployeeId, EmployeeName, PeriodStart, PeriodEnd, PayDate, Currency, ItemKind, ItemCode, ItemName, Hours, Rate, Amount, YtdAmount |
Not read
Section titled “Not read”| File | Status |
|---|---|
| Bank statements and open-banking JSON | Refused here; they import into a bank account (Bank statements) |
| Payroll registers | Refused; see above |
| QuickBooks Desktop Excel reports | No layout of their own (the QuickBooks Online report layouts may match; untested) |
| IIF budgets and time records | Not read |
| DATEV categories other than 21, 20 and 16 | Not read |
SAF-T TaxTable and SourceDocuments | Not read |
| JPK_KR_PD | Refused |
| Excel 5.0 / 95 (BIFF5) and password-protected workbooks | Refused |
| Fixed-asset registers and employee lists | No template yet |
What the dry run reports
Section titled “What the dry run reports”Before anything posts, the wizard lists problems (which stop the import) and notes. The ones a file’s content causes, with the labels the member sees:
| Label | Kind | Cause in the file |
|---|---|---|
| An entry doesn’t balance | Problem | Debits and credits differ after mapping, or an entry has fewer than two lines |
| The file is in another currency | Problem | The file’s books are kept in another currency |
| Too much for one import | Problem | More than 5,000 entries or 25,000 lines |
| A date couldn’t be read | Problem | A date in no form the reader knows |
| An amount’s side couldn’t be told | Problem | An amount with no debit or credit side |
| Already in the books | Note | Entries imported before; skipped |
| Dated in the future | Note | Entries after today |
| The date order was assumed | Note | Day-first against month-first could not be settled from the values |
| A row was skipped | Note | A row the layout could not read |
| Open invoices and bills aren’t imported | Note | Open documents in the file |
| Products and services aren’t imported | Note | Items in the file |
| Long class names were shortened | Note | A class over 60 characters |
| Foreign-currency lines without their amount | Note | A line in another currency with no amount in that currency |