Overview
The Filings API lets you preview upcoming tax filings, generate them for a jurisdiction, and manage their lifecycle. Filings represent individual tax returns that your business must submit to a tax authority for a specific period. Each filing includes:- Tax period — the date range the filing covers
- Reporting period — the date range used for reporting (may differ from the tax period)
- Due date — when the return must be filed
- Frequency — how often filings occur (monthly, quarterly, annually, etc.)
- Status — the current state of the filing (
SCHEDULED,UPCOMING,OVERDUE,FILED, etc.)
V2 filings
V2 filings work with V2 registrations and useregistration_tax_type_id to identify the jurisdiction and tax type. This replaces the V1 approach of identifying filings by country and state code.
V2 filings support:
- International jurisdictions — EU member states, UK, Canada, and trade bloc schemes (Union OSS, Non-Union OSS, IOSS)
- Composite frequencies — registrations with multiple filing obligations (e.g., quarterly returns plus annual reconciliation)
- Content-driven calendars — filing dates and periods are determined by a centralized filing calendar
To use V2 filings, you must first create a V2 registration for the jurisdiction. The
registration_tax_type_id from that registration is used to identify filings.Filing workflow
1
Preview filings
Use the preview endpoint to see what filings would be generated for a registration and time period. This is a read-only operation — no filings are created.
2
Generate filings
Use the bulk create endpoint to generate the filings. The system creates filing records based on the filing calendar content for your registration.
3
Track and manage
Use the list endpoint to view filings and their statuses. Update filings with tax amounts, confirmation numbers, and status changes as you prepare and submit returns.
4
Delete if needed
Use the bulk delete endpoint to remove filings that are no longer needed. Filed returns cannot be deleted.
Filing response fields
V2 filings include additional fields compared to V1:Filing contributions
For EU and UK filings, Commenda automatically computes the values for each box on the tax return form. These computed values are called filing contributions. Contributions are generated during the automated tax breakdown processing cycle for any filing that has content-defined box rules (identified by afiling_content_id). The engine:
- Validates that invoices attached to the filing have the required data (such as ship-from addresses)
- Aggregates invoice data into buckets grouped by geographic origin/destination, transaction type, tax rate, product type, customer type, and remitter type
- Evaluates AGGREGATE box rules by matching content-defined filters against invoice buckets and summing the appropriate monetary field (taxable amount, tax amount, or gross amount)
- Evaluates FORMULA box rules in sequence, referencing previously computed box values with simple arithmetic
Supported filing types
Country-level filing contributions are supported for 23 EU member states: Austria, Belgium, Bulgaria, Croatia, Cyprus, Czech Republic, Denmark, Finland, France, Germany, Greece, Hungary, Italy, Latvia, Lithuania, Luxembourg, Malta, Poland, Portugal, Romania, Slovakia, Slovenia, and Spain.
Each country includes box rules covering domestic sales at all applicable rate tiers (standard, reduced, super-reduced, and extra-reduced where applicable), domestic purchases, intra-community sales and acquisitions, zero-rated domestic sales, imports, exports, and a formula-based total output VAT box. Sales and returns are automatically netted within each box.
For country-level filings, box values are computed once using the filing jurisdiction’s rates. For trade-bloc filings (OSS/IOSS), the engine iterates over each destination member state, resolving that state’s rates and producing per-jurisdiction contributions.
Retrieving contributions
Use theGET /filings/{id}/contributions endpoint to retrieve computed contributions for a single filing, or the POST /filings/contributions batched endpoint to fetch contributions for up to 100 filings in one request. Each contribution includes:
Invoice validation
During contribution processing, Commenda validates that each invoice has the data required for accurate box computation. Invoices that fail validation are stamped with a per-invoice error code ontax_breakdown_processing_error_code and excluded from contribution calculations until the underlying issue is resolved and the next processing cycle runs.
Contributions are idempotent — each processing run replaces all previous contribution values for the filing. This means contributions always reflect the current state of your transaction data.
Reporting currency and FX conversion
EU and UK V2 filings declare areporting_currency on their content filing calendar entry (for example, EUR for German country-level returns, GBP for UK returns). When invoices attached to a filing span multiple currencies, the contribution engine converts each invoice’s taxable, tax, and gross amounts from invoice_currency into the filing’s reporting currency at aggregation time.
Conversion uses the invoice’s transacted_at date to look up the cross-rate. Same-currency invoices short-circuit to a rate of 1.0 — single-currency filings produce values byte-identical to filings computed before FX support was introduced.
Exact-date matching
The engine requires an FX rate published for the exacttransacted_at date. There is no fallback to the nearest prior date. Filings are authoritative documents, so any gap in the FX rate table for a date that an invoice transacted on must be backfilled before that invoice can be included in a return.
When any invoice on a filing cannot be converted, contribution processing fails the entire job:
- The filing’s contribution sync job is marked
FAILEDwith reasonFX_RATE_UNAVAILABLE: N invoice(s) could not be converted to <CURRENCY>. - The job’s
failure_countreflects the number of flagged invoices andsuccess_countreflects the unaffected remainder. - Each flagged invoice is stamped with
TRANSACTION.CURRENCY.FX_RATE_UNAVAILABLEontax_breakdown_processing_error_codeso the UI can highlight which transactions need attention. - No contribution rows are written. Any previously-correct contributions on the filing are left intact until the FX gap is filled and the sync re-runs.
A filing without a
reporting_currency populated on its content filing calendar entry fails contribution sync with MISSING_FILING_CURRENCY. This is a content configuration gap and must be fixed at the calendar level.US and Canadian filings
US and Canadian filings are not affected by this conversion path. They use a separate calculation engine that bakes FX into invoice amounts at calc time, targeting USD or CAD respectively.Liability report
The liability report endpoints provide per-filing snapshots and bulk exports across multiple filings. The two read endpoints return distinct shapes — call them in parallel and merge byfiling_id when you need both filing-level totals and box-level VAT detail.
All three endpoints accept up to 100 filing IDs per request. The export endpoint also requires every filing in the request to belong to the same corporation. Track the export job with the jobs endpoint, filtering by
entity=FILING and operation=EXPORT_INDIRECT_TAX_FILINGS_LIABILITY_REPORT. For multi-filing exports, the worker creates one child job row per filing (with entity_id set to the filing UUID) so the per-filing detail page surfaces the export.
Managed filing
When you enablemanaged_filing_enabled on a V2 registration, Commenda handles the filing process for that jurisdiction on your behalf. You can toggle this setting when creating or updating a registration.