Track 2 Pay documentation homeTrack 2 Pay

Importing a spreadsheet

If you bill somewhere other than TherapyNotes, how to lay out your own spreadsheet so Track 2 Pay can read it.

Last updated: July 19, 2026

Not on TherapyNotes? Track 2 Pay can read a spreadsheet you build yourself, as long as the column headings match what it expects. This is the Generic importer.

You only have to get the layout right once. After that, exporting the same report each period and uploading it is a two-minute job.

The rules

  • The file must be XLSX. Not CSV, not PDF, not a Google Sheet link — download it as an Excel file first.
  • The first row is the column headings.
  • Each row after that is one session, appointment or charge.
  • Headings must match exactly, including capitalization.
  • Column order does not matter, and extra columns you do not need are ignored.

Required columns

Every row needs all five of these.

Column heading What goes in it
Description What the session was — “Psychotherapy, 60 min”
Provider Name The clinician’s name, spelled consistently
Provider Type Their category — “Psychologist”, “Licensed Professional Counselor”
Transacted At When the session happened, as a date and time
Type The kind of record — “Appointment”, “Missed Appointment”

Spell names consistently. “Dr. Maya Ellison” and “Maya Ellison” become two separate clinicians with two separate payouts. If your source system is inconsistent, clean it up in the spreadsheet before uploading, or use the Provider Unique ID column below.

Column heading What it does
Provider Unique ID A stable identifier for the clinician — a staff number, an NPI. Use this and name spelling stops mattering.
Transaction Unique ID A stable identifier for the session, from your source system.

If you leave these out, Track 2 Pay generates identifiers from the content of each row instead — for a session, from its date, type, description and clinician; for a clinician, from their name and type. That works, but supplying your own is more robust, because it survives someone editing a description.

Payment columns

Payments go in columns named payment[...], with the payment’s name inside the brackets. You can have as many as you need.

Column heading Becomes
payment[Client Payment] A payment line called “Client Payment”
payment[Insurance Payment] A payment line called “Insurance Payment”

Keeping the client portion and the insurance portion in separate columns is strongly recommended. It reflects how the money actually arrives and lets each part be paid out on its own timing — the same way the TherapyNotes importer works.

Custom fields

Anything else you want to carry along — and possibly write pay rules against — goes in a bracketed column too.

Column heading Becomes
tx.details[Service Code] A field called “Service Code” on the session
tx.details[Location] A field called “Location” on the session
pr.details[Department] A field called “Department” on the clinician

Use tx.details[...] for things about the session, pr.details[...] for things about the clinician.

These are not decoration. Anything you put in tx.details[...] can be matched by a pay rule, so if you pay a different rate for a particular service code or a particular site, put it in a custom field and you can write a rule for it. See payout conditions.

A worked example

A sheet with these headings:

Description | Provider Name | Provider Type | Transacted At | Type | payment[Insurance] | payment[Client] | tx.details[Service Code]

and a row like this:

Psychotherapy, 60 min | Maya Ellison | Psychologist | 2026-06-15 14:00 | Appointment | 120.00 | 30.00 | 90837

produces one session on June 15 for Maya Ellison, with two payment lines totalling $150, carrying a Service Code of 90837 that your pay rules can match on.

Uploading it

Go to Transactions, click Import Transactions, and in the Imported From dropdown choose Generic rather than Therapy Notes Billing.

Everything else works exactly as described in importing from TherapyNotes — including the timezone question, the progress bar, and the New-versus-Updated summary at the end.

Set your default. If Generic is what you always use, set Default Importer on your account settings page and the dropdown will start on the right option every time.

Getting it right the first time

Test with a small file. Take five or ten rows, upload them, and look at the result in Transactions. Check that the clinician names came through, that the dates are the days you expect, and that the payment amounts are on separate lines.

Once it looks right, upload the full period. Nothing is wasted — a small test import becomes part of the real data, and re-importing the full file will simply update those same rows rather than duplicating them.

Still stuck? Open the Help menu in Track 2 Pay and choose Support, or read how to get support.