Skip to content

Get a filing package

The filing_periods.package operation: GET /api/v1/filing_periods/{id}/package in the REST API and the filing_periods_package tool in the MCP server.

GET/api/v1/filing_periods/{id}/package

Returns the filing package of a prepared period (spec §41.5): everything needed to file the return in the authority's portal and pay it:

  • reportFiles: the report's CSV and XLSX (read the CSV with filing_periods.report; over MCP as the resource ownrecord://entities/{entity_id}/filing-periods/{id}/report.csv);
  • summary: taxable amounts and tax per country and rate, corrections by original period, balances;
  • payment: the amount in the filing currency, the due date and what the tax knowledge says about the authority's account and reference (null where it doesn't know yet, never guessed);
  • reconciliation: the report's tax against the ledger's tax payable for the period.

Available once the period is prepared (filing_periods.lock, then filing_periods.prepare), until and after it is filed. The steps to file are in the regime's playbook.

At a glance

  • REST: GET /api/v1/filing_periods/{id}/package
  • MCP tool: filing_periods_package
  • Operation ID: filing_periods.package
  • Scope: Legal entity
  • Permission: filings:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Authentication: API key with the filings:read scope
  • Since: M10

Request

Path parameters

FieldTypeDescription
idfp_… IDThe filing period (fp_…).

Query parameters

This operation takes no query parameters.

Response

200 OK with a JSON object:

FieldTypeDescription
object"filing_package"
filingPeriodIdfp_… ID
regimeIdstring
periodKeystring
firstDaystring
lastDaystring
dueDatestring
dueAtdate-time
statusstring
reportKindstring
reportFilesarray of object
reportFiles[].formatstring
reportFiles[].fileIdfile_… ID
reportFiles[].filenamestring
reportFiles[].contentTypestring
reportFiles[].sizeinteger (at least 0)
reportFiles[].sha256string
summaryobject
summary.currencystring
summary.rowsarray of object
summary.rows[].countrystring
summary.rows[].rateinteger or null
summary.rows[].taxableinteger string
summary.rows[].taxinteger string
summary.rows[].linesinteger (at least 0)
summary.correctionsarray of object
summary.corrections[].countrystring
summary.corrections[].rateinteger or null
summary.corrections[].taxableinteger string
summary.corrections[].taxinteger string
summary.corrections[].linesinteger (at least 0)
summary.corrections[].originalPeriodstring
summary.balancesarray of object
summary.balances[].countrystring
summary.balances[].suppliesinteger string
summary.balances[].correctionsinteger string
summary.balances[].balanceinteger string
summary.totalsobject
summary.totals.taxableinteger string
summary.totals.taxinteger string
summary.totals.correctionsinteger string
summary.totals.dueinteger string
summary.totals.refundableinteger string
summary.reportTotalsobject
summary.reportTotals.taxableinteger string
summary.reportTotals.taxinteger string
summary.reportTotals.correctionsinteger string
summary.reportTotals.dueinteger string
summary.reportTotals.refundableinteger string
summary.consistentboolean
paymentobject
payment.amountobject
payment.amount.amountinteger string
payment.amount.currencystring
payment.amount.decimalstring
payment.refundableobject
payment.refundable.amountinteger string
payment.refundable.currencystring
payment.refundable.decimalstring
payment.dueDatestring
payment.dueAtdate-time
payment.methodstring or null
payment.accountDetailsstring or null
payment.referenceFormatstring or null
payment.referencestring or null
payment.notesarray of string
reconciliationobject
reconciliation.matchesboolean
reconciliation.rowsarray of object
reconciliation.rows[].jurisdictionIdstring
reconciliation.rows[].currencystring
reconciliation.rows[].reportTaxinteger string
reconciliation.rows[].ledgerTaxinteger string
reconciliation.rows[].differenceinteger string
reconciliation.differencesarray of object
reconciliation.differences[].jurisdictionIdstring
reconciliation.differences[].currencystring
reconciliation.differences[].documentIdstring
reconciliation.differences[].documentNumberstring or null
reconciliation.differences[].reportTaxinteger string
reconciliation.differences[].ledgerTaxinteger string
reconciliation.differences[].differenceinteger string
fxarray of object
fx[].periodKeystring
fx[].forDatestring
fx[].datestring
fx[].sourcestring
fx[].ratesobject
generatedAtdate-time

