How it works
A tax filing is an entitlement, not a workflow. You buy a right to file, draft the filing, fill it in, and submit it. Submitting spends one right. Drafting is free, so an abandoned draft never costs a right.federal_tax_filingis the annual federal return. It needs the company’s EIN on file.state_compliance_filingis the state’s annual report or franchise tax, available for Delaware and Wyoming today. On the company it shows as thestate_tax_filingentitlement.
Knowing when a filing is due
You do not track deadlines yourself.GET /companies/{id}/calendar lists a company’s upcoming compliance items, annual report and tax deadlines included, soonest first, each with a due_at:
calendar.reminder webhook fires ahead of every one, so you are told when a filing is coming up rather than polling for it. Relay that reminder to your customer under your own brand, then start the filing below.
The flow
1. Buy the right
A filing right is ordered like any product. One order grants one right for the period:2. Create the draft
txf_ filing in draft with two things to work against:
formthe sections to fill in.missingwhat is still required, andsubmittablewhich istrueonce nothing is missing.
"form": {...} and "submit": true to draft, fill, and submit in a single call.
3. Fill the sections
Send a section to replace it whole. Sections you leave out keep their stored value, so you can fill in several passes:corp_info, contact, additional_questions, owners, revenue_expenses (federal), balance_sheet (state), officers, and directors. fixed_assets is read-only on a filing - it is drawn from the company’s register, so manage it with the fixed-assets API (/companies/{id}/fixed-assets), not here. Read the current state, missing, and submittable any time with GET /tax-filings/{id}.
4. Submit
in_review. It is refused when:
- No right is available. You get
entitlement_required(403). Buy one first. - Readiness is not met. The response names what is still
missing.
Track it
GET /companies/{id}/tax-filingslists a company’s filings and their status:draft,in_review,accepted,rejected.- Webhooks:
tax_filing.createdfires once per filing,tax_filing.status.changedon every move. Clemta reviews the submission and files the return, and you follow each state change on the webhook.