Skip to content

List filing periods

The filing_periods.list operation: GET /api/v1/filing_periods in the REST API and the filing_periods_list tool in the MCP server.

GET/api/v1/filing_periods

Lists the legal entity's filing periods in the mode of the request, newest first. Ownrecord creates a period for every regime the entity is registered in (or in a grace period for), from the regime's filing rules: its frequency and due date (spec §21.1). A period covers every brand of the entity. Filter by regimeId (EU_OSS_UNION for the Union OSS return) or status to find the period to prepare, lock or package: those operations take its ID.

Each period has its periodKey (2026-Q3, 2026-07 or 2026), its first and last day in the entity's time zone, the dueDate and dueAt (23:59:59 local time), its status (open, locked, prepared, submitted, paid) and, once prepared, the report's totals in the filing currency.

Paginate with limit (1–100, default 10) and starting_after.

At a glance

  • REST: GET /api/v1/filing_periods
  • MCP tool: filing_periods_list
  • Operation ID: filing_periods.list
  • Scope: Legal entity
  • Permission: filings:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Pagination: limit (at most 100) and starting_after
  • Authentication: API key with the filings:read scope
  • Since: M8

Request

Query parameters

FieldTypeRequiredDescription
regimeIdstringNoOnly this regime's periods, e.g. EU_OSS_UNION.
statusone of open, locked, prepared, submitted, paid or array of one of open, locked, prepared, submitted, paidNoOnly periods in this status (or these statuses).
limitinteger (1 to 100)NoPage size, 1 to 100 (default 10).
starting_afterfp_… IDNoThe next_cursor of the previous page.

Response

200 OK with a JSON object, a page of the list (newest first):

FieldTypeDescription
object"list"
dataarray of object
data[].idfp_… ID
data[].object"filing_period"
data[].entityIdent_… ID
data[].livemodeboolean
data[].regimeIdstring
data[].registrationIdregn_… ID
data[].reportKindone of eu_oss, eu_domestic, uk_vat, ch_mwst, generic, us_state
data[].reportAvailableboolean
data[].frequencyone of monthly, quarterly, annual
data[].periodKeystringThe period: "2026-Q3", "2026-07" or "2026".
data[].periodStartdate-time
data[].periodEnddate-timeThe end (exclusive): the next period's first local midnight.
data[].firstDaystring
data[].lastDaystring
data[].timeZonestring
data[].currencystring
data[].dueDatestring
data[].dueAtdate-time23:59:59 local time on the due date.
data[].lockableAtdate-time
data[].statusone of open, locked, prepared, submitted, paid
data[].statusChangedAtdate-time
data[].lockedAtdate-time or null
data[].preparedAtdate-time or null
data[].submittedAtdate-time or null
data[].referencestring or null
data[].paidAtdate-time or null
data[].paymentRefstring or null
data[].totalsobject or null
data[].createdAtdate-time
data[].updatedAtdate-time
has_moreboolean
next_cursorfp_… ID or null

Examples

The OSS returns still to file

HTTP
GET /api/v1/filing_periods?regimeId=EU_OSS_UNION&status=open&status=locked&status=prepared&limit=10
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "id": "fp_01m4tx5nj8emwbyf7y9vcf47y1",
      "object": "filing_period",
      "entityId": "ent_01m4tx5nj8emwbyf7y9vcf47x2",
      "livemode": true,
      "regimeId": "EU_OSS_UNION",
      "registrationId": "regn_01m4tx5nj8emwbyf7y9vcf47xk",
      "reportKind": "eu_oss",
      "reportAvailable": true,
      "frequency": "quarterly",
      "periodKey": "2026-Q4",
      "periodStart": "2026-09-30T22:00:00.000Z",
      "periodEnd": "2026-12-31T23:00:00.000Z",
      "firstDay": "2026-10-01",
      "lastDay": "2026-12-31",
      "timeZone": "Europe/Zagreb",
      "currency": "EUR",
      "dueDate": "2027-01-31",
      "dueAt": "2027-01-31T22:59:59.000Z",
      "lockableAt": "2026-12-31T23:00:00.000Z",
      "status": "open",
      "statusChangedAt": "2026-10-01T03:00:00.000Z",
      "lockedAt": null,
      "preparedAt": null,
      "submittedAt": null,
      "reference": null,
      "paidAt": null,
      "paymentRef": null,
      "totals": null,
      "createdAt": "2026-10-01T03:00:00.000Z",
      "updatedAt": "2026-10-01T03:00:00.000Z"
    },
    {
      "id": "fp_01m4tx5nj8emwbyf7y9vcf47y0",
      "object": "filing_period",
      "entityId": "ent_01m4tx5nj8emwbyf7y9vcf47x2",
      "livemode": true,
      "regimeId": "EU_OSS_UNION",
      "registrationId": "regn_01m4tx5nj8emwbyf7y9vcf47xk",
      "reportKind": "eu_oss",
      "reportAvailable": true,
      "frequency": "quarterly",
      "periodKey": "2026-Q3",
      "periodStart": "2026-06-30T22:00:00.000Z",
      "periodEnd": "2026-09-30T22:00:00.000Z",
      "firstDay": "2026-07-01",
      "lastDay": "2026-09-30",
      "timeZone": "Europe/Zagreb",
      "currency": "EUR",
      "dueDate": "2026-10-31",
      "dueAt": "2026-10-31T22:59:59.000Z",
      "lockableAt": "2026-09-30T22:00:00.000Z",
      "status": "prepared",
      "statusChangedAt": "2026-10-02T08:05:00.000Z",
      "lockedAt": "2026-10-02T08:00:00.000Z",
      "preparedAt": "2026-10-02T08:05:00.000Z",
      "submittedAt": null,
      "reference": null,
      "paidAt": null,
      "paymentRef": null,
      "totals": {
        "currency": "EUR",
        "taxable": "1500000000",
        "tax": "290000000",
        "corrections": "-19000000",
        "due": "271000000",
        "refundable": "0"
      },
      "createdAt": "2026-07-01T03:00:00.000Z",
      "updatedAt": "2026-10-02T08:05:00.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Errors

CodeHTTP statusWhenWhat to do
validation_failed400A filter or the page size is malformed (details.issues).Fix the fields listed in details.issues and send the request again.
scope_required400The request names no legal entity (an org key without Ownrecord-Entity).Call the operation with credentials or a target at its level: an organization, a legal entity, a brand or the platform (details.required_scope).
permission_denied403You can't see this entity's filings (brand-scoped members never can).Ask an organization owner or admin for a role or scope that allows this action.

It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, resource_not_found, dry_run_not_supported, rate_limited, internal_error.