> 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.

# Invoices & Integrations

Invoices are itemized requests for payment generated from billing terms. Tabs creates draft invoices on schedule, calculates line items and tax, and syncs sent invoices to your ERP and customer.

## How invoices are generated

When a billing term's invoice date arrives, Tabs:

1. Calculates line item quantities and amounts based on the billing term's pricing configuration
2. Pulls in usage events for usage-based terms (aggregated over the service period)
3. Applies discounts and tax
4. Creates a draft invoice ready for review

You can review, edit, and send invoices from the Tabs app, or automate sending via the [Invoices API](api:POST/v3/customers/\{id}/invoices/\{invoiceId}/actions).

## Draft vs sent

Every invoice starts as a **Draft**. Draft invoices:

* Do not sync to your ERP
* Are not emailed to the customer
* Can be edited freely — line items, dates, memos, and amounts

When you **send** an invoice, Tabs:

* Emails it to the customer's billing contact (if configured)
* Syncs it to your connected ERP
* Marks it as sent — Tabs remains the source of truth for invoice delivery and numbering

Tabs is the source of truth for invoices. Changes made directly in your ERP do not sync back to Tabs.

### Resetting a sent invoice

If you need to edit a sent invoice, reset it back to draft. This removes the corresponding record from your ERP. After making changes, re-send the invoice and Tabs recreates it in your ERP.

If you terminate a billing term mid-cycle and the affected invoice was already finalized, you must reset and resend it to reflect the updated service period. See [Amendments & lifecycle](/contract-amendments) for termination workflows.

## Service periods on invoices

Invoices display either a **service period** (date range) or a **single date**, depending on the billing term's cadence:

| Configuration                              | Invoice display                                                     |
| ------------------------------------------ | ------------------------------------------------------------------- |
| Cadence unit set (e.g. `MONTH`, `QUARTER`) | Service period — start date to end date (e.g. `12/19/25 – 4/15/26`) |
| Cadence unit = `NONE`                      | Single date — invoice date only (e.g. `Period Dec 19, 2025`)        |

The service period comes from the billing term's cadence, not from the recurring flag alone — a non-recurring charge with a cadence unit still displays a date range. Only a cadence of `NONE` produces a single date.

Changes to recurring settings only affect future invoices — not already generated PDFs.

## Usage-based billing

For usage-priced billing terms, Tabs calculates invoice amounts from **usage events** — individual records of consumption tied to an event type.

```
Price × Quantity = Amount
```

* **Price** comes from the billing term (defined in the contract)
* **Quantity** is the sum of usage events for the service period

Usage events can enter Tabs via CSV upload, the Usage Events API, or manual entry on an invoice. Event types must be mapped to a customer's product before events count toward billing.

Usage events no longer appear on invoices instantly. Tabs recalculates invoices hourly at the top of each hour. Do not build flows that post an event and immediately expect it on the invoice — use the Events page or [GET /v3/events](api:GET/v3/events) to verify ingestion instead.

For implementation details, see [Create usage-based billing](/bill-customers/usage-based) and [Usage-based billing quickstart](/usage-based-quickstart).

## Seat-based billing

Seat-based billing automates mid-cycle seat changes with configurable proration and true-up timing:

* **True-up billing** — charge for seats added beyond the original commitment
* **Proration** — by day, by month, by year, or none
* **True-up timing** — immediate, or co-termed with the renewal date

Tabs automatically generates true-up charges, updates future invoices, and adjusts revenue schedules when seat counts change — via the UI, API, or contract-based setup.

## Tax

Tabs calculates sales tax automatically on eligible invoices through connected tax providers:

| Provider | Best for                       |
| -------- | ------------------------------ |
| Anrok    | SaaS and usage-based billing   |
| Avalara  | Broad industry coverage        |
| Sphere   | Global sales tax, VAT, and GST |

When an invoice is sent, Tabs requests a tax calculation from your configured provider and adds tax line items. For ERP sync, tax amounts map to a designated **sales tax integration item** in your accounting system.

For setup instructions, see [Set up tax](/tax).

## ERP invoice sync

When an invoice is sent, Tabs syncs it to your ERP automatically:

| Tabs field                    | ERP field                                           |
| ----------------------------- | --------------------------------------------------- |
| Customer                      | Customer                                            |
| Primary billing contact email | Customer email                                      |
| Billing address               | Customer address                                    |
| Invoice issue date            | Invoice / transaction date                          |
| Due date                      | Due date                                            |
| Invoice number                | Invoice / transaction ID                            |
| Line items                    | Products / items with quantity, rate, and tax codes |

Draft invoices never sync. Only sent invoices push to your ERP.

## Related resources

* [Billing terms & schedules](/billing-terms) — how charges are configured before invoices generate
* [Generate invoices](/bill-customers/flat-rate) — create and send invoices via the API
* [List invoices](api:GET/v3/invoices) — API reference
* [Tabs data model](/data-model) — full billing lifecycle