SIGNALS Documentation
API Reference

Tax Classes

REST endpoints for product tax classes, organisation tax classes, tax rates, and tax rules.

The tax API exposes the four reference-data resources that drive Signals' tax calculation engine: product tax classes, organisation tax classes, tax rates, and tax rules. Together they let an integrator read and manage the classifications and rate matrix that TaxCalculator uses to resolve the tax due on a line item.

Authentication

All four resources require a Sanctum bearer token with the tax-classes:read ability for GET requests and the tax-classes:write ability for POST, PUT, and DELETE requests.

Endpoints

Method URL Description
GET /api/v1/product_tax_classes List product tax classes
GET /api/v1/product_tax_classes/{id} Show a product tax class
POST /api/v1/product_tax_classes Create a product tax class
PUT /api/v1/product_tax_classes/{id} Update a product tax class
DELETE /api/v1/product_tax_classes/{id} Delete a product tax class
GET /api/v1/organisation_tax_classes List organisation tax classes
GET /api/v1/organisation_tax_classes/{id} Show an organisation tax class
POST /api/v1/organisation_tax_classes Create an organisation tax class
PUT /api/v1/organisation_tax_classes/{id} Update an organisation tax class
DELETE /api/v1/organisation_tax_classes/{id} Delete an organisation tax class
GET /api/v1/tax_rates List tax rates
GET /api/v1/tax_rates/{id} Show a tax rate
POST /api/v1/tax_rates Create a tax rate
PUT /api/v1/tax_rates/{id} Update a tax rate
DELETE /api/v1/tax_rates/{id} Delete a tax rate
GET /api/v1/tax_rules List tax rules
GET /api/v1/tax_rules/{id} Show a tax rule
POST /api/v1/tax_rules Create a tax rule
PUT /api/v1/tax_rules/{id} Update a tax rule
DELETE /api/v1/tax_rules/{id} Delete a tax rule

Note: See the Tax Classes platform page for how these resources combine to calculate tax.

Product Tax Classes

Product tax classes categorise items by their tax treatment (e.g. "Standard", "Reduced", "Zero Rated", "Exempt").

Fields

Field Type Description
id integer Identifier
name string Class name
description string|null Optional description
is_default boolean Whether this is the default applied to new products
created_at string ISO 8601 UTC timestamp
updated_at string ISO 8601 UTC timestamp

Filters

Parameter Description
q[name_eq]=Standard Exact name match
q[is_default_eq]=true Default class only

Sortable fields: name, created_at.

Response

{
    "product_tax_classes": [
        {
            "id": 1,
            "name": "Standard",
            "description": "Standard-rated goods",
            "is_default": true,
            "created_at": "2026-01-15T14:30:00Z",
            "updated_at": "2026-01-15T14:30:00Z"
        }
    ],
    "meta": {
        "total": 2,
        "per_page": 20,
        "page": 1
    }
}

Organisation Tax Classes

Organisation tax classes categorise members by their tax status (e.g. "Standard", "Tax Exempt", "Reverse Charge", "Charity"). They share the same field shape as product tax classes.

Filters

Parameter Description
q[name_eq]=Standard Exact name match
q[is_default_eq]=true Default class only

Sortable fields: name, created_at.

Response

{
    "organisation_tax_class": {
        "id": 1,
        "name": "Standard",
        "description": null,
        "is_default": true,
        "created_at": "2026-01-15T14:30:00Z",
        "updated_at": "2026-01-15T14:30:00Z"
    }
}

Tax Rates

A tax rate is a named percentage (e.g. "UK Standard" at 20%). Rates are referenced by tax rules.

Fields

Field Type Description
id integer Identifier
name string Rate name
description string|null Optional description
rate string Percentage as a decimal string (e.g. "20.0000")
is_active boolean Whether the rate is available for use
created_at string ISO 8601 UTC timestamp
updated_at string ISO 8601 UTC timestamp

Filters

Parameter Description
q[name_eq]=UK Standard Exact name match
q[is_active_eq]=true Active rates only

Sortable fields: name, rate, created_at.

Response

{
    "tax_rate": {
        "id": 1,
        "name": "UK Standard",
        "description": "Standard VAT",
        "rate": "20.0000",
        "is_active": true,
        "created_at": "2026-01-15T14:30:00Z",
        "updated_at": "2026-01-15T14:30:00Z"
    }
}

Tax Rules

A tax rule maps a combination of organisation tax class, product tax class, and tax rate, with a priority used to break ties when more than one rule matches. TaxCalculator resolves the highest-priority active rule for the relevant class pair.

Fields

Field Type Description
id integer Identifier
organisation_tax_class_id integer Organisation tax class this rule applies to
product_tax_class_id integer Product tax class this rule applies to
tax_rate_id integer Tax rate applied when the rule matches
priority integer Resolution priority (higher wins)
is_active boolean Whether the rule participates in resolution
created_at string ISO 8601 UTC timestamp
updated_at string ISO 8601 UTC timestamp

Filters

Parameter Description
q[organisation_tax_class_id_eq]=1 Filter by organisation tax class
q[product_tax_class_id_eq]=2 Filter by product tax class
q[tax_rate_id_eq]=1 Filter by tax rate
q[is_active_eq]=true Active rules only

Sortable fields: priority, created_at.

Create Request Body

{
    "organisation_tax_class_id": 1,
    "product_tax_class_id": 2,
    "tax_rate_id": 1,
    "priority": 100,
    "is_active": true
}

Response

{
    "tax_rule": {
        "id": 1,
        "organisation_tax_class_id": 1,
        "product_tax_class_id": 2,
        "tax_rate_id": 1,
        "priority": 100,
        "is_active": true,
        "created_at": "2026-01-15T14:30:00Z",
        "updated_at": "2026-01-15T14:30:00Z"
    }
}