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

# Registration thresholds

## Understanding registration thresholds

A registration threshold is the point at which a seller must register to collect and remit indirect tax in a given jurisdiction. Historically, this obligation was based primarily on physical presence. However, following the 2018 South Dakota v. Wayfair Supreme Court decision in the US, jurisdictions can now require remote sellers to collect and remit indirect tax based on their economic activity — commonly referred to as "economic thresholds."

This concept applies globally: VAT and GST jurisdictions also set thresholds that determine when a business must register and begin collecting tax.

<Tip>
  Commenda tracks registration thresholds across US states, Canada, the UK, and the EU — including trade bloc rules like Union OSS, Non-Union OSS, and IOSS. See [global exposure tracking](/engine/indirect-tax/core-concepts/global-exposure) for details on multi-jurisdiction support and the v2 API.
</Tip>

### How jurisdictions define thresholds

Each jurisdiction sets its own rules for determining when you must register, including:

1. **Threshold amounts:** Jurisdictions establish different sales and/or transaction thresholds that trigger a registration obligation. For example, one jurisdiction may have a USD 100,000 sales threshold, while another sets a EUR 10,000 threshold.

2. **Threshold types**: Some jurisdictions consider only sales revenue, some consider only the number of transactions, and some consider both.

3. **Evaluation periods**: The period over which economic activity is measured varies. Common periods include the previous calendar year, the current or previous calendar year, or a rolling 12-month period.

## Threshold tracking

Commenda automatically tracks your progress toward registration thresholds in each jurisdiction based on the transactions you post to the `/transactions` endpoint.

You can use the registration threshold API endpoint to get a comprehensive overview of your threshold status across all jurisdictions, taking into account each jurisdiction's specific rules.

### Default response (US states)

By default, the `GET /nexus` endpoint returns US-state-level threshold data. The response contains a `states` array where each object represents your exposure in one US state.

```json theme={null}
{
  "data": {
    "corporation_id": "74df772f-9260-42cf-9c20-3b613b60fecd",
    "states": [
      {
        "state": "VT",
        "rule": {
          "sales_threshold": 100000,
          "transactions_threshold": 200,
          "threshold_type": "SALES_OR_TRANSACTIONS",
          "evaluation_period_type": "PRECEDING_12_MONTHS",
          "includable_sales_type": "GROSS"
        },
        "calculation": {
          "total_sales": 0,
          "total_transactions": 0,
          "gross_sales": 0,
          "gross_transactions": 0,
          "taxable_sales": 0,
          "taxable_transactions": 0,
          "retail_sales": 0,
          "retail_transactions": 0,
          "sales_exposure_percentage": 0,
          "transactions_exposure_percentage": 0,
          "includable_sales_type": "GROSS"
        },
        "is_nexus_breached": false
      }
    ]
  },
  "message": "Successfully fetched nexus."
}
```

<Note>
  The default response uses field names like `is_nexus_breached` and `states` for backward compatibility. These fields represent registration threshold status — `is_nexus_breached` indicates whether you have exceeded the registration threshold in a given jurisdiction.
</Note>

### Global response (`v2=true`)

Pass `v2=true` as a query parameter to get global jurisdiction-level threshold data. This covers US, Canada, UK, and EU jurisdictions, including support for multiple exposure rules per jurisdiction (for example, EU Union OSS, Non-Union OSS, and IOSS).

The v2 response uses a `jurisdictions` array instead of `states`, and includes additional fields such as `jurisdiction_id`, `exposure_type`, `exposure_rule_id`, `subdivision`, and `currency`.

```json theme={null}
{
  "data": {
    "corporation_id": "74df772f-9260-42cf-9c20-3b613b60fecd",
    "jurisdictions": [
      {
        "jurisdiction_id": "US_CA_1000",
        "jurisdiction_type": "STATE",
        "jurisdiction_name": "California",
        "exposure_type": "EXPOSURE_ECONOMIC",
        "exposure_rule_id": "US_CA_ECONOMIC_001",
        "subdivision": "CA",
        "currency": "USD",
        "rule": {
          "sales_threshold": 500000,
          "transactions_threshold": null,
          "threshold_type": "SALES_ONLY",
          "evaluation_period_type": "PREVIOUS_OR_CURRENT_CALENDAR_YEAR",
          "location_based_scope": "DESTINATION",
          "exclusion_types": ["TRANSACTION.MARKETPLACE"],
          "establishment_types": []
        },
        "calculation": {
          "included_sales": 150000,
          "included_transactions": 320,
          "gross_sales": 175000,
          "gross_transactions": 350,
          "sales_exposure_percentage": 0.30,
          "transactions_exposure_percentage": 0
        },
        "is_nexus_breached": false,
        "recommended_registration_content_ids": ["REG_STATE_CEN_06_1000"]
      },
      {
        "jurisdiction_id": "TRADEBLOC_EU_3000",
        "jurisdiction_type": "TRADEBLOC",
        "jurisdiction_name": "EU Union OSS",
        "exposure_type": "EXPOSURE",
        "exposure_rule_id": "EU_UNION_OSS_001",
        "subdivision": "",
        "currency": "EUR",
        "rule": {
          "sales_threshold": 10000,
          "transactions_threshold": null,
          "threshold_type": "SALES_ONLY",
          "evaluation_period_type": "PREVIOUS_OR_CURRENT_CALENDAR_YEAR",
          "location_based_scope": "INTRA_COMMUNITY",
          "exclusion_types": ["CUSTOMER.B2B"],
          "establishment_types": [],
          "max_transaction_value": 150
        },
        "calculation": {
          "included_sales": 12000,
          "included_transactions": 45,
          "gross_sales": 14000,
          "gross_transactions": 50,
          "sales_exposure_percentage": 1.20,
          "transactions_exposure_percentage": 0
        },
        "is_nexus_breached": true,
        "date_of_breach": "2026-03-15",
        "recommended_registration_content_ids": ["REG_TRADEBLOC_EU_3000_UOSS"]
      }
    ]
  },
  "message": "Successfully fetched nexus."
}
```

#### Recommended registration

Each jurisdiction in the v2 response includes a `recommended_registration_content_ids` field: an array of content IDs that link directly to the [V2 Registration API](/engine/indirect-tax/registrations/v2/registrations-v2). When a threshold is breached (or approaching breach), use these IDs to discover the appropriate registration options via the [Available Registrations](/engine/indirect-tax/registrations/v2/content/available-registrations-POST) endpoint.

#### Key differences from the default response

| Field                       | Default                                   | V2 (`v2=true`)                                           |
| --------------------------- | ----------------------------------------- | -------------------------------------------------------- |
| Top-level array             | `states`                                  | `jurisdictions`                                          |
| Jurisdiction identifier     | `state` (US state code)                   | `jurisdiction_id`, `subdivision`                         |
| Currency                    | Implicitly USD                            | Explicit `currency` field                                |
| Exposure rule metadata      | Not included                              | `exposure_type`, `exposure_rule_id`, `jurisdiction_type` |
| Calculation fields          | `total_sales`, `total_transactions`, etc. | `included_sales`, `included_transactions`, etc.          |
| Registration recommendation | Not included                              | `recommended_registration_content_ids`                   |
| Supported jurisdictions     | US states only                            | US, Canada, UK, EU (country-level and tradebloc)         |
