> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.tabs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.tabs.com/_mcp/server.

# Invoice Timing

The `invoiceDateStrategy` field controls when the invoice is issued relative to the billing period.

## Invoice date strategies

#### First of period

`FIRST_OF_PERIOD` — Invoice generated on the **first day** of the billing period. Use for billing in advance.

#### Last of period

`LAST_OF_PERIOD` — Invoice generated on the **last day** of the billing period.

#### Arrears

`ARREARS` — Invoice generated on the **first day after** the billing period ends.

#### Advanced due start

`ADVANCED_DUE_START` — Invoice generated before the billing period starts, dated so the payment due date lands on the **first day** of the period: invoice date = period start − payment terms. Use when payment must clear before service begins.

## January billing period — billed monthly

| Strategy           | Invoice issued           |
| ------------------ | ------------------------ |
| First of period    | Jan 1                    |
| Last of period     | Jan 31                   |
| Arrears            | Feb 1                    |
| Advanced due start | Dec 17 (Jan 1 − 15 days) |

## When to use each

#### Subscription / flat fee, billed in advance

`FIRST_OF_PERIOD`

#### Subscription / flat fee, end of month

`LAST_OF_PERIOD`

#### Usage-based billing

`ARREARS` or `LAST_OF_PERIOD`

#### Milestone / delivery-based

`ARREARS`

#### Payment required before service starts

`ADVANCED_DUE_START`

**Usage billing note:** Unit and tiered products should almost always use `ARREARS` or `LAST_OF_PERIOD`. Using `FIRST_OF_PERIOD` on a usage-based product will invoice before any events have been reported.

**Invoice date strategy** Required: Controls when the invoice is generated relative to the billing period. Must be one of `FIRST_OF_PERIOD`, `LAST_OF_PERIOD`, `ARREARS`, or `ADVANCED_DUE_START`.