Texas Sales Tax Allocations

We have monthly sales tax allocation data for every city, county, and special district. Many of them have detailed allocation data back to ~2014 and monthly allocation back to the early '90s.

The allocation model

The allocation model represents a monthly sales tax allocation made by the Texas Comptroller to a local taxing authority. At a minimum, it contains the net payment allocated to the local jurisdiction. More recent data includes all payment components, such as audit adjustments and single local tax rate collections.

  • Name
    dates.allocation_period
    Type
    date
    Description

    The month in which this allocation was released to the locality

  • Name
    dates.sales_period
    Type
    date
    Description

    The month in which current period sales were made (should always be two months prior to `dates.allocation_period`)

  • Name
    dates.formatted
    Type
    string
    Description

    A human readable version of the value in `dates.allocation_period`

  • Name
    jurisdiction
    Type
    Jurisdiction
    Description

    A Jurisdiction model representing the taxing entity

  • Name
    net_payment
    Type
    decimal
    Description

    The net payment made to the taxing entity

  • Name
    prior_collections
    Type
    decimal
    Description

    The total collections representing payments for months prior to the value of `dates.sales_period`

  • Name
    current_collections
    Type
    decimal
    Description

    The total collections representing payments for the value of `dates.sales_period`

  • Name
    future_collections
    Type
    decimal
    Description

    The total collections representing payments after the value of `dates.sales_period`

  • Name
    audit_collections
    Type
    decimal
    Description

    The total value of audit adjustments included in this allocation

  • Name
    single_local_rate_collections
    Type
    decimal
    Description

    The total value of tax allocations under the Single Local Tax Rate rule

  • Name
    unidentified_collections
    Type
    decimal
    Description

    The total value of tax payments allocated as unidentified

  • Name
    total_collections
    Type
    decimal
    Description

    The sum of all collection types

  • Name
    service_fee
    Type
    decimal
    Description

    The value of the Comptroller's 2% service charge

  • Name
    current_retained
    Type
    decimal
    Description

    The amount of current taxes held back as retainage

  • Name
    prior_retained
    Type
    decimal
    Description

    The amount of taxes held as retainage in the prior month which are being released to the jurisdiction

  • Name
    deltas
    Type
    object
    Description

    Year-over-year changes for each numeric field above

  • Name
    trends
    Type
    object
    Description

    Rolling trend analysis for each numeric field above

  • Name
    ytd
    Type
    object
    Description

    Year-to-date totals for each numeric field above

  • Name
    population
    Type
    object
    Description

    The Census population estimate for the year of `dates.sales_period`. Only present when you send `include=population`. See the Population section below

Population

Send include=population to add a Census population estimate to each allocation. Use it to calculate sales tax per capita. Both /api/tx/sales-tax/allocations and /api/tx/sales-tax/allocations/{year}/{month} accept this parameter.

The data comes from the Census Bureau Population Estimates Program and starts in 2000.

Which estimate you get

Each allocation gets the population for the year in which the sales were made. That year comes from dates.sales_period, not from dates.allocation_period. A Texas allocation pays out the sales from two months earlier. So the allocation for February 2024 uses the population for 2023.

The Census Bureau publishes a new set of estimates each year, called a vintage. Each vintage revises the estimates for earlier years. For each year, we keep only the estimate from the newest vintage that covers that year. That is the best current estimate of the population in the year of the sale. For example, vintages 2023 and 2025 both estimate the population in 2022. Sales from 2022 use the vintage 2025 figure.

Sales year Estimate year Source Vintage
2000 to 2009 Same as the sales year pep_intercensal 2010
2010 to 2019 Same as the sales year pep_postcensal 2020
2020 to 2025 Same as the sales year pep_postcensal 2025
After 2025 2025, with is_carried_forward set to true pep_postcensal 2025

When the Census Bureau publishes a new vintage, we replace the estimates for the years that it covers. The vintage value of those years changes.

Carried forward and null values

If the sales year is after the newest Census estimate, the response uses that estimate and sets is_carried_forward to true. An estimate is carried forward only if it comes from the newest vintage.

