Skip to main content

CSV Imports for BillingOne

BillingOne accepts CSV uploads in two places: the Billing catalog (products and services) and Gorelo contract import (bulk draft service contracts). This guide documents both formats.


Catalog CSV

Where: BillingOne → CatalogImport CSV

Catalog CSV rows create PanelOne catalog items with source: csv. They are useful for SKUs you sell in BillingOne before mirroring them in Xero or QuickBooks.

Detecting headers vs. positional rows

The importer inspects the first line:

  • If the first line contains code, name, or item (case-insensitive), it is treated as a header row and skipped.
  • Otherwise, every line is parsed as headerless positional data (see below).

Column reference (with headers)

ColumnRequiredAliasesNotes
codeNosku, item codeUppercased on import
nameNo*item, productDisplay name
descriptionNodescLonger text
default_unit_priceNounit_price, priceCommas stripped; blank → null
default_unit_costNounit_cost, costCommas stripped; blank → null
Tax columnNoxero_tax_type, qbo_tax_code, taxUses connected provider's tax column

*If both code and name are blank, the row name falls back to CSV item.

Headerless positional format

When the first line is not a header, columns are read by position:

PositionField
1code
2name
3description
4default_unit_price
5default_unit_cost
6Tax code (xero_tax_type or qbo_tax_code depending on provider)

Example (headerless):

MWS-001,Managed Workstation,Per-device managed support,75.00,,
PLAT-FEE,Platform Fee,Monthly platform charge,500.00,,

Blank code behavior

If code is empty after parsing, BillingOne assigns an auto-generated code:

CSV-{8-char-uuid}

Example: CSV-A1B2C3D4. The code is uppercased. Assign a proper SKU by editing the row after import, or include a code column in your CSV.

After import

CSV rows do not automatically get revenue account (GL) mappings. Open each new row (or bulk-edit in the catalog editor) and set:

  • Default revenue account — required before Xero/QBO push if the line has no account from sync
  • Tax code — if not supplied in the CSV

Gorelo Contract CSV

Where:

  • BillingOne dashboardGorelo billing migrationImport from Gorelo CSV
  • Settings → Integrations → Invoice Settings (same import card when Gorelo is connected)

Requires permission billing.contracts.manage.

Gorelo's public API does not expose billing contracts — this CSV path is for exports you build from Gorelo agreement reports or manual transcription.

Column reference

ColumnRequiredDefaultAliases
client_nameYesclient, company, company_name, client name, company name
line_descriptionYesdescription, line description, service, item, service description
line_typeNofixed_recurringtype, line type
quantityNo1qty, count
unit_priceNo0price, unit price, rate, amount
billing_cadenceNomonthlycadence, billing cadence, frequency, billing frequency

Header matching is flexible — aliases are normalized (lowercase, punctuation → underscores).

Valid line_type values

If omitted or unrecognized, defaults to fixed_recurring:

  • fixed_recurring
  • metered
  • pax8_linked
  • time_materials
  • manual
  • labour_unlimited
  • labour_block
  • labour_per_hour

Valid billing_cadence values and aliases

ValueAccepted aliases
monthlymonth
quarterlyquarter, qtr
semiannualbiannual, 6month
annualannually, yearly, year
custom

Unrecognized cadence values default to monthly.

Currency and number parsing

  • $ and , are stripped from unit_price and quantity
  • Empty quantity1; empty unit_price0

Example

client_name,line_description,line_type,quantity,unit_price,billing_cadence
Acme Corp,Managed Workstation Support,fixed_recurring,25,75,monthly
Acme Corp,Server Monitoring,fixed_recurring,3,120,monthly
Beta LLC,Monthly Platform Fee,fixed_recurring,1,500,monthly

Download the in-app sample template (gorelo-contract-import-template.csv) from the import wizard for a ready-to-edit file.

Import wizard flow

  1. Upload CSV — paste or upload; fix parse errors shown per row
  2. Preview & match clients — rows grouped by client_name; PanelOne clients matched by exact then fuzzy name; override unmatched rows manually
  3. Create drafts — one draft service contract per matched client; open each draft to attach catalog items, review cadence, and publish

Gorelo import limitations

  • Creates draft contracts only — does not publish or generate invoices
  • Does not map Xero/QBO catalog items — attach catalog items in the contract editor after import
  • One cadence per contract — if a client has mixed cadences in the CSV, the wizard uses the most common value for the contract header
  • Client name matching only — map Gorelo companies to PanelOne clients first (Settings → Integrations → Client Mappings) for best results

Parity Backlog

FeatureStatus
Late feesImplemented — manual Apply late fee on overdue invoices; optional Auto-apply late fees (daily cron); fee line added to invoice totals; Xero sync set to drift when re-push needed
StatementsImplemented — /statements with print HTML, Download PDF (jspdf), and Email statement via SMTP2GO
Branded PDFImplemented — native Download PDF on invoices and statements (jspdf); org logo/accent from branding settings
Payment term presetsImplemented — Net 7/14/30/45/60 presets in invoice settings and client edit dialog
Credit note tax pickerImplemented — per-line tax and GL account on credit note editor
Quote / template taxImplemented — per-line tax override on quotes and contract templates
Chart of accounts adminImplemented — editable COA at /chart-of-accounts; manual accounts + edit synced rows
Mobile tax editingImplemented — tax picker modal on draft contract/invoice lines in billingone-mobile

Still not built / partial

FeatureNotes
Auto late-fee Xero pushLate fee updates invoice totals locally; already-pushed Xero invoices move to drift — staff must re-push manually
Statement email PDF attachmentEmail attaches HTML statement only; PDF is separate download in UI
Scheduled statement emailsManual email from /statements only; no monthly auto-send cron
COA push-back to Xero/QBOEdits and manual accounts are local cache; changes are not written back to the accounting platform API
Full native ledgerNo journal entries, bank rec, or standalone accounting without Xero/QBO

Next Steps

  • Xero Setup — Full accounting onboarding runbook
  • Settings — Integrations and invoice generation options