Examples

The package of the Q3 OSS return

HTTP
GET /api/v1/filing_periods/fp_01m4ttwd3veh9apbewxheq5xa7/package
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "filing_package",
  "filingPeriodId": "fp_01m4ttwd3veh9apbewxheq5xa7",
  "regimeId": "EU_OSS_UNION",
  "periodKey": "2026-Q3",
  "firstDay": "2026-07-01",
  "lastDay": "2026-09-30",
  "dueDate": "2026-10-31",
  "dueAt": "2026-10-31T22:59:59.000Z",
  "status": "prepared",
  "reportKind": "eu_oss",
  "reportFiles": [
    {
      "format": "csv",
      "fileId": "file_01m4ttwd3veh9apbewxheq5xa5",
      "filename": "EU_OSS_UNION-2026-Q3.csv",
      "contentType": "text/csv; charset=utf-8",
      "size": 1824,
      "sha256": "9b2c7e1d0a5f4e3c2b1a0f9e8d7c6b5a4f3e2d1c0b9a8f7e6d5c4b3a2f1e0d9c"
    }
  ],
  "summary": {
    "currency": "EUR",
    "rows": [
      {
        "country": "DE",
        "rate": 190000,
        "taxable": "100000000",
        "tax": "19000000",
        "lines": 1
      },
      {
        "country": "FR",
        "rate": 200000,
        "taxable": "100000000",
        "tax": "20000000",
        "lines": 1
      }
    ],
    "corrections": [],
    "balances": [
      {
        "country": "DE",
        "supplies": "19000000",
        "corrections": "0",
        "balance": "19000000"
      },
      {
        "country": "FR",
        "supplies": "20000000",
        "corrections": "0",
        "balance": "20000000"
      }
    ],
    "totals": {
      "taxable": "200000000",
      "tax": "39000000",
      "corrections": "0",
      "due": "39000000",
      "refundable": "0"
    },
    "reportTotals": {
      "taxable": "200000000",
      "tax": "39000000",
      "corrections": "0",
      "due": "39000000",
      "refundable": "0"
    },
    "consistent": true
  },
  "payment": {
    "amount": {
      "amount": "39000000",
      "currency": "EUR",
      "decimal": "39.00"
    },
    "refundable": {
      "amount": "0",
      "currency": "EUR",
      "decimal": "0.00"
    },
    "dueDate": "2026-10-31",
    "dueAt": "2026-10-31T22:59:59.000Z",
    "method": null,
    "accountDetails": null,
    "referenceFormat": null,
    "reference": null,
    "notes": [
      "Pay 39.00 EUR by 2026-10-31.",
      "Ownrecord's tax knowledge has no payment details for this return yet: use the authority's own payment instructions (see the playbook). Never pay to an account you can't verify with the authority.",
      "Quote the reference the authority gives when the return is filed."
    ]
  },
  "reconciliation": {
    "matches": true,
    "rows": [
      {
        "jurisdictionId": "DE",
        "currency": "EUR",
        "reportTax": "19000000",
        "ledgerTax": "19000000",
        "difference": "0"
      },
      {
        "jurisdictionId": "FR",
        "currency": "EUR",
        "reportTax": "20000000",
        "ledgerTax": "20000000",
        "difference": "0"
      }
    ],
    "differences": []
  },
  "fx": [],
  "generatedAt": "2026-10-03T09:00:00.000Z"
}

Errors

CodeHTTP statusWhenWhat to do
validation_failed400A field is malformed (param names it).Fix the fields listed in details.issues and send the request again.
resource_not_found404No filing period with this ID exists for this legal entity and mode.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
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).
filing_report_not_ready409The period has no report yet: lock and prepare it first (details.status).Prepare the period first (filing_periods.prepare), then download its report.
permission_denied403You can't see this entity's filings.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, dry_run_not_supported, rate_limited, internal_error.