The value is null in these cases:

  • Special districts and transit authorities
  • Sales years before 2000
  • A city that is not in the newest vintage, for sales years after its last estimate
  • Name
    population.value
    Type
    integer
    Description

    The estimated population on July 1 of `population.year`

  • Name
    population.year
    Type
    integer
    Description

    The year of the estimate

  • Name
    population.source
    Type
    string
    Description

    `pep_postcensal` (the 2010 and later estimates) or `pep_intercensal` (the 2000 to 2009 estimates)

  • Name
    population.vintage
    Type
    integer
    Description

    The Census vintage of the estimate, for example `2025`

  • Name
    population.is_carried_forward
    Type
    boolean
    Description

    `true` when the sales period is after the newest Census estimate, so that estimate is used


GET /api/tx/sales-tax/allocations

List all allocations

This endpoint allows you to retrieve a paginated list of all allocations in the database. By default, a maximum of 25 allocations are shown per page.

Optional parameters

  • Name
    jurisdictions
    Type
    string
    Description

    A comma-separated list of jurisdiction IDs for filtering allocations

  • Name
    month
    Type
    date
    Description

    Filter to a specific allocation period. Format: YYYY-MM-DD

  • Name
    between
    Type
    string
    Description

    A comma-separated set of dates for filtering allocations. Format: YYYY-MM-DD,YYYY-MM-DD

  • Name
    since
    Type
    date
    Description

    Filter for allocations after a certain date (inclusive). Format: YYYY-MM-DD

  • Name
    sort
    Type
    string
    Description

    Sort the results by a given field. Prefix with `-` for descending order. Allowed fields: `month`, `net_payment`, `total_collections`, `current_collections`, `prior_collections`, `future_collections`, `audit_collections`. You can also sort by nested relation fields using dot notation: `deltas.{field}`, `trends.{field}`, `ytd.{field}` (e.g. `-deltas.net_payment`)

  • Name
    include
    Type
    string
    Description

    Add optional data to each allocation. Allowed value: `population`

  • Name
    limit
    Type
    integer
    Description

    Limit the number of allocations returned. Default: 25

Request

GET
/api/tx/sales-tax/allocations
curl -G https://open.zactax.com/api/tx/sales-tax/allocations \
    -H "Authorization: Bearer {token}" \
    -d jurisdictions=624 \
    -d sort=-month \
    -d include=population \
    -d limit=1
GET
/api/tx/sales-tax/allocations
const response = await fetch('https://open.zactax.com/api/tx/sales-tax/allocations?jurisdictions=624&sort=-month&include=population&limit=1', {
    headers: {
        'Authorization': 'Bearer {token}'
    }
});
const data = await response.json();

Response

{
    "data": [
        {
            "dates": {
                "allocation_period": "2024-02-01",
                "sales_period": "2023-12-01",
                "formatted": "February 2024"
            },
            "jurisdiction": {
                "id": 624,
                "name": "Hudson Oaks, Texas",
                "slug": "hudson-oaks-texas",
                "state": "tx",
                "type": "city",
                "sales_tax_rate": 0.02,
                "sales_tax_id": "2184071"
            },
            "net_payment": 411453.23,
            "prior_collections": 0,
            "current_collections": 418057.03,
            "future_collections": 6.5,
            "audit_collections": -2334.68,
            "single_local_rate_collections": 4297.95,
            "unidentified_collections": 48.67,
            "total_collections": 420075.47,
            "service_fee": 8404.27,
            "current_retained": 8236.18,
            "prior_retained": 7880.39,
            "deltas": {
                "net_payment": 0.0534,
                "current_collections": 0.0612
            },
            "trends": {
                "net_payment": 398234.12,
                "current_collections": 405123.45
            },
            "ytd": {
                "net_payment": 823906.46,
                "current_collections": 836114.06
            },
            "population": {
                "value": 3204,
                "year": 2023,
                "source": "pep_postcensal",
                "vintage": 2025,
                "is_carried_forward": false
            }
        }
    ],
    "links": {
        "first": "...",
        "last": "...",
        "prev": null,
        "next": "..."
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 100,
        "per_page": 25,
        "to": 1,
        "total": 1
    }
}