> ## Documentation Index
> Fetch the complete documentation index at: https://docs.paypunch.io/llms.txt
> Use this file to discover all available pages before exploring further.

# IIF Format Reference

> The exact layout of PayPunch's QuickBooks IIF export — TIMEACT columns, value formats, the overtime split, and which entries are included.

This is the technical companion to the [IIF export walkthrough](/admin/iif-export). It documents
what's actually inside the `.iif` file PayPunch generates, so you know exactly what lands in
QuickBooks.

<Tip>
  **IIF is the PayPunch payoff.** Approved hours export straight to a QuickBooks
  Desktop `.IIF` file — no manual re-keying. This is what saves bookkeepers
  30–40% of payroll processing time. See the [IIF Export walkthrough](/admin/iif-export).
</Tip>

## File basics

* **Format:** plain-text, **tab-delimited** (IIF = Intuit Interchange Format).
* **Extension:** `.iif`, imported into **QuickBooks Desktop**.
* **Records:** time-tracking records only (`TIMEACT`).
* **Filename:** `timesheet_{company-slug}_{YYYYMMDD}_to_{YYYYMMDD}.iif` — e.g.
  `timesheet_builders-r-us-construction_20260609_to_20260615.iif`.

## Layout

The first line is a header that names the columns; every following line is one time record.

```text TIMEACT layout theme={null}
!TIMEACT	DATE	JOB	EMP	ITEM	PITEM	DURATION	NOTE
TIMEACT	06/09/2026	Builders R Us Construction	Smith, John	Hourly Wages	Regular Pay	40:00	Job: PROJ001
TIMEACT	06/09/2026	Builders R Us Construction	Smith, John	Hourly Wages	Overtime Pay	5:30	Job: PROJ001 (OT)
```

<Note>
  Columns are separated by **tabs**, not spaces. The spacing above is just for readability — in
  the real file each gap is a single tab character.
</Note>

## Column reference

| Column       | Meaning            | Format / source                                                          |
| ------------ | ------------------ | ------------------------------------------------------------------------ |
| **TIMEACT**  | Record type marker | Literal `TIMEACT` on every data row                                      |
| **DATE**     | Work date          | `MM/DD/YYYY`, taken from the entry's clock-in                            |
| **JOB**      | Customer / job     | The **client company name**                                              |
| **EMP**      | Employee           | `Last, First`                                                            |
| **ITEM**     | Service item       | The employee's QuickBooks payroll item, or `Hourly Wages` if none is set |
| **PITEM**    | Payroll item       | The employee's QuickBooks payroll item, or `Regular Pay` if none is set  |
| **DURATION** | Hours worked       | `HH:MM` (e.g. `40:00`, `5:30`)                                           |
| **NOTE**     | Free-text note     | Combined from the entry's job code, task code, and notes                 |

## The overtime split

Regular and overtime hours are written as **separate `TIMEACT` lines** for the same employee and
date:

* The **regular** line uses the employee's normal payroll item (`PITEM` = the item or `Regular Pay`).
* The **overtime** line uses an OT payroll item — `{payroll item} - OT`, or `Overtime Pay` when
  the employee has no QuickBooks item configured — and its note is suffixed with `(OT)`.

A line is only written when that bucket has hours: a shift with no overtime produces a single
regular line; a shift with no regular hours produces only the OT line.

## What gets included

PayPunch is deliberate about which entries make it into the file. An entry is exported only if it
is:

<Steps>
  <Step title="Approved">
    The time entry is **approved** (`approved = true`). Pending or rejected entries are skipped.
  </Step>

  <Step title="Clocked out">
    The entry has a **clock-out** time — open/in-progress shifts are excluded.
  </Step>

  <Step title="In the selected date range">
    The clock-in falls between the export's **start and end dates** (the date range can't exceed
    one year).
  </Step>

  <Step title="Not already exported (by default)">
    Entries already marked **exported** are skipped so hours aren't double-counted. Re-exporting a
    period that includes already-exported entries is an explicit opt-in.
  </Step>
</Steps>

## Field cleaning

Because the format is tab-delimited, PayPunch sanitizes every text field before writing it: tabs
become spaces, line breaks are removed, and surrounding whitespace is trimmed. This keeps a stray
character in a company name or note from shifting columns in QuickBooks.

## Related

* [IIF export (admin walkthrough)](/admin/iif-export) — how to generate and download the file.
* [Approving payroll](/admin/approving-payroll) — getting entries to the approved state that the
  export requires